LINUX.ORG.RU

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

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

Я уже понял, что ты принципиально отказываешься видеть в словах оппонента что-то, помимо желаемого.

Уже устал повторять: вы упорно не приводите никаких подтверждений своим напыщенным словесам.

Все, что вы можете – это ссылаться на какие-то другие языки. Но даже их вы не можете назвать. Потому, что далее последует очевидный вопрос: а сравниваете ли вы одинаковые по возможностям языки? Вам ведь нужно сравнивать C++ с языками из группы C, Ada, Rust, FreePascal. Вот и попробуйте сравнить по возможностям, чтобы и вариадик-шаблоны были, и шаблоны, параметризуемые скалярами, и специализация шаблонов, и constexpr, и множественное наследование. И гладкая интеграция с C (т.е. с любыми системными API).

и я подчеркиваю, что я согласен с этим утверждением

Если вы согласны, что компактнее записать не получится, то это автоматически опровергает ваши же утверждения про чрезмерную многословность.

и описал, откуда оно произошло

Это вам так кажется.

Также я упоминал другую проблему в процитированном куске кода - излишние определения типов.

Там нет этой проблемы. И да, вы опять не сможете предложить, как написать это компактнее. Пусть даже на каком-то гипотетическом языке. Ибо это вам не щеки надувать и нести бредни о том, какой херней страдает комитет по стандартизации C++.

Про скорость C++ компиляторов (в частности GCC, который быстрым вообще-то никогда и не был). Вот я для эксперимента натравил g++-8 на своем основном рабочем ноуте на один из файлов, который компилируется порядка 15 секунд. Файл уже отпрепроцессирован, чтобы учитывать только время парсинга:

$ time g++-8 -c -o target/_objs/gcc_8_1_0__x86_64_linux_gnu/release/test_header_prj_rb/test_header/main.o \
-O2 -DNDEBUG -DASIO_HAS_STD_CHRONO -DASIO_STANDALONE -DASIO_DISABLE_STD_STRING_VIEW \
-DHTTP_PARSER_STRICT=0 -DFMT_HEADER_ONLY -fPIC \
-std=c++14 test_header_main.i -ftime-report

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1381 kB (  0%)
 phase parsing                      :   3.34 ( 19%)   1.35 ( 50%)   4.69 ( 23%)  257150 kB ( 38%)
 phase lang. deferred               :   2.07 ( 11%)   0.47 ( 17%)   2.54 ( 12%)  139104 kB ( 21%)
 phase opt and generate             :  12.61 ( 70%)   0.89 ( 33%)  13.51 ( 65%)  280832 kB ( 41%)
 |name lookup                       :   0.82 (  5%)   0.23 (  8%)   1.12 (  5%)   19720 kB (  3%)
 |overload resolution               :   1.72 ( 10%)   0.40 ( 15%)   1.97 (  9%)  104011 kB ( 15%)
...
 TOTAL                              :  18.02          2.72         20.76         678479 kB

real	0m21.380s
user	0m18.165s
sys	0m2.770s

Там подключаются библиотеки, которые насквозь пронизаны шаблонами + разная околосистемная муть (библиотеки Asio, fmtlib, Catch2). Всего более 180KLOC в препроцессированном файле.

Время парсинга чуть больше 3 секунд на древнем ноутбучном i7-3667u. На коде, в котором шаблонов чуть меньше, чем дохера.

Вы конечно, можете вспомнить скорость какого-нибудь TurboPascal 3.0, только сравнивать следует языки одинакового калибра.

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

Я уже понял, что ты принципиально отказываешься видеть в словах оппонента что-то, помимо желаемого.

Уже устал повторять: вы упорно не приводите никаких подтверждений своим напыщенным словесам.

Все, что вы можете – это ссылаться на какие-то другие языки. Но даже их вы не можете назвать. Потому, что далее последует очевидный вопрос: а сравниваете ли вы одинаковые по возможностям языки? Вам ведь нужно сравнивать C++ с языками из группы C, Ada, Rust, FreePascal. Вот и попробуйте сравнить по возможностям, чтобы и вариадик-шаблоны были, и шаблоны, параметризуемые скалярами, и специализация шаблонов, и constexpr, и множественное наследование. И гладкая интеграция с C (т.е. с любыми системными API).

и я подчеркиваю, что я согласен с этим утверждением

Если вы согласны, что компактнее записать не получится, то это автоматически опровергает ваши же утверждения про чрезмерную многословность.

и описал, откуда оно произошло

Это вам так кажется.

Также я упоминал другую проблему в процитированном куске кода - излишние определения типов.

Там нет этой проблемы. И да, вы опять не сможете предложить, как написать это компактнее. Пусть даже на каком-то гипотетическом языке. Ибо это вам не щеки надувать и нести бредни о том, какой херней страдает комитет по стандартизации C++.

Про скорость C++ компиляторов (в частности GCC, который быстрым вообще-то никогда и не был). Вот я для эксперимента натравил g++-8 на своем основном рабочем ноуте на один из файлов, который компилируется порядка 15 секунд. Файл уже отпрепроцессирован, чтобы учитывать только время парсинга:

$ time g++-8 -c -o target/_objs/gcc_8_1_0__x86_64_linux_gnu/release/test_header_prj_rb/test_header/main.o \
-O2 -DNDEBUG -DASIO_HAS_STD_CHRONO -DASIO_STANDALONE -DASIO_DISABLE_STD_STRING_VIEW \
-DHTTP_PARSER_STRICT=0 -DFMT_HEADER_ONLY -fPIC \
-std=c++14 test_header_main.i -ftime-report

Time variable                                   usr           sys          wall               GGC
 phase setup                        :   0.00 (  0%)   0.00 (  0%)   0.01 (  0%)    1381 kB (  0%)
 phase parsing                      :   3.34 ( 19%)   1.35 ( 50%)   4.69 ( 23%)  257150 kB ( 38%)
 phase lang. deferred               :   2.07 ( 11%)   0.47 ( 17%)   2.54 ( 12%)  139104 kB ( 21%)
 phase opt and generate             :  12.61 ( 70%)   0.89 ( 33%)  13.51 ( 65%)  280832 kB ( 41%)
 |name lookup                       :   0.82 (  5%)   0.23 (  8%)   1.12 (  5%)   19720 kB (  3%)
 |overload resolution               :   1.72 ( 10%)   0.40 ( 15%)   1.97 (  9%)  104011 kB ( 15%)
...
 TOTAL                              :  18.02          2.72         20.76         678479 kB

real	0m21.380s
user	0m18.165s
sys	0m2.770s

Там подключаются библиотеки, которые насквозь пронизаны шаблонами , + разная околосистемная муть (библиотеки Asio, fmtlib, Catch2). Всего более 180KLOC в препроцессированном файле.

Время парсинга чуть больше 3 секунд на древнем ноутбучном i7-3667u. На коде, в котором шаблонов чуть меньше, чем дохера.

Вы конечно, можете вспомнить скорость какого-нибудь TurboPascal 3.0, только сравнивать следует языки одинакового калибра.