Я думаю, что каждый здравомыслящий разработчик согласится с вами в том, что этот переключатель — дерьмо. Это сильно противоречит принципу KISS, и да, это не исключение для C++. У меня много разных претензий к C++:

  • Все устаревшие вещи из C. Например, концепция заголовочных файлов. Современные языки поставляются с пакетами без заголовков. Большая часть информации в заголовочных файлах избыточна.
  • Имена (кто решил, что unorderer_map хорошее имя для хэш-карты? почти все остальные имена были лучше (таблица, карта, хэш-карта, словарь…). Кстати, зачем помещать все функции из STD в пространство имен std::? заставляет меня писать std каждый раз, но почти ничего не дает читателю, подход Go здесь намного лучше.
  • Слишком много сложности, C++ раздут с множеством функций. Опять же, простота была принесена в жертву повсюду, есть много разных способов сделать одно и то же (все больше с каждой версией C++).
  • Медленное время компиляции. В основном результат системы шаблонов.

Но я программирую на C++, почему?

  • Библиотеки, например, библиотека Qt — одна из лучших библиотек инструментов графического интерфейса. Я, например, большой поклонник Go, но ничего похожего на Qt для Go нет, с таким же уровнем качества. OpenGL — еще один хороший пример, ничего подобного нельзя сделать на любом другом языке без обращения к C (да, привязки есть, но у них есть свои маленькие минусы).
  • Представление. Я пишу программы для 3D-графики, и в этом случае, как и во многих других, важна производительность. Я трачу много времени на оптимизацию кода, программирование на Python не вариант, программирование на чем-то другом, кроме C/C++, сопряжено с риском. Однажды я использовал Go для графического приложения, и результаты были хорошими, поскольку сборка мусора у него действительно хороша, но, в конце концов, вы знаете, что есть ограничения с другими языками: сборщик мусора, среда выполнения, отсутствие встроенных функций SIMD, компилятор (C/C++ компиляторы очень зрелые)…
  • Гибкость. Это палка о двух концах, но в целом все, что может процессор, можно закодировать на C++. С другими языками есть ограничения: ограничения памяти/указателя (см. Rust, язык целиком ориентированный на безопасность памяти, или Go, арифметика указателей запрещена и вся память по умолчанию обнуляется), генерация кода во время выполнения…

Например, сейчас я работаю над приложением для 3D-графики, для этого требуется доступ к графическому процессору (OpenGL, DirectX или Vulkan), многоплатформенный инструментарий GUI и высокая производительность (компилируемый язык и очень низкие паузы GC), как вы думаете? что C++ не менее плохой язык в этом случае?