Re[5]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 03:02
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

RW>>Даже Ada отдыхает со своими 1186 листиков


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


Не нравится — не пользуйся. По мне так — пользоваться просто, и целиком всё знать необязательно

ЗЫ И да, мне нравится, что язык стал активно развиваться, и то, что код написанный 20 лет назад собирается и работает точно так же, как и раньше
Маньяк Робокряк колесит по городу
Отредактировано 06.01.2021 3:03 Marty . Предыдущая версия .
Re[7]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 03:04
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

R>>вам кто-то зажал пальцы в дверь и заставляет использовать С++ что ли?


ЕМ>В целом-то я его люблю, но лишь в части более-менее адекватной реализации.


Так и пользуйся тем, что нравится. Никто же не заставляет прям всем пользоваться
Маньяк Робокряк колесит по городу
Re[7]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 03:10
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

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


ЕМ>Так и надо было развивать язык в рамках подхода, обеспечившего успех и C, и C++ — всю работу выполняют функции, а встроенные средства языка лишь определяют сущности и операции над ними. При таком подходе на языке можно с одинаковым удобством и эффективностью писать программы для простейших микроконтроллеров, ядра ОС, драйверы, мелкие программы и навороченные комплексы. В этом была уникальность языка и основная причина его популярности.


Я под STM32 на 11ом пишу, есть люди, которые на шаблонах C++ 17го стандарта с constexpr'ами фигачат. И, кстати, орчень эффективно выходит, по сравнению с более ранними стандартами


ЕМ>А потом среди поклонников (и разработчиков стандарта) возобладал традиционный подход к ЯП — "чтобы реализовать такой-то алгоритм, нужно написать вот это и вот это". Подавляющее большинство C++-программистов уже давно не понимает, что у программы внутри, как она взаимодействует со средой выполнения, какие конструкции порождают компактный код, а какие — развесистый, не умеет оптимизировать без профайлера и т.п., а просто кодирует алгоритм мало-мальски подходящими конструкциями языка и стандартной библиотеки, которая тоже превратилась в паровоз, нахлобученный на легковушку. Для всего этого уже было 100500 самых разных языков, и регулярно появляются новые, какой был смысл тащить туда еще и C++?


Куча непонятных заявлений. На других языках что, лучше понимают, что "у программы внутри"? Лучше без профайлера понимают, как писать эффективно?

"просто кодирует алгоритм мало-мальски подходящими конструкциями языка и стандартной библиотеки" — вообще-то этим занимаются большинство программистов всегда, а на других языках — так вообще это число ассимтотически приближается к 100%

Чем тебе стандартная библиотека, и её развитие, не нравится — тоже не понятно.
Маньяк Робокряк колесит по городу
Re[8]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.21 09:11
Оценка: 2 (1) +2
Здравствуйте, Marty, Вы писали:

M>Я под STM32 на 11ом пишу, есть люди, которые на шаблонах C++ 17го стандарта с constexpr'ами фигачат. И, кстати, орчень эффективно выходит, по сравнению с более ранними стандартами


Вряд ли дело в стандартах — скорее всего, просто оптимизаторы стали лучше работать.

M>На других языках что, лучше понимают, что "у программы внутри"? Лучше без профайлера понимают, как писать эффективно?


У большинства других языков это попросту не входит в парадигму. Уникальность C — в том, что в нем принципиально нет языковых конструкций, могущих породить объемный и/или тормозной код. C++ это унаследовал, и единственной чисто языковой фичей, которая могла дать избыточный код или тормоза, были исключения. Но их и невозможно было реализовать иначе, поэтому к ним нет претензий.

А вот когда вдруг обнаружилось, что на шаблонах можно делать то, что в других условиях обязан делать сам язык — получение сведений о типах/объектах, их взаимосвязях и прочие compile-time сервисы — и этот подход был признан правильным, тогда и началась вакханалия. Большинство ведь толком не понимает, как работает шаблонная рекурсия, завязанная на SFINAE, поэтому тупо копирует рекомендованные конструкции из учебников; если после этого вылезают странные ошибки — жалуются в форумах, где им советуют "поправить вот здесь вот так". А привыкнув к такому подходу, начинает столь же бездумно лепить шаблонные конструкции для организации/обработки данных. И вместо прозрачного языка с контролируемым объемом и быстродействием программы получается еще один "язык выражения намерений программиста", которых и без того множество.

M>Чем тебе стандартная библиотека, и её развитие, не нравится — тоже не понятно.


Тем, что она давно подмяла язык под себя, предложив извращенную реализацию того, что должно быть нормально реализовано в компиляторе. По уму, ее давно нужно было выделить в отдельный стандарт и разбить на уровни, реализация которых опциональна.
Re[9]: C++ 20 приняли
От: so5team https://stiffstream.com
Дата: 06.01.21 09:22
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

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


Можно пример подобного?
Re[9]: C++ 20 приняли
От: rg45 СССР  
Дата: 06.01.21 09:47
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Большинство ведь толком не понимает, как работает шаблонная рекурсия, завязанная на SFINAE, поэтому тупо копирует рекомендованные конструкции из учебников; если после этого вылезают странные ошибки — жалуются в форумах, где им советуют "поправить вот здесь вот так". А привыкнув к такому подходу, начинает столь же бездумно лепить шаблонные конструкции для организации/обработки данных. И вместо прозрачного языка с контролируемым объемом и быстродействием программы получается еще один "язык выражения намерений программиста", которых и без того множество.


Просто интересно стало, на чем основаны эти утверждения про большинство. Как ты статистику собирал?
--
Re[9]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 11:38
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

M>>Я под STM32 на 11ом пишу, есть люди, которые на шаблонах C++ 17го стандарта с constexpr'ами фигачат. И, кстати, орчень эффективно выходит, по сравнению с более ранними стандартами


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


Из-за constexpr'а, да


M>>На других языках что, лучше понимают, что "у программы внутри"? Лучше без профайлера понимают, как писать эффективно?


ЕМ>У большинства других языков это попросту не входит в парадигму. Уникальность C — в том, что в нем принципиально нет языковых конструкций, могущих породить объемный и/или тормозной код. C++ это унаследовал, и единственной чисто языковой фичей, которая могла дать избыточный код или тормоза, были исключения. Но их и невозможно было реализовать иначе, поэтому к ним нет претензий.


И в чем проблема?


ЕМ>А вот когда вдруг обнаружилось, что на шаблонах можно делать то, что в других условиях обязан делать сам язык — получение сведений о типах/объектах, их взаимосвязях и прочие compile-time сервисы — и этот подход был признан правильным, тогда и началась вакханалия. Большинство ведь толком не понимает, как работает шаблонная рекурсия, завязанная на SFINAE, поэтому тупо копирует рекомендованные конструкции из учебников; если после этого вылезают странные ошибки — жалуются в форумах, где им советуют "поправить вот здесь вот так". А привыкнув к такому подходу, начинает столь же бездумно лепить шаблонные конструкции для организации/обработки данных. И вместо прозрачного языка с контролируемым объемом и быстродействием программы получается еще один "язык выражения намерений программиста", которых и без того множество.


Я вот, например, в токостях и сейчас не понимаю часто, как работает SFINAE, и без шаблонных рекурсий
Современные версии всю эту возню со SFINAE упрощают/заменяют


M>>Чем тебе стандартная библиотека, и её развитие, не нравится — тоже не понятно.


ЕМ>Тем, что она давно подмяла язык под себя, предложив извращенную реализацию того, что должно быть нормально реализовано в компиляторе. По уму, ее давно нужно было выделить в отдельный стандарт и разбить на уровни, реализация которых опциональна.


Ничего она не подмяла. Под кейл, вон, армовский только компилер 11 версии стандарта, а либа — еще RogueWave от девяносто лохматого года. И нормально, в общем-то, живётся
Маньяк Робокряк колесит по городу
Re: C++ 20 приняли
От: morgot  
Дата: 06.01.21 12:51
Оценка: -1
[..удалено..]
Отредактировано 07.01.2021 0:32 morgot . Предыдущая версия .
Re[10]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.21 14:53
Оценка:
Здравствуйте, so5team, Вы писали:

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


S>Можно пример подобного?


Я сам такое не практикую, поэтому конкретных примеров под рукой нет, но встречается это часто. Сами-то конструкции комбинировать несложно, и это нередко даже выглядит изящно, но несколько вложенных уровней разворачиваются в неслабого объема код, уменьшить который не всякий оптимизатор способен.
Re[10]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.21 14:59
Оценка:
Здравствуйте, rg45, Вы писали:

R>Просто интересно стало, на чем основаны эти утверждения про большинство. Как ты статистику собирал?


Может, конечно, это и иллюзия, но вопросы типа "а почему так?" и жалобы на "не работает" встречаются часто и обильно. И с институтских времен помню, что теория формальных языков у большинства шла с большим скрипом, у них в голове не укладывалось, каким образом правило что-то там порождает. Оно и понятно — мышление физически заточено под итеративные конструкции, а не рекурсивные. Но традиционная для ЯП "исполняемая" рекурсия обычно легко сводится к итерации, поэтому ее легче понять. А вот когда она "порождающая" — у большинства как раз крыша и едет.

Уточняю: "большинство" — это среди всех программистов, а не только успешных и результативных.
Re[11]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 15:04
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

S>>Можно пример подобного?


ЕМ>Я сам такое не практикую, поэтому конкретных примеров под рукой нет, но встречается это часто. Сами-то конструкции комбинировать несложно, и это нередко даже выглядит изящно, но несколько вложенных уровней разворачиваются в неслабого объема код, уменьшить который не всякий оптимизатор способен.


Этот неслабого объема код только на эмбеде или в ядре имеет значение, в остальных случаях результат всё равно на порядки меньше и быстрее, чем на всяких джавах и прочих модных языках.
А в эмбеде или в ядре — ну да, нужно поаккуратнее писать
Маньяк Робокряк колесит по городу
Re[11]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 15:06
Оценка:
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Может, конечно, это и иллюзия, но вопросы типа "а почему так?" и жалобы на "не работает" встречаются часто и обильно. И с институтских времен помню, что теория формальных языков у большинства шла с большим скрипом, у них в голове не укладывалось, каким образом правило что-то там порождает. Оно и понятно — мышление физически заточено под итеративные конструкции, а не рекурсивные. Но традиционная для ЯП "исполняемая" рекурсия обычно легко сводится к итерации, поэтому ее легче понять. А вот когда она "порождающая" — у большинства как раз крыша и едет.


Хм. Мне вот например рекурсию написать гораздо проще, чем её развернуть в итеративный алгоритм. И сложилось впечатление, что это для большинства так
Маньяк Робокряк колесит по городу
Re[2]: C++ 20 приняли
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 06.01.21 15:09
Оценка:
Здравствуйте, morgot, Вы писали:

M>А кто такой "C++ 20", хакер чтоли? И за что его приняли-то?


Какой смешной у тебя йумор, аж абассаться можно
Маньяк Робокряк колесит по городу
Re[10]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.21 15:15
Оценка:
Здравствуйте, Marty, Вы писали:

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


M>Из-за constexpr'а, да


Грамотному оптимизатору constexpr (как и const) не требуется — он может сам увидеть, константно ли выражение. Конструкции const/constexpr нужны больше для строгости.

M>И в чем проблема?


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

M>Современные версии всю эту возню со SFINAE упрощают/заменяют


Каким образом?

M>Под кейл, вон, армовский только компилер 11 версии стандарта, а либа — еще RogueWave от девяносто лохматого года.


Так это и означает "реализация языка не соответствует стандарту". А если б на язык и основные части библиотеки были отдельные стандарты, в них и разбираться было бы гораздо проще, и реализовать в полном соответствии стандарту.
Re[12]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 06.01.21 15:20
Оценка:
Здравствуйте, Marty, Вы писали:

M>Мне вот например рекурсию написать гораздо проще, чем её развернуть в итеративный алгоритм.


Мне тоже, если исходный алгоритм определен рекурсивно. А вот свободно оперировать в голове рекурсивными понятиями сможете?
Re[8]: C++ 20 приняли
От: kov_serg Россия  
Дата: 07.01.21 09:34
Оценка:
Здравствуйте, Marty, Вы писали:

M>Так и пользуйся тем, что нравится. Никто же не заставляет прям всем пользоваться

Ситуация примерно такая:
Выходит новый стандарт (несколько тыщ страниц).
Появляются компиляторы, частично его реализующие.
Народ начинает внедрять новые модные фичи, по делу и без.
Обновляешь зависимости -> не компилируется ибо новые фичи
Обновляем компилятор -> упс старая ос, нужна свежая, производители компиляторов люди прогрессивные и очень занятые так что не поддерживают старые платформы.
Обновляем всё -> компилируем -> не проходит тесты
Ищем, устраняем, подстраиваемся под новыю ос -> собираем -> черт уже новый стандарт
Как плюс, проект теперь собирается только новым компилятором и на старых ос уже не пускается. А для запуска на старой ос слишком много телодвижений надо — забиваем.
Особенно хорошо это для остальных языков программирования которые собираются из плюсов. Они тоже переходят в разряд только на новых ос.
Тем самым сжигаем мосты и сами закапываем, то что работает.
А потом смотрим репозиторий: о проект не обновлялся 2года (автор помер) — всё швах использовать нельзя проект не развивается.

Когда в C++ появятся конструкции которые в явном виде ограничивают использование фич языка (как старых так и новых).
Простой вопрос как имея c++ файл определить минимальную и максимальную версию стандарта который нужен его компиляции?
Re[3]: C++ 20 приняли
От: Шахтер Интернет  
Дата: 07.01.21 14:02
Оценка: +1
Здравствуйте, Евгений Музыченко, Вы писали:

ЕМ>Здравствуйте, ioni, Вы писали:


I>>Вроде как этот?

I>>https://isocpp.org/files/papers/N4860.pdf

ЕМ>Интересно, это 1800 страниц — это рекорд по объему стандарта на язык программирования, или есть больше?


Язык там описан на 458 страницах. Остальное -- вредный довесок в виде "стандартной библиотеки". Торговля с нагрузкой.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[9]: C++ 20 приняли
От: Videoman Россия https://hts.tv/
Дата: 07.01.21 18:26
Оценка:
...
Отредактировано 07.01.2021 18:27 Videoman . Предыдущая версия .
Re[7]: C++ 20 приняли
От: Videoman Россия https://hts.tv/
Дата: 07.01.21 18:28
Оценка: +1
ЕМ>У большинства других языков это попросту не входит в парадигму. Уникальность C — в том, что в нем принципиально нет языковых конструкций, могущих породить объемный и/или тормозной код. C++ это унаследовал, и единственной чисто языковой фичей, которая могла дать избыточный код или тормоза, были исключения. Но их и невозможно было реализовать иначе, поэтому к ним нет претензий.

Вот тут ты абсолютно прав и на 100% попал в точку. Множество людей работающих близко к железу иногда даже сами не понимают за что они любят С. А вот именно за то, (не буквально но суть отражает) что быстро окинув код взглядом можно тут же оценить насколько это быстро и насколько это много в ассемблерном выхлопе, а это очень важно в их работе и зачастую является ключевым фактором. Однако это верно только если мы сами пишем код и досконально знаем каждый метод и что примерно делает каждая функция и знаем цену сторонних функций которые вызываем. То же можно сказать о С++ коде. Если ты сам пишешь весь код, то ты вполне в состоянии его контролировать. Если ты используешь сторонний код, то должен быть уверен в его эффективности.

ЕМ>А вот когда вдруг обнаружилось, что на шаблонах можно делать то, что в других условиях обязан делать сам язык — получение сведений о типах/объектах, их взаимосвязях и прочие compile-time сервисы — и этот подход был признан правильным, тогда и началась вакханалия. Большинство ведь толком не понимает, как работает шаблонная рекурсия, завязанная на SFINAE, поэтому тупо копирует рекомендованные конструкции из учебников; если после этого вылезают странные ошибки — жалуются в форумах, где им советуют "поправить вот здесь вот так". А привыкнув к такому подходу, начинает столь же бездумно лепить шаблонные конструкции для организации/обработки данных. И вместо прозрачного языка с контролируемым объемом и быстродействием программы получается еще один "язык выражения намерений программиста", которых и без того множество.


Да, на шаблонах можно написать что угодно громоздкое, особенно если задаться этой целью, как и на С . Но шаблоны это мета-програмирование, это программирование языка программирования и 90% случаев весь код выполняется на этапе компиляции и ничего не отнимает ни в плане скорости ни в плане размера программы. Непринятие "чистыми" С программистами шаблонов С++ основывается на их профессиональной привычке, что много кода — медленно, большой объем программы. Это не более чем привычка.
Я вполне согласен что системщикам не нравится неявные вызовы new/delete или исключения, тем более в ядре, где невозможно явно контролировать реализацию. Ну так и не используйте их. Зато в современном С++ появилась масса вещей которые можно делать прямо во время компиляции и с помощью которых можно автоматизировать написание большого объема почти одинакового кода, которой на С все-равно придется писать.

Чем, например системному программисту может навредить RAII? Если вы не используете динамическое аллоцирование (new/delete), то и исключений в конструкторе быть не может.
Чем вам помешают STL-ные: array, string_view, optional, variant ? Там гарантированно не будет никаких аллокаций и исключений если вы их не используете в своих классах.
Чем плох constexr ?

ЕМ>Тем, что она давно подмяла язык под себя, предложив извращенную реализацию того, что должно быть нормально реализовано в компиляторе. По уму, ее давно нужно было выделить в отдельный стандарт и разбить на уровни, реализация которых опциональна.


Да это и так все уже давно сделано. Не включай не нужные заголовки, не включай RTTI, не используй new/detete. Будет тебе по скорости тот же С, только намного мощнее и с шаблонами. Я, например, вообще не использую ужасно спроектированное тормозное и неудобное I/O. Можешь — используешь vector, string, map. Хочешь — пиши свои. Но зато, часто на практике, по самой задаче просто нужно написать много "шаблонного" кода. Обычно это какие-то табличные вещи, таблицы маршрутизации, какие-то множества структур. Тут С не может дать ничего в помощь разработчику. Начинается кто в лес кто по дрова: какие-то препроцессоры, сторонние генераторы и т.д.
Отредактировано 07.01.2021 18:36 Videoman . Предыдущая версия .
Re[8]: C++ 20 приняли
От: Евгений Музыченко Франция https://software.muzychenko.net/ru
Дата: 08.01.21 18:42
Оценка:
Здравствуйте, Videoman, Вы писали:

V>90% случаев весь код выполняется на этапе компиляции и ничего не отнимает ни в плане скорости ни в плане размера программы.


Откуда оценка в 90%? Само собой, "чисто предикативные" шаблоны вроде is_arithmetic или is_same именно так и работают, но и они выполняются компилятором в десятки-сотни раз медленнее, чем соответствующие предикаты, будь они встроены в компилятор. А используются эти предикаты массово, в том числе во вложенных/рекурсивных шаблонах, и в итоге неслабо тормозят компиляцию.

Чтобы шаблонный код на 90% (или хотя бы на 50%) выполнялся на этапе компиляции, программист должен хорошо понимать, во что развернется та или иная шаблонная конструкция. Поскольку шаблоны в C++ традиционно используются "не благодаря, а вопреки", большинство программистов не в состоянии адекватно понять, как работают все костыли, на которых реализованы даже шаблоны из std. Но в случае непосредственного использования шаблонов из std хоть можно доверять их авторам, которые в этой кухне неплохо разбираются — там оверхед действительно небольшой. Но когда нужно модифицировать стандартный шаблон или сделать свой на похожих принципах, из-за того же непонимания механизма лепятся конструкции "лишь бы заработало". Как только заработало — задача считается решенной, даже если вызов разворачивается в "ужас-ужас", но кто смотрит, во что оно развернулось? Кстати, есть компиляторы, умеющие показать результат раскрутки шаблона в терминах языка, а не ассемблерного кода?

V>Непринятие "чистыми" С программистами шаблонов С++ основывается на их профессиональной привычке, что много кода — медленно, большой объем программы.


Лично я очень люблю шаблоны C++ в их изначальной ипостаси, как средство параметризации. Но меня тошнит от подхода "если это может быть сделано на шаблонах — давайте сделаем на шаблонах". А поскольку на шаблонах, как известно, можно сделать практически все, то большинство идей по расширению C++ выливается в добавление новых шаблонов в std.

И ладно, если бы такой подход хоть сопровождался поддержкой "метапрограммирования с человеческим лицом". Какие в языке есть средства отладочного слежения за тем, как раскручивается шаблон? Никаких. Какие есть средства диагностики ошибок, чтобы выдать пользователю шаблона осмысленное сообщение, а не вываливать потроха с кучей вспомогательных типов, классов и переменных? Опять никаких. Бассейн построили тридцать лет назад, а воду в него никак не нальют.

Да, и я уже лет двадцать пять, как не "С-программист". То же самое ООП на чистом C выглядит ничуть не лучше современного метапрограммирования на C++.

V>Я вполне согласен что системщикам не нравится неявные вызовы new/delete или исключения, тем более в ядре, где невозможно явно контролировать реализацию.


С new/delete как раз все просто — достаточно их переопределить (я так и делаю). С исключениями хуже: даже если какой-то модуль их только бросает, но нигде не обрабатывает, в языке нет законного способа определить свою функцию вместо стандартного обработчика, которая вызывалась бы в точке выброса исключения. В каждой реализации для этого нужны свои костыли.

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

V>Зато в современном С++ появилась масса вещей которые можно делать прямо во время компиляции и с помощью которых можно автоматизировать написание большого объема почти одинакового кода


Так они почти все появились не в C++, а в его std, на тех самых шаблонах. Это как если бы расширения фортрана делались главным образом через подпрограммы/функции на том же фортране.

V>Чем, например системному программисту может навредить RAII?


Ничем, оно давно и активно используется и в ядерном, и в микроконтроллерном коде. Само-то по себе оно ни ресурсов лишних не требует, ни на CRT не завязано. Подобные вещи в C++ я очень люблю.

V>Чем вам помешают STL-ные: array, string_view, optional, variant ?


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

V>Чем плох constexr ?


Ничем. Чисто языковые расширения я всегда приветствую, и хотел бы иметь побольше средств контроля правильности программы, но их почему-то внедряют в последнюю очередь.

ЕМ>>Тем, что она давно подмяла язык под себя, предложив извращенную реализацию того, что должно быть нормально реализовано в компиляторе. По уму, ее давно нужно было выделить в отдельный стандарт и разбить на уровни, реализация которых опциональна.


V>Но зато, часто на практике, по самой задаче просто нужно написать много "шаблонного" кода. Обычно это какие-то табличные вещи, таблицы маршрутизации, какие-то множества структур. Тут С не может дать ничего в помощь разработчику.


А что может дать C++ для удобного представления исходных таблиц в коде программы? Обрабатывать-то их и на чистом C не особо сложно.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.