LINUX.ORG.RU

История изменений

Исправление SZT, (текущая версия) :

Вы вообще C++ знаете или просто видели из далека?

Где-то посередине. Мне доводилось иметь дело с плюсовым кодом, я там даже находил баги и репортил их. Я знаю про классы, шаблоны, наследования, constexpr, move-семантику, знаю про то, как устроена и как генерируется компилятором таблица виртуальных методов, SFINAE... но я практически НЕ ПИШУ на плюсах, мне в основном приходится читать код на плюсах. И мне не нравится то, что я читаю. Чтобы не быть голословным, могу даже привести конкретные примеры плюсового кода, которые мне категорически не нравится

Старые стандарты практически полностью вошли в новые, что-то уберут из старого только в C++17.

В том то и проблема. По-хорошему нужно вообще делать новый язык, где нет этих сишных рудиментов вроде препроцессора. А все эти новые стандарты тащат за собой старый хлам. И например если надо поддерживать старый легаси плюсовый код, эволюционировавший из Си, где еще осталось куча макросов непонятного назначения, то для сопровождения всего этого надо еще и обладать навыками разгребания этих макросов. В плюсах макросы используются намного реже, там даже константы не через #define хотят объявлять, а посредством такого http://en.cppreference.com/w/cpp/language/variable_template :

template<typename T>
constexpr T pi = T(3.1415926535897932385);

Зачем нужно переписывать? В 99% случаев достаточно будет пересобрать код новыми компиляторами.

Зачем тогда новый компилятор? Ну вот значит будет часть кода на старом стандарте, часть кода на новом, часть вообще на Си с классами, разве это является чем-то хорошим?

Покажите такой язык для нейтива и без GC.

Да хотя б тот же D (там GC опционален) или Rust. Кстати, в D есть Mixin-ы, которые хоть и отрабатывают только на этапе компиляции, все же оказываются намного полезней, чем constexpr-ы и всякие метапрограммирования на шаблонах. https://dlang.org/template-comparison.html вот еще, по поводу шаблонов в плюсах и D.

Открою вам маленький секрет: работающему коду на C++ вовсе не обязательно быть «нормальным modern C++». У вас какой-то странный максимализм: либо хардкор на шаблонах, либо не C++.

Конечно не обязательно, вот GCC — отличный пример смешивания C++ и C, советую почитать его исходники и сделать выводы. Мне вот что-то совсем не доставляет удовольствия их читать.

Ну нифигасе простая задача.

А по-моему довольно простая. Только сами символьные вычисления (для упрощения выражений) могут вызвать некоторые затруднения, если писать это на том же жаваскрипте через eval().

Кто вам сказал, что в C++ должны быть готовые инструменты для этого?

А мне это никто и не говорил. Более того, я знаю что там ничего для этого нет.

В C++ дает вам инструменты, которые позволяют вам записать x=a*c+b*c для чисел произвольной точности именно в таком виде без потери эффективности по сравнению с тем, что пришлось бы писать в C

Это я тоже знаю, например https://gmplib.org/manual/C_002b_002b-Interface-General.html но никакой работы по упрощению выражений и JIT-у там не происходит

Исходная версия SZT, :

Вы вообще C++ знаете или просто видели из далека?

Где-то посередине. Мне доводилось иметь дело с плюсовым кодом, я там даже находил баги и репортил их. Я знаю про классы, шаблоны, наследования, constexpr, move-семантику, знаю про то, как устроена и как генерируется компилятором таблица виртуальных методов, SFINAE... но я практически НЕ ПИШУ на плюсах, мне в основном приходится читать код на плюсах. И мне не нравится то, что я читаю. Чтобы не быть голословным, могу даже привести конкретные примеры плюсового кода, которые мне категорически не нравится

Старые стандарты практически полностью вошли в новые, что-то уберут из старого только в C++17.

В том то и проблема. По-хорошему нужно вообще делать новый язык, где нет этих сишных рудиментов вроде препроцессора. А все эти новые стандарты тащат за собой старый хлам. И например если надо поддерживать старый код легаси плюсовый код, эволюционировавший из Си, где еще осталось куча макросов непонятного назначения, то для сопровождения всего этого надо еще и обладать навыками разгребания этих макросов. В плюсах макросы используются намного реже, там даже константы не через #define хотят объявлять, а посредством такого http://en.cppreference.com/w/cpp/language/variable_template :

template<typename T>
constexpr T pi = T(3.1415926535897932385);

Зачем нужно переписывать? В 99% случаев достаточно будет пересобрать код новыми компиляторами.

Зачем тогда новый компилятор? Ну вот значит будет часть кода на старом стандарте, часть кода на новом, часть вообще на Си с классами, разве это является чем-то хорошим?

Покажите такой язык для нейтива и без GC.

Да хотя б тот же D (там GC опционален) или Rust. Кстати, в D есть Mixin-ы, которые хоть и отрабатывают только на этапе компиляции, все же оказываются намного полезней, чем constexpr-ы и всякие метапрограммирования на шаблонах. https://dlang.org/template-comparison.html вот еще, по поводу шаблонов в плюсах и D.

Открою вам маленький секрет: работающему коду на C++ вовсе не обязательно быть «нормальным modern C++». У вас какой-то странный максимализм: либо хардкор на шаблонах, либо не C++.

Конечно не обязательно, вот GCC — отличный пример смешивания C++ и C, советую почитать его исходники и сделать выводы. Мне вот что-то совсем не доставляет удовольствия их читать.

Ну нифигасе простая задача.

А по-моему довольно простая. Только сами символьные вычисления (для упрощения выражений) могут вызвать некоторые затруднения, если писать это на том же жаваскрипте через eval().

Кто вам сказал, что в C++ должны быть готовые инструменты для этого?

А мне это никто и не говорил. Более того, я знаю что там ничего для этого нет.

В C++ дает вам инструменты, которые позволяют вам записать x=a*c+b*c для чисел произвольной точности именно в таком виде без потери эффективности по сравнению с тем, что пришлось бы писать в C

Это я тоже знаю, например https://gmplib.org/manual/C_002b_002b-Interface-General.html но никакой работы по упрощению выражений и JIT-у там не происходит