Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: watchmaker  
Дата: 02.01.21 18:43
Оценка: 24 (12) +6
Здравствуйте, Nuzhny, Вы писали:

N>Здравствуйте, Тёмчик, Вы писали:


Тё>>С++11 emplace_back

Тё>>
Тё>>std::vector<int> v;
Тё>>v.emplace_back(123);
Тё>>v.emplace_back(v[0]);
Тё>>

Тё>>Думаете, результат будет [123, 123]? Think again.

N>Слушай, а что будет? Я проверил на Ideone, всё норм.


С++ гарантирует, что будет вектор из двух элементов [123, 123]. Релевантная ссылка: http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-closed.html#526

Но это хороший тест, на котором ломаются многие самодельные аналоги std::vector.

В них относительно часто встречается наивная реализация вставки, устроенная примерно так:
1. Проверить size() < capacity(). Если выполнено перейти к пункту 3.
2. Позвать reserve(size() × 2)
3. Вызвать in-place конструктор для нового элемента по смещению size();
4. Сделать ++size;

где reserve работает так:
1. Выделяет новый буфер;
2. Переносит в него элементы из текущего буфера;
3. Разрушает элементы в старом буфере и освобождает память;



При аккуратном рассмотрении, видно, что если аргумент emplace_back (или push_back) ссылался на собственный элемент вектора и если при его вставке произошла реаллокация, то после пункта 2, элемент, который нужно было скопировать и вставить, окажется уже разрушенным. И вставлять станет нечего.
(и даже говорят, в некоторых древних версиях STL встречался этот баг)
Надёжный std::vector написать сложно :)


На самом деле в реализациях std::vector приходится учитывать множество подобных нюансов, которые не должны приводить к несогласованному состоянию когда подобный код напишут или когда во время переноса одного из элементов вылетит исключение.


ЗЫ. Если интересно, часто эту проблему решают так: при реаллокации сначала выделяют новый буфер, создают в нём сразу новый элемент, и лишь затем переносят в новый буфер старые элементы. То есть в emplace_back нельзя использовать reserve непосредственно, и нужно элементы обрабатывать в особом порядке (сначала новый, потом старые, а не наоборот), что при первом прочтении выглядит немного странным.
Отредактировано 04.01.2021 20:33 watchmaker . Предыдущая версия . Еще …
Отредактировано 04.01.2021 20:32 watchmaker . Предыдущая версия .
Отредактировано 02.01.2021 19:01 watchmaker . Предыдущая версия .
Отредактировано 02.01.2021 18:50 watchmaker . Предыдущая версия .
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: CreatorCray  
Дата: 03.01.21 06:09
Оценка: +11 -1 :))) :)))
Здравствуйте, Тёмчик, Вы писали:

Тё>Нечего по делу сказать- дрочи в сторонке.

Если бы ты сам хоть раз в жизни последовал этому совету...
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 02.01.21 16:32
Оценка: :))) :))) :))) :))
С++11 emplace_back
std::vector<int> v;
v.emplace_back(123);
v.emplace_back(v[0]);

Думаете, результат будет [123, 123]? Think again.

С++11 std::make_unique, std::make_unique_for_overwrite
Constructs an object of type T and wraps it in a std::unique_ptr.
The function is equivalent to:
unique_ptr<T>(new T(std::forward<Args>(args)...))


std::forward

Forwards lvalues as either lvalues or as rvalues, depending on T


ЭЭЭЭ что???!!

И все эти приседания из-за того, что такое вот приведёт к утечке памяти.
abc(std::unique_ptr<A>(new A()), std::unique_ptr<A>(new A()), some_other_function())


В до C++ 11-е времена было нормально написать так:
std::auto_ptr<A> a1 = std::auto_ptr<A>(new A());
std::auto_ptr<A> a2 = std::auto_ptr<A>(new A());
abc(a1.get(), a2.get(), some_other_function())


Но авторам новых фич показалось мало треша и угара, auto_ptr выпилен, ибо захотелось коллекций с умными указателями.

Only non-const unique_ptr can transfer the ownership of the managed object to another unique_ptr. If an object's lifetime is managed by a const std::unique_ptr, it is limited to the scope in which the pointer was created.

Т.е. если
auto a1 = std::unique_ptr<A>(new A());
auto a2 = std::unique_ptr<A>(new A());
abc(a1, a2, some_other_function())

a1.get() // null ptr


abc() может внутри написать
std::unique_ptr<A> myA1 = a1;

И этим разрушить объект в a1.




C++20 std::to_address

Obtain the address represented by p without forming a reference to the object pointed to by p.





Можно потратить всё время на обдумывание этих слоёв грабель, вместо оптимального решения задачи.
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: reversecode google
Дата: 02.01.21 17:07
Оценка: +8 :))
никогда больше не ходите на бокс
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: gardener  
Дата: 05.01.21 02:43
Оценка: +2 :))) :)))
Тё>>Думаете, результат будет [123, 123]? Think again.
LVV>В 2020 про С++11 пора уже забыть.

Не так. В 2020 про С++ пора уже забыть.
Re[6]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 05:35
Оценка: :))) :)))
Здравствуйте, Nuzhny, Вы писали:

N>Но это не упс — тебе говорят, что ты опцию -fcoroutines компилятору не добавил.

Я то тут причём? Это пример на официальной странице C++ не работает.

N>Это зависит от того, какой компилятор у тебя доступен. Только не говори, что во всех остальных языках такой проблемы нет и они ещё до выхода стандарта языка (или в момент выхода) могут на него пересесть. Нет такого.

TS/JS транспилируется в понятный IE11 старый JS. И таким образом, фичи новейшего TS/JS работают в старых браузерах.

Тё>>2) Предположим, начинается новый проект — мобильный клиент к существующему desctop-oriented приложению HTML5. Требования- жесты, скорость, красивый UI, mobile-friendly UI (т.е. переработанные под мелкий экран интерфейсы). Как аргументировать за разработку на чистом C++, в противовес разработке двух версий Kotlin и Swift?


N>А зачем тут С++? Я бы не брался.

Как зачем? Чтобы было на C++. От любви к искусству, вспомнить молодость, когда трава была зеленее.


N> Можно спросить у человека с опытом — Dair. Они на плюсах желают ядро с логикой, а весь Гуй и платформоориентированный код на Kotlin и Swift (или Java и Objective C). Что тут такого?

Так это не native C++ тогда. Издержки на JNI при каждом событии. Imho более разумно в этом случае делать на React.native, и какие-то куски вроде нейросеток например, расшивать на C++. Да тот же tensorflow.js прицепить, а он крутит ядро на GPU.
Вот пример нейросетка обрабатывает видеопоток в реалтайм https://storage.googleapis.com/tfjs-models/demos/facemesh/index.html. Imho круто- не важно, на чём писали, важен результат.
Re[7]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: watchmaker  
Дата: 03.01.21 08:54
Оценка: +5
Здравствуйте, Тёмчик, Вы писали:

Тё>Я то тут причём? Это пример на официальной странице C++ не работает.


cppreference.com что-ли официальный? Это wiki от энтузиастов (впрочем хорошая, особенно по сравнению с другим сайтами о С++):

Who is behind this site?
cppreference.com was created and is maintained by a group of C++ enthusiasts from around the world

What? This is a wiki? Can I change stuff?
Absolutely.

https://en.cppreference.com/w/Cppreference:FAQ


N>>Это зависит от того, какой компилятор у тебя доступен. Только не говори, что во всех остальных языках такой проблемы нет и они ещё до выхода стандарта языка (или в момент выхода) могут на него пересесть. Нет такого.

Тё>TS/JS транспилируется в понятный IE11 старый JS. И таким образом, фичи новейшего TS/JS работают в старых браузерах.

Так и компилятор С++ преобразует программу в машинные коды, которые будут работать на древнем железе.

А если возьмёшь современный TS и транспилятор условно десятилетней давности, то он точно так же не поймёт что в коде написано.

Проблема-то не в окружении исполнения, а в том что старые и древние компиляторы не понимают новые версии языков. И это во всех областях так.
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 06.01.21 05:04
Оценка: +3 :))
Здравствуйте, Философ, Вы писали:

Ф>Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.


Правильно ли я понимаю, что критерием для выбора ЯП надо сделать скорость сборки проекта с Гитхаба? Ты же на C# сейчас пишешь? Если не секкрет, то сколько времени ушло на сборку проекта с Гитхаба на нём?
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: lpd Черногория  
Дата: 03.01.21 07:16
Оценка: :))) :)
Здравствуйте, Максим, Вы писали:

Тё>>Можно потратить всё время на обдумывание этих слоёв грабель, вместо оптимального решения задачи.


М>Тёмчик, я тут сейчас читаю книгу по Ассемблеру, прошу тебя — не смотри на него! Боюсь твое сердце может не выдержат того, что ты увидишь...


Ассемблер гораздо практичнее современного С++, для своих целей.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Re: Тебе и вправду на JS жизнь будет проще
От: ути-пути Россия  
Дата: 08.01.21 23:44
Оценка: +3
Здравствуйте, CreatorCray, Вы писали:

CC>Артёмка...

CC>Ну а С++ то тут собственно каким боком?

Болит он у него. Иногда зарастает, но Тема его снова расчесывает.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Тебе и вправду на JS жизнь будет проще
От: CreatorCray  
Дата: 03.01.21 02:46
Оценка: +1 -1
Здравствуйте, Тёмчик, Вы писали:

Артёмка...
Ну а С++ то тут собственно каким боком?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 04:32
Оценка: :))
Здравствуйте, reversecode, Вы писали:

R>никогда больше не ходите на бокс


Нечего по делу сказать- дрочи в сторонке.
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Философ Ад http://vk.com/id10256428
Дата: 06.01.21 02:25
Оценка: :))
Здравствуйте, LaptevVV, Вы писали:

Тё>>Думаете, результат будет [123, 123]? Think again.

LVV>В 2020 про С++11 пора уже забыть.
LVV>У меня gcc C++17 делает именно то, что нужно.

Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 06.01.21 04:58
Оценка: :))
Здравствуйте, kaa.python, Вы писали:

KP>У нас тут самоходная карета на C++ почти вся. Мне самому не нравится, так что надеюсь, что может милостливый сударь порекомендует на чем это всё писать


Нужно отталкиваться от наличия библиотек и фреймворков. А так, умные пишут на функциональном языке, а кодерки-середнячки- они на ООП. Ибо ФП ниасилили.
Re[6]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 06.01.21 11:15
Оценка: :))
Здравствуйте, kaa.python, Вы писали:

KP>Так ФП не панацея, да еще и с кучей ограничений на области использования. Кстати чего там осиливать, собственно?

Осилить его использовать в проде.
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: CreatorCray  
Дата: 06.01.21 19:39
Оценка: +2
Здравствуйте, Тёмчик, Вы писали:

Тё>Нужно отталкиваться от наличия библиотек и фреймворков. А так, умные пишут на функциональном языке, а кодерки-середнячки- они на ООП. Ибо ФП ниасилили.


Артёмка, им надо чтоб ехало а не шашечки.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[6]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 07.01.21 00:23
Оценка: :))
Здравствуйте, Marty, Вы писали:

M>В целом, сложилось впечатление, что не такое говно, как джава, но до плюсиков ему всё равно как раком до луны. И эта сцанина, что const всё равно передаётся по ссылке, и сам объект (указатель на него) нельзя менять (по языковым ограничениям) сводит на нет то, что можно менять его свойства и дёргать любые методы, хоть const, хоть не const. Одно это за гранью добра и зла...


Ты просто думаешь, как плюсник. В java есть константные ссылки, но иммутабельность обьектов средой не энфорсится, а только рантайм проверками. Пиши на clojure, будет тебе счастье- всё по дефолту иммутабельное.
Про недостатки C++ я много раз уже повторялся- это ограниченные коллекции, непродуманные примитивы синхронизации, и граблевые языковые конструкции. Причём, чем дальше нововведений, тем больше грабелек раскладывают, а не наоборот.


Тё>>А так, настройка рабочего компа для нового работника (с опытом в своей области)- это обычно 1 день всё настроить.


M>Вообще, это должно автоматом за полчаса накатываться. Я про самостоятельное вхождение.

Это ты будешь рассказывать, когда нужно настроить параметры отладчика например, чтоб микросервис запустить и он подцепился к друним в облаках, прописать ip-ки в AWS и т.п. вещи.
В сравнении с этим, установка версии буста это вообще влёт в коматозе делается.

Тё>>Одинаково для плюсов, жавы, ts и т.д.


M>Теоретически — да. Но если на плюсиках всё собирается в простой исполняемый экзешник, который просто работает, то для JVM надо разбираться. Другая JVM у юзера — и пиши пропало. Опять же, что-то кладётся в ресурсы JAR'а, что-то не кладётся. Мавен-швавен, градле-хренадле, IDEA/Eclipse — везде все по разному. В жопу всё это

Мавен, да. Запускаешь сборку, оно вытянет зависимости по необходимости и соберется.

M>>>Пайтон, хоть его в студии сейчас и можно отлаживать — тоже УГ, проект больше тыщи строк превращается в лютейший кал просто автоматически. Да, там сейчас подвезли костылей каких-то типа для статической проверки, только они мало что умеют, и мало кто ими пользуется.

Тё>>Любой код превращается в кал ручками рукожопов.

M>Дело не в рукожопости. А в том, что в пайтоне всё на отступах и с новой строчки, чуть что. В итоге одна простая строчка на плюсах разрастается в десяток-другой на питоне, а смысл — всё тот же, элементарный. Нет namespace'ов, нормальных классов, перегрузки, и тд, и тп. В итоге всё то, что в плюсах компилер разруливает при компиляции, в питоне расписываешь руками и пипецома пухнет, как на дрожжях, и после тыщи-другой строк кода вырывается из под управления

На питоне в 1000 раз быстрее писать и выразительнее код, чем на плюсах или тем более жаве.

M>Я на этом питоне писал системы управления боевыми кораблями (допиливал созданное какими-то одарёнными товарищами), так что бойся, ракета может вылететь в любой момент, если какой-то каст сломается

Для больших проектов всё-таки лучше языки с статической типизацией. Вот Typescript с статической. Хотя, народ так и норовит всё к any привести, ну как если в C++ всё через void* передавать. Линтер и периодические проверки, что там git вытянул, помогают. А так, без дисциплины, любой код заговляют.
Re[7]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Максим Россия  
Дата: 05.01.21 19:33
Оценка: 3 (1)
Тё>В Qt есть ускорение CSS на GPU, как в Хроме и Сафари?

В Qt сейчас упор на QML и для него да, строится граф геометрических фигур по заданному коду, который отрисовывается потом на доступном железе (через OpenGL, Vulkan итд) https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph.html
Errare humanum est
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: aik Австралия  
Дата: 08.01.21 07:23
Оценка: 3 (1)
Здравствуйте, Тёмчик, Вы писали:

Тё>С++11 emplace_back


боян?

const std::string str = "Modern C++";

std::string s1 {"Modern C++", 3};
std::string s2 {str, 3};

std::cout << "S1: " << s1 << "\n";
std::cout << "S2: " << s2 << "\n";

вывод:
S1: Mod
S2: ern C++
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 08:12
Оценка: 2 (1)
Здравствуйте, Максим, Вы писали:

М>Недавно пришлось на ассемблере переписать кусок код а, который делает интенсивные вычисления. Но там по сути были небольшие ассемблерные вставки в сишный код. А теперь вот решил на новогодних праздниках немного углубиться в тему.


У меня была история в институте, задолго до проф деятельности. Была моя примитивная софтинка на дельфи: конвертер русских кодировок. Операция code=table[code] на 1м тексте занимала 10с примерно. Замена на асм вставку привела к мгновенной реакции. Потом я это же переписал на VC++ 6, и оно без вставок мгновенно конвертило.
В принципе, наверное за редким исключением, оптимизирующий C++ компилятор генерил код как минимум не хуже, чем мои наивные вставки.
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 02.01.21 18:47
Оценка: 1 (1)
Здравствуйте, Nuzhny, Вы писали:

N>Слушай, а что будет? Я проверил на Ideone, всё норм.


Проверил на ideone — нормально. language:C++ (gcc 8.3).

https://stackoverflow.com/a/28435599

Some library implementations of emplace_back do not behave as specified in the C++ standard including the version that ship with Visual Studio 2012, 2013 and 2015.

The call to emplace_back() uses perfect forwarding to perform construction in place and as such v[0] is not evaluated until after the vector has been resized (at which point v[0] is invalid). push_back constructs the new element and copies/moves the element as needed and v[0] is evaluated prior to any reallocation. – Marc Mar 6 '15 at 16:01

Отредактировано 02.01.2021 19:03 Артём . Предыдущая версия .
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: AleksandrN Россия  
Дата: 02.01.21 23:51
Оценка: 1 (1)
Здравствуйте, Тёмчик, Вы писали:

Тё>С++11 emplace_back

Тё>
Тё>std::vector<int> v;
Тё>v.emplace_back(123);
Тё>v.emplace_back(v[0]);
Тё>

Тё>Думаете, результат будет [123, 123]? Think again.

Сюрпризы здесь будут, если тип будет не int, а класс с конструктором перемещения.


Тё>
Тё>abc(std::unique_ptr<A>(new A()), std::unique_ptr<A>(new A()), some_other_function())
Тё>


Тё>В до C++ 11-е времена было нормально написать так:

Тё>
Тё>std::auto_ptr<A> a1 = std::auto_ptr<A>(new A());
Тё>std::auto_ptr<A> a2 = std::auto_ptr<A>(new A());
Тё>abc(a1.get(), a2.get(), some_other_function())
Тё>


Прототип abc() напиши.
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Максим Россия  
Дата: 03.01.21 07:37
Оценка: 1 (1)
Тё>С какой целью интересуешся асмом?

Недавно пришлось на ассемблере переписать кусок кода, который делает интенсивные вычисления. Но там по сути были небольшие ассемблерные вставки в сишный код. А теперь вот решил на новогодних праздниках немного углубиться в тему.
Errare humanum est
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Максим Россия  
Дата: 03.01.21 08:34
Оценка: 1 (1)
Тё>В принципе, наверное за редким исключением, оптимизирующий C++ компилятор генерил код как минимум не хуже, чем мои наивные вставки.

Ну да, базовые вещи не имеет смысл переписывать на Асме, мало того, что Сишный компилятор соптимизирует как минимум не хуже, так еще и код будет платформо-независимым. Но в моем случае был смысл. В современных ЦПУ есть инструкция, которая позволяет задавать свою таблицу умножения и потом выполнять за один такт действия над 16 байтными словами. Этот подход позволяет некоторые алгоритмы на порядок ускорить. Если интересно, можно тут про это почитать https://mirrors.edge.kernel.org/pub/linux/kernel/people/hpa/raid6.pdf
Errare humanum est
Re[9]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: _NN_ www.nemerleweb.com
Дата: 04.01.21 07:12
Оценка: 1 (1)
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, watchmaker, Вы писали:


W>>Так и компилятор С++ преобразует программу в машинные коды, которые будут работать на древнем железе.

Тё>Я привёл конкретный пример — async/await. Эта конструкция несколько лет как доступна в JS, вошла в стандарт C++ 20, но всё ещё не работает странице документации.

async/await появился в ECMAScript 2017, 3 года назад и заняло некоторое время, чтобы всё заработало гладко.

Подождите немного и будет вам полная поддержка async/await в C++20.
https://en.cppreference.com/w/cpp/compiler_support
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 02.01.21 18:09
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>С++11 emplace_back

Тё>
Тё>std::vector<int> v;
Тё>v.emplace_back(123);
Тё>v.emplace_back(v[0]);
Тё>

Тё>Думаете, результат будет [123, 123]? Think again.

Слушай, а что будет? Я проверил на Ideone, всё норм.
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Lexey Россия  
Дата: 02.01.21 21:29
Оценка: -1
Здравствуйте, Тёмчик, Вы писали:

Тё>Т.е. если

Тё>
Тё>auto a1 = std::unique_ptr<A>(new A());
Тё>auto a2 = std::unique_ptr<A>(new A());
Тё>abc(a1, a2, some_other_function())

Тё>a1.get() // null ptr
Тё>


Тё>abc() может внутри написать

Тё>
Тё>std::unique_ptr<A> myA1 = a1;
Тё>

Тё>И этим разрушить объект в a1.

Нет. Это даже не скомпилируется.
"Будь достоин победы" (c) 8th Wizard's rule.
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: reversecode google
Дата: 03.01.21 07:21
Оценка: :)
после typescript он стал ИТ импотентом
вряд ли что то сможет
доказательств он уже нагенерил за неделю
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: smeeld  
Дата: 03.01.21 09:47
Оценка: +1
Здравствуйте, Максим, Вы писали:

М>Тёмчик, я тут сейчас читаю книгу по Ассемблеру, прошу тебя — не смотри на него! Боюсь твое сердце может не выдержат того, что ты увидишь...


Фигня. Ассемблер (любой из) прост как топор. А вот С++ да, с времён страусструповых он является набором костылей, и со временем превратился в огромную их гору.
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.01.21 12:44
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>У меня была история в институте, задолго до проф деятельности. Была моя примитивная софтинка на дельфи: конвертер русских кодировок. Операция code=table[code] на 1м тексте занимала 10с примерно. Замена на асм вставку привела к мгновенной реакции. Потом я это же переписал на VC++ 6, и оно без вставок мгновенно конвертило.

Тё>В принципе, наверное за редким исключением, оптимизирующий C++ компилятор генерил код как минимум не хуже, чем мои наивные вставки.

Перепиши теперь на TS/JS
Маньяк Робокряк колесит по городу
Re[10]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 04.01.21 09:54
Оценка: -1
Здравствуйте, _NN_, Вы писали:

_NN>async/await появился в ECMAScript 2017, 3 года назад и заняло некоторое время, чтобы всё заработало гладко.

Да ну что-то не верится. Я в 2018 когда начал заниматься этой темой (ангулар, typescript), promise уже было объявлено как устаревшее и не рекомендуемое ангуларом. Код транспилится в ES5.

_NN>Подождите немного и будет вам полная поддержка async/await в C++20.

Это да. Осталось понять, как затащить C++ в проект. К примеру, есть ли off the shelf интерфейсы C++ к Eureka и Zool?
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Максим Россия  
Дата: 05.01.21 19:36
Оценка: +1
CC>Я уже давно на это забил. Нормальный компилятор (ICC) генерит нормальный код, ну а для всякого SSE/AVX есть интринсики, которые кстати весьма интересно работают с точки зрения кодогенерации, производя разные инструкции в зависимости от выбранного target CPU feature set.

Intrinsic-и это хорошая тема, да. Но в этот раз не получилось их использовать. Проект в kernel space и не под x86-64 архитектуру, а поэтому пришлось на голом ассемблере все писать.
Errare humanum est
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.01.21 02:32
Оценка: :)
Здравствуйте, Философ, Вы писали:

Ф>Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.


У нас тут самоходная карета на C++ почти вся. Мне самому не нравится, так что надеюсь, что может милостливый сударь порекомендует на чем это всё писать
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 02:56
Оценка: +1
Здравствуйте, Философ, Вы писали:

Ф>Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.


Я неделю джавовский энвайронмент настраивал, чтобы на котлине "Hello world" в Ideа написать, и нормально потом собранное из консольки запускать. Написал, и нахрен всё это выкинул — язык — говно, гораздо лучше, конечно, чем джава, но и только.

Пайтон, хоть его в студии сейчас и можно отлаживать — тоже УГ, проект больше тыщи строк превращается в лютейший кал просто автоматически. Да, там сейчас подвезли костылей каких-то типа для статической проверки, только они мало что умеют, и мало кто ими пользуется.

Это так, из недавнего, во что тыкал палочкой последнее время
Маньяк Робокряк колесит по городу
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 06.01.21 04:53
Оценка: :)
Здравствуйте, Marty, Вы писали:

Ф>>Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.


M>Я неделю джавовский энвайронмент настраивал, чтобы на котлине "Hello world" в Ideа написать, и нормально потом собранное из консольки запускать. Написал, и нахрен всё это выкинул — язык — говно, гораздо лучше, конечно, чем джава, но и только.


Не понимаю, зачем нужен котлин. А так, настройка рабочего компа для нового работника (с опытом в своей области)- это обычно 1 день всё настроить. Одинаково для плюсов, жавы, ts и т.д.

M>Пайтон, хоть его в студии сейчас и можно отлаживать — тоже УГ, проект больше тыщи строк превращается в лютейший кал просто автоматически. Да, там сейчас подвезли костылей каких-то типа для статической проверки, только они мало что умеют, и мало кто ими пользуется.

Любой код превращается в кал ручками рукожопов.
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Философ Ад http://vk.com/id10256428
Дата: 06.01.21 11:03
Оценка: +1
Здравствуйте, LaptevVV, Вы писали:

LVV>А С++ просто развивается.

LVV>И, конечно, язык уже давно перерос возможности обычного среднего программиста-работяги.
LVV>Иногда мне кажется, что комитет просто свои хотелки туда добавляет...
LVV>А что такого может понадобиться на гитхабе, что на это готовы убить аж целый день...

Я уже точно не помню что там было. Там что-то с COMами было, возможно что-то про VSS было.
Но вообще, то что выделили время на то, чтобы с чем-то разобраться у нас нифига не удивительно: у нас дофига чего, с чем именно разбираться нужно, на что нужно МНОГО времени.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 21:54
Оценка: :)
Здравствуйте, Тёмчик, Вы писали:


M>>Я неделю джавовский энвайронмент настраивал, чтобы на котлине "Hello world" в Ideа написать, и нормально потом собранное из консольки запускать. Написал, и нахрен всё это выкинул — язык — говно, гораздо лучше, конечно, чем джава, но и только.


Тё>Не понимаю, зачем нужен котлин.


Котлин на полпорядка лучше джавы. Оператор элвис ничего, но в плюсиках решается тернарным '?'.
В целом, сложилось впечатление, что не такое говно, как джава, но до плюсиков ему всё равно как раком до луны. И эта сцанина, что const всё равно передаётся по ссылке, и сам объект (указатель на него) нельзя менять (по языковым ограничениям) сводит на нет то, что можно менять его свойства и дёргать любые методы, хоть const, хоть не const. Одно это за гранью добра и зла...


Тё>А так, настройка рабочего компа для нового работника (с опытом в своей области)- это обычно 1 день всё настроить.


Вообще, это должно автоматом за полчаса накатываться. Я про самостоятельное вхождение.


Тё>Одинаково для плюсов, жавы, ts и т.д.


Теоретически — да. Но если на плюсиках всё собирается в простой исполняемый экзешник, который просто работает, то для JVM надо разбираться. Другая JVM у юзера — и пиши пропало. Опять же, что-то кладётся в ресурсы JAR'а, что-то не кладётся. Мавен-швавен, градле-хренадле, IDEA/Eclipse — везде все по разному. В жопу всё это


M>>Пайтон, хоть его в студии сейчас и можно отлаживать — тоже УГ, проект больше тыщи строк превращается в лютейший кал просто автоматически. Да, там сейчас подвезли костылей каких-то типа для статической проверки, только они мало что умеют, и мало кто ими пользуется.

Тё>Любой код превращается в кал ручками рукожопов.

Дело не в рукожопости. А в том, что в пайтоне всё на отступах и с новой строчки, чуть что. В итоге одна простая строчка на плюсах разрастается в десяток-другой на питоне, а смысл — всё тот же, элементарный. Нет namespace'ов, нормальных классов, перегрузки, и тд, и тп. В итоге всё то, что в плюсах компилер разруливает при компиляции, в питоне расписываешь руками и пипецома пухнет, как на дрожжях, и после тыщи-другой строк кода вырывается из под управления

Я на этом питоне писал системы управления боевыми кораблями (допиливал созданное какими-то одарёнными товарищами), так что бойся, ракета может вылететь в любой момент, если какой-то каст сломается
Маньяк Робокряк колесит по городу
Re[6]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 07.01.21 00:08
Оценка: -1
Здравствуйте, CreatorCray, Вы писали:

CC>Артёмка, им надо чтоб ехало а не шашечки.


Как такой код можно назвать после этого? Сингапуроговнокод?
Re[9]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.01.21 01:36
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

Тё>Я не совсем понимаю, почему именно хаскель и почему отложенные вычисления должны вызывать утечки. Это проблема хаскеля?


Проблема ленивых вычислений в том, что они ленивые. Звучит странно но... представь себе ситуацию когда накапливается довольно большое количество ленивых вычислений, которые тем или иным способом сохранили контекст, какие-то забинденные данные и никогда не выполнились. С точки зрения кода это не ошибка, ну не выполнились и ладно, но с точки зрения ресурсов у тебя есть память которую никак нельзя освободить т.к. она как бы нужна, но вычисление никогда (очень долгое время) не будет выполнено.

Как ты вообще советуешь использовать функциональные языки, если не понимаешь как они работают и какие проблемы могут привнести?
Re[10]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 07.01.21 01:59
Оценка: :)
Здравствуйте, kaa.python, Вы писали:

Тё>>Я не совсем понимаю, почему именно хаскель и почему отложенные вычисления должны вызывать утечки. Это проблема хаскеля?


KP>Проблема ленивых вычислений в том, что они ленивые. Звучит странно но... представь себе ситуацию когда накапливается довольно большое количество ленивых вычислений, которые тем или иным способом сохранили контекст, какие-то забинденные данные и никогда не выполнились. С точки зрения кода это не ошибка, ну не выполнились и ладно, но с точки зрения ресурсов у тебя есть память которую никак нельзя освободить т.к. она как бы нужна, но вычисление никогда (очень долгое время) не будет выполнено.


KP>Как ты вообще советуешь использовать функциональные языки, если не понимаешь как они работают и какие проблемы могут привнести?


У тебя случались реально такие ситуации? Так-то по неосторожности или специально извратиться, можно и в OOP с GC сделать утечки. А уж как в C++ грабельки разложены "кто кого владеет".
Re[7]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: ути-пути Россия  
Дата: 09.01.21 00:04
Оценка: +1
Здравствуйте, Тёмчик, Вы писали:

M>>Вообще, это должно автоматом за полчаса накатываться. Я про самостоятельное вхождение.

Тё>Это ты будешь рассказывать, когда нужно настроить параметры отладчика например, чтоб микросервис запустить и он подцепился к друним в облаках, прописать ip-ки в AWS и т.п. вещи.
Тё>В сравнении с этим, установка версии буста это вообще влёт в коматозе делается.

Речь вроде про хелло волд шла. Какие нафиг микросервисы, облака, какой буст?
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: T4r4sB Россия  
Дата: 02.01.21 17:14
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Это фича, ты не понимаешь
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: reversecode google
Дата: 02.01.21 21:01
Оценка:
пользуясь случаем хочу поинтересоваться у покалеченного С++ магистра черных сил
если жопаскрипт такое быстрое г
то почему везде где оно используется как правило отжирает у броузера ~%40 cpu ?
а при открытии страницы минуту может тупо висеть

вот прямо сейчас что бы далеко не ходить

биржа ексмо https://exmo.com/uk/trade/BTC_USD
для отрисовки одного графика %40 cpu
не поверю что на этой бирже работают жуниор жопперы за еду
которые не умеют и не знают O() сложностей

и даже самый жуниорсий С++ дев не сможет так постараться что бы у него скомпилируемый софт на С++ столько съедал
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 04:28
Оценка:
Здравствуйте, AleksandrN, Вы писали:

AN>Сюрпризы здесь будут, если тип будет не int, а класс с конструктором перемещения.

Да вроде ответили выше, что проблема была до VC++ 2015 включительно в реализации расширения буфера у std::vector. Что может быть не так с конструктором перемещения?


AN>Прототип abc() напиши.


Что-то на голых указателях или лучше ссылках
void abc(A const *a1, A const *a2, int b)

void abc(A const &a1, A const &a2, int b)
...
abc(*a1.get(), *a2.get(), some_other_function())
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.01.21 04:30
Оценка:
Здравствуйте, Тёмчик, Вы писали:

N>>Слушай, а что будет? Я проверил на Ideone, всё норм.

Тё>Проверил на ideone — нормально. language:C++ (gcc 8.3).

То есть проблема не в С++, а максимум у производителя стандартной библиотеки.
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 04:46
Оценка:
Здравствуйте, Nuzhny, Вы писали:

N>То есть проблема не в С++, а максимум у производителя стандартной библиотеки.


Челу прострелило на продакшене. Теперь- то уже пофиксили, но осадочек остался.


Вот ещё пример. В С++ 20 стандарт вошли async/await. Это круто! Может быть, теперь можно обосновать для мобильной android+iOS "быстрой" версии клиента язык разработки C++?

https://en.cppreference.com/w/cpp/language/coroutines

  Упс


Пользуясь случаем, 2 вопроса:
1) Что с этим делать? Писать сегодня на asyo и в будущем, когда доведут до ума, переписывать на C++ 20?
2) Предположим, начинается новый проект — мобильный клиент к существующему desctop-oriented приложению HTML5. Требования- жесты, скорость, красивый UI, mobile-friendly UI (т.е. переработанные под мелкий экран интерфейсы). Как аргументировать за разработку на чистом C++, в противовес разработке двух версий Kotlin и Swift?
Отредактировано 03.01.2021 4:49 Артём . Предыдущая версия . Еще …
Отредактировано 03.01.2021 4:48 Артём . Предыдущая версия .
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Nuzhny Россия https://github.com/Nuzhny007
Дата: 03.01.21 04:58
Оценка:
Здравствуйте, Тёмчик, Вы писали:

N>>То есть проблема не в С++, а максимум у производителя стандартной библиотеки.

Тё>Челу прострелило на продакшене. Теперь- то уже пофиксили, но осадочек остался.

Но это всё равно не недостаток С++. Кому-то попался софт с ошибкой — бывает.

Тё>Вот ещё пример. В С++ 20 стандарт вошли async/await. Это круто! Может быть, теперь можно обосновать для мобильной android+iOS "быстрой" версии клиента язык разработки C++?

Тё>https://en.cppreference.com/w/cpp/language/coroutines

Тё>
  Упс


Но это не упс — тебе говорят, что ты опцию -fcoroutines компилятору не добавил.

Тё>Пользуясь случаем, 2 вопроса:

Тё>1) Что с этим делать? Писать сегодня на asyo и в будущем, когда доведут до ума, переписывать на C++ 20?

Это зависит от того, какой компилятор у тебя доступен. Только не говори, что во всех остальных языках такой проблемы нет и они ещё до выхода стандарта языка (или в момент выхода) могут на него пересесть. Нет такого.

Тё>2) Предположим, начинается новый проект — мобильный клиент к существующему desctop-oriented приложению HTML5. Требования- жесты, скорость, красивый UI, mobile-friendly UI (т.е. переработанные под мелкий экран интерфейсы). Как аргументировать за разработку на чистом C++, в противовес разработке двух версий Kotlin и Swift?


А зачем тут С++? Я бы не брался. Можно спросить у человека с опытом — Dair. Они на плюсах желают ядро с логикой, а весь Гуй и платформоориентированный код на Kotlin и Swift (или Java и Objective C). Что тут такого?
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Максим Россия  
Дата: 03.01.21 07:07
Оценка:
Тё>Можно потратить всё время на обдумывание этих слоёв грабель, вместо оптимального решения задачи.

Тёмчик, я тут сейчас читаю книгу по Ассемблеру, прошу тебя — не смотри на него! Боюсь твое сердце может не выдержат того, что ты увидишь...
Errare humanum est
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 07:23
Оценка:
Здравствуйте, Максим, Вы писали:

М>Тёмчик, я тут сейчас читаю книгу по Ассемблеру, прошу тебя — не смотри на него! Боюсь твое сердце может не выдержат того, что ты увидишь...


С какой целью интересуешся асмом?

Я писал лабы на x86 асме и немножко для себя игрался с вставками. Но по работате не довелось . Причём, именно что в C++ х конторах асм оказался какбы не нужен, если не считать хаков с thunk в 2002-2005гг.
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: lpd Черногория  
Дата: 03.01.21 07:45
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>С какой целью интересуешся асмом?

Этим вопросом задавались еще 15 лет назад.

Тё>Я писал лабы на x86 асме и немножко для себя игрался с вставками. Но по работате не довелось . Причём, именно что в C++ х конторах асм оказался какбы не нужен,


Эмбедщики, авторы ОС и низкоуровнего софта, компиляторов, с ассемблером сталкиваются постоянно, хотя он и не основной язык разработки конечно.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 03.01.2021 7:46 lpd . Предыдущая версия .
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: lpd Черногория  
Дата: 03.01.21 09:57
Оценка:
Здравствуйте, smeeld, Вы писали:

S>Фигня. Ассемблер (любой из) прост как топор.

это да. но обычно нужен не просто ассемблер, а настройка системных таблиц процессора, инициализация оборудования. оно тоже несложно, но виртуализация добавила веселья с оптимизированной для vm страничной адресацией и какими-нибудь режимами pci-passthrough.
У сложных вещей обычно есть и хорошие, и плохие аспекты.
Берегите Родину, мать вашу. (ДДТ)
Отредактировано 03.01.2021 9:58 lpd . Предыдущая версия .
Re[8]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 03.01.21 10:20
Оценка:
Здравствуйте, watchmaker, Вы писали:

W>Так и компилятор С++ преобразует программу в машинные коды, которые будут работать на древнем железе.

Я привёл конкретный пример — async/await. Эта конструкция несколько лет как доступна в JS, вошла в стандарт C++ 20, но всё ещё не работает странице документации.
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: 3V Россия  
Дата: 03.01.21 12:30
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Как аргументировать за разработку на чистом C++, в противовес разработке двух версий Kotlin и Swift?

Заюзать Qt.
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 03.01.21 12:45
Оценка:
Здравствуйте, smeeld, Вы писали:

М>>Тёмчик, я тут сейчас читаю книгу по Ассемблеру, прошу тебя — не смотри на него! Боюсь твое сердце может не выдержат того, что ты увидишь...


S>Фигня. Ассемблер (любой из) прост как топор. А вот С++ да, с времён страусструповых он является набором костылей, и со временем превратился в огромную их гору.


Да мы и так помним, что ты не осилил
Маньяк Робокряк колесит по городу
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: student__  
Дата: 03.01.21 13:24
Оценка:
Здравствуйте, Marty, Вы писали:

M>Да мы и так помним, что ты не осилил


Вообще, это не недостаток, т.к. ЯП создаются, чтобы ими пользовались люди, а в случае Страуструпа он же сам свое детище вполне не осилил.
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Слава  
Дата: 03.01.21 13:31
Оценка:
Здравствуйте, reversecode, Вы писали:

R>то почему везде где оно используется как правило отжирает у броузера ~%40 cpu ?

R>а при открытии страницы минуту может тупо висеть

А вы видели, кто на нём пишет, и как? Требования "уметь верстать под Safari" и "уметь обрабатывать null вместо пустого массива" плохо сочетаются в сознании людей.

R>не поверю что на этой бирже работают жуниор жопперы за еду

R>которые не умеют и не знают O() сложностей

Именно они и работают. А если там работает сеньор, на него столько навалили работы, что ему совершенно некогда разбираться с результатами написанного. Это реальная беда.
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Лось Чтостряслось СССР  
Дата: 03.01.21 18:12
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>std::forward

Тё>

Тё>Forwards lvalues as either lvalues or as rvalues, depending on T


Тё>ЭЭЭЭ что???!!


rtfm, че
социализм или варварство
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: CreatorCray  
Дата: 04.01.21 02:01
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>Ассемблер гораздо практичнее современного С++, для своих целей.

Так практичнее что я от него в итоге в high performance коде больше десяти лет назад отказался.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: CreatorCray  
Дата: 04.01.21 02:01
Оценка:
Здравствуйте, Максим, Вы писали:

М>Недавно пришлось на ассемблере переписать кусок кода, который делает интенсивные вычисления. Но там по сути были небольшие ассемблерные вставки в сишный код. А теперь вот решил на новогодних праздниках немного углубиться в тему.


Я уже давно на это забил. Нормальный компилятор (ICC) генерит нормальный код, ну а для всякого SSE/AVX есть интринсики, которые кстати весьма интересно работают с точки зрения кодогенерации, производя разные инструкции в зависимости от выбранного target CPU feature set.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: CreatorCray  
Дата: 04.01.21 02:01
Оценка:
Здравствуйте, lpd, Вы писали:

lpd>авторы ОС и низкоуровнего софта с ассемблером сталкиваются постоянно, хотя он и не основной язык разработки конечно.

Мы его скорее asm читаем чем на нём пишем.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Re[6]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 04.01.21 02:14
Оценка:
Здравствуйте, 3V, Вы писали:

3V>Заюзать Qt.


В Qt есть ускорение CSS на GPU, как в Хроме и Сафари?
Re[7]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Skorodum Россия  
Дата: 04.01.21 14:13
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>В Qt есть ускорение CSS на GPU, как в Хроме и Сафари?

Не уверен на счет CSS, но в целом да, использование GPU есть.
Re: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: LaptevVV Россия  
Дата: 04.01.21 14:32
Оценка:
Тё>С++11 emplace_back
Тё>
Тё>std::vector<int> v;
Тё>v.emplace_back(123);
Тё>v.emplace_back(v[0]);
Тё>

Тё>Думаете, результат будет [123, 123]? Think again.
В 2020 про С++11 пора уже забыть.
У меня gcc C++17 делает именно то, что нужно.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: LaptevVV Россия  
Дата: 04.01.21 14:35
Оценка:
Спасибо за развернутый комментарий — обязательно студентам такое в лабах поставлю.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: AleksandrN Россия  
Дата: 04.01.21 21:27
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Здравствуйте, AleksandrN, Вы писали:


AN>>Сюрпризы здесь будут, если тип будет не int, а класс с конструктором перемещения.

Тё>Да вроде ответили выше, что проблема была до VC++ 2015 включительно в реализации расширения буфера у std::vector. Что может быть не так с конструктором перемещения?

Если конструктор копирования удалён, то не соберётся, если не добавлять std::move(v[0]).

AN>>Прототип abc() напиши.


Тё>Что-то на голых указателях или лучше ссылках

Тё>
Тё>void abc(A const *a1, A const *a2, int b)
Тё>

Тё>
Тё>void abc(A const &a1, A const &a2, int b)
Тё>...
Тё>abc(*a1.get(), *a2.get(), some_other_function())
Тё>


А что тут не так? std::unique_ptr::get() возвращает указатель, который хранит unique_ptr. Если внутри функции не вызывать delete, то всё отработает нормально.
Re[8]: Qt Quick is cool
От: Тёмчик Австралия жж
Дата: 06.01.21 00:27
Оценка:
Здравствуйте, Максим, Вы писали:

Тё>>В Qt есть ускорение CSS на GPU, как в Хроме и Сафари?


М>В Qt сейчас упор на QML и для него да, строится граф геометрических фигур по заданному коду, который отрисовывается потом на доступном железе (через OpenGL, Vulkan итд) https://doc.qt.io/qt-6/qtquick-visualcanvas-scenegraph.html


Спасибо, не знал! Qt Quick и single code base это то, что может стать selling point, в выборе технологического стека для будущего мобильного клиента.

https://www.youtube.com/watch?v=ktGFnXiBILE&amp;ab_channel=Qt
https://www.youtube.com/watch?v=9Ied3Dpb_Kg&amp;ab_channel=Qt
Отредактировано 06.01.2021 0:30 Артём . Предыдущая версия .
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.01.21 00:54
Оценка:
Здравствуйте, gardener, Вы писали:

LVV>>В 2020 про С++11 пора уже забыть.

G>Не так. В 2020 про С++ пора уже забыть.

А на что переходить-то пора?
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: LaptevVV Россия  
Дата: 06.01.21 04:55
Оценка:
Ф>Мне кажется про C++ вообще нужно забыть. Это не просто устаревший ЯП, это набор настолько лютейших костылей и велосипедов, что может уйти целый день на то, чтобы просто понять, как собрать проект стянутый с гитхаба. Не шутка! Когда я последний раз собирал плюсовый проект, у меня на это ушёл весь день.
Фортран еще более древний.
Но люди работают.
А С++ просто развивается.
И, конечно, язык уже давно перерос возможности обычного среднего программиста-работяги.
Иногда мне кажется, что комитет просто свои хотелки туда добавляет...
А что такого может понадобиться на гитхабе, что на это готовы убить аж целый день...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Re[11]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: DenisCh Россия  
Дата: 06.01.21 05:26
Оценка:
Здравствуйте, Тёмчик, Вы писали:

_NN>>async/await появился в ECMAScript 2017, 3 года назад и заняло некоторое время, чтобы всё заработало гладко.

Тё>Да ну что-то не верится. Я в 2018 когда начал заниматься этой темой (ангулар, typescript), promise уже было объявлено как устаревшее и не рекомендуемое ангуларом. Код транспилится в ES5.

Да? И что теперь вместо него предлагается? И какие бровзеры это "что" поддерживают?
... << RSDN@Home 1.0.0 alpha 5 rev. 0>>
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.01.21 05:26
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Нужно отталкиваться от наличия библиотек и фреймворков. А так, умные пишут на функциональном языке, а кодерки-середнячки- они на ООП. Ибо ФП ниасилили.


Так ФП не панацея, да еще и с кучей ограничений на области использования. Кстати чего там осиливать, собственно?
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: El Camino Real США  
Дата: 06.01.21 07:11
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>У нас тут самоходная карета на C++ почти вся. Мне самому не нравится, так что надеюсь, что может милостливый сударь порекомендует на чем это всё писать

Си. Не, серьезно. Для самоходных карет идеально подходит. Сам видел.
Re[5]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.01.21 07:25
Оценка:
Здравствуйте, El Camino Real, Вы писали:

ECR>Си. Не, серьезно. Для самоходных карет идеально подходит. Сам видел.


Для ASIL-D/B компонент — да, для всего остального — себе дороже. В принципе для QM можно хоть Rust брать, но там вроде как нет с DDS интеграции продуктового уровня, да и не будет, и не ясно что с экзотическими SoC делать. В итоге если не C++, то Си, но это еще хуже.
Отредактировано 06.01.2021 8:03 kaa.python . Предыдущая версия .
Re[7]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 06.01.21 11:21
Оценка:
Здравствуйте, Тёмчик, Вы писали:

KP>>Так ФП не панацея, да еще и с кучей ограничений на области использования. Кстати чего там осиливать, собственно?

Тё>Осилить его использовать в проде.

А зачем? На наших каретах, в ограниченном количестве случаев, подошел бы Haskell. Но т.к. там есть проблема с ликами из-за ленивых вычислений, мы смогли бы его использовать в очень ограниченном количестве случаев
Re[8]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 06.01.21 11:53
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>А зачем? На наших каретах, в ограниченном количестве случаев, подошел бы Haskell. Но т.к. там есть проблема с ликами из-за ленивых вычислений, мы смогли бы его использовать в очень ограниченном количестве случаев


Я не совсем понимаю, почему именно хаскель и почему отложенные вычисления должны вызывать утечки. Это проблема хаскеля?
Re[11]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 07.01.21 03:21
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>У тебя случались реально такие ситуации? Так-то по неосторожности или специально извратиться, можно и в OOP с GC сделать утечки. А уж как в C++ грабельки разложены "кто кого владеет".


Не важно как часто я с той или иной ошибкой встречался, важно то, что ты советуешь использовать некую технологию и при этом не понимаешь как она работает и какие там грабли закопаны.
Re[12]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 07.01.21 05:49
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>У тебя случались реально такие ситуации? Так-то по неосторожности или специально извратиться, можно и в OOP с GC сделать утечки. А уж как в C++ грабельки разложены "кто кого владеет".


KP>Не важно как часто я с той или иной ошибкой встречался, важно то, что ты советуешь использовать некую технологию и при этом не понимаешь как она работает и какие там грабли закопаны.


Где я советовал использовать хаскель, не напомнишь?
И ты ушёл от ответа, встречался ли ты с описанной тобой ошибкой, или Рабинович напел. Я-то встречался с утечками в OOP — как без коллектора, так и с коллектором прекрасно течёт.
Re[13]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.01.21 02:14
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Где я советовал использовать хаскель, не напомнишь?


А ты в курсе что ленивые вычисления имеются не только в Haskell, но и других функциональных языках?

Тё>И ты ушёл от ответа, встречался ли ты с описанной тобой ошибкой, или Рабинович напел. Я-то встречался с утечками в OOP — как без коллектора, так и с коллектором прекрасно течёт.


Ошибки в ООП решениях ищутся сильно проще, т.к. идут от явного выделения памяти и последующих действий, а том же C++ санитайзеры тебе их ловят сами, только правь. Я не сталкивался с такой ошибкой в проде, т.к. кроме одного CRUD-а на Elixir в проде функциональных систем не видел, в теории и на синтетических примерах смотрел, и, да, это реально сложно искать по сравнению с.

Так же это не отменяет того факта, что ты не поддерживал и не создавал для прода решений на функциональных языках и даже не знаешь о классе проблем которые они имеют, но советуешь их использовать.
Re[14]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 08.01.21 02:32
Оценка:
Здравствуйте, kaa.python, Вы писали:

Тё>>Где я советовал использовать хаскель, не напомнишь?


KP>А ты в курсе что ленивые вычисления имеются не только в Haskell, но и других функциональных языках?

Если у тебя бесконечно растёт цепочка отложенных вычислений, значит ты написал какой-то бред. Предположу, что ты не понимаешь суть рекуррентных вычислений.

Тё>>И ты ушёл от ответа, встречался ли ты с описанной тобой ошибкой, или Рабинович напел. Я-то встречался с утечками в OOP — как без коллектора, так и с коллектором прекрасно течёт.


KP>Ошибки в ООП решениях ищутся сильно проще, т.к. идут от явного выделения памяти и последующих действий, а том же C++ санитайзеры тебе их ловят сами, только правь. Я не сталкивался с такой ошибкой в проде, т.к. кроме одного CRUD-а на Elixir в проде функциональных систем не видел, в теории и на синтетических примерах смотрел, и, да, это реально сложно искать по сравнению с.

Т.е. нужно постараться, чтоб спровоцировать утечку, и своего опыта с ФЯ в проде у тебя нет.

KP>Так же это не отменяет того факта, что ты не поддерживал и не создавал для прода решений на функциональных языках и даже не знаешь о классе проблем которые они имеют, но советуешь их использовать.


Я сделал микросервис на Clojure и он крутился в проде, не жужжал, не жрал памяти, не тёк. Пока его не вернули на Groovy, и оно стало жрать память и тупить. Там было политическое волевое решение — люди взрывали себе мозг, а у нас командная разработка.
Отредактировано 08.01.2021 2:35 Артём . Предыдущая версия . Еще …
Отредактировано 08.01.2021 2:33 Артём . Предыдущая версия .
Re[15]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.01.21 02:34
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Я сделал микросервис на Clojure и он крутился в проде, не жужжал, не жрал памяти, не тёк. Пока его вернули на Groovy, и оно стало жрать память и тупить.


т.е. сервис оказался настолько непотребным, что его даже пришлось переписать. А у тебя зачетный опыт с функциональными языками-то
Re[16]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 08.01.21 02:37
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>т.е. сервис оказался настолько непотребным, что его даже пришлось переписать. А у тебя зачетный опыт с функциональными языками-то


Да просто ниасилили OOP-ки похог вхождения.
Re[17]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 08.01.21 02:39
Оценка:
Здравствуйте, Тёмчик, Вы писали:

KP>>т.е. сервис оказался настолько непотребным, что его даже пришлось переписать. А у тебя зачетный опыт с функциональными языками-то

Тё>Да просто ниасилили OOP-ки похог вхождения.

Давай я немного перефразирую вот это
Автор: Тёмчик
Дата: 07.01.21
. Твои неподтвержденные слова против факта переписывания. Ну и вы говорите
Re[18]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 08.01.21 03:02
Оценка:
Здравствуйте, kaa.python, Вы писали:

KP>Давай я немного перефразирую вот это
Автор: Тёмчик
Дата: 07.01.21
. Твои неподтвержденные слова против факта переписывания. Ну и вы говорите


Не, там слабое место было, что код изначально на груви в другом модуле, я перенёс в микросервис на clojure, полностью сохранив жавские интерфейсы. Никто кроме меня, не понимал его, это был прокол по части управления проектом. Ну и поручили другому челу он скопипастил изначальное грувиевское говно в микросервис. Да и хрен бы с ним- всё равно потом это было переписано мной на жава и он былого копролита почти ничего не осталось.
Re[2]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: Тёмчик Австралия жж
Дата: 08.01.21 07:51
Оценка:
Здравствуйте, aik, Вы писали:

Тё>>С++11 emplace_back


aik>боян?


aik>
aik>const std::string str = "Modern C++";

aik>std::string s1 {"Modern C++", 3};
aik>std::string s2 {str, 3};

aik>std::cout << "S1: " << s1 << "\n";
aik>std::cout << "S2: " << s2 << "\n";
aik>

aik>вывод:
aik>
aik>S1: Mod
aik>S2: ern C++
aik>



Это другое (C) и не про современный C++.
Эти грабельки похоже,что уже ископаемые.

basic_string( const CharT* s,
          size_type count,
          const Allocator& alloc = Allocator() )


но

basic_string( const basic_string& other,
          size_type pos,
          const Allocator& alloc = Allocator() );
Re[3]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: aik Австралия  
Дата: 08.01.21 09:06
Оценка:
Здравствуйте, Тёмчик, Вы писали:

Тё>Это другое (C) и не про современный C++.

Тё>Эти грабельки похоже,что уже ископаемые.

да я и не против, просто увидел на днях, но вместо обычного "ух ты теперь можно и так" возник вопрос "wtf?". кто то же решил что так логично и понятно.
Re[4]: Эффективный простреливатель ног C++ 11, 14, 17, 20
От: ути-пути Россия  
Дата: 09.01.21 00:13
Оценка:
Здравствуйте, LaptevVV, Вы писали:

LVV>Фортран еще более древний.

LVV>Но люди работают.

Там своя специфика — пожилые люди, привыкшие к нему, приучают к нему же подчиненных. А разговоры про наработанный десятилетиями код ерунда, было бы желание или необходимость, и подцепили бы эти библиотеки из любого языка.

Это куда проще чем с коболом, который не разовые расчеты считает, а крутится 24/365, обеспечивая довольно важные системы с немалой нагрузкой, и то, как летом гром грянул, взялись серьезно переписывать.
Переубедить Вас, к сожалению, мне не удастся, поэтому сразу перейду к оскорблениям.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.