* Отсутствие адекватного инструментария для сборки и анализа кода.
В первом случае всё сводится к CMake, который всеравно требует костылей и прочей гадости, а второй сводится тоже к божественному libclang, который единственный понимает код (см. ниже).
По сравнению с вызовами cargo и go build — это просто ничто.
* Черезвычайная сложность языка делает его труднообрабатываемым, как для человека так и для машины.
Я уже задел тему libclang итого, что только он может корректно распарсить весь C++17. Некоторые правила вызывают желание порвать стандарт.
Это всё выливается во времени компиляции, анализа и использовании ОЗУ инструментарем.
* Многопарадигменность языка возвышает энтропию кода до небес.
Люди любят ООП и используют виртуальные функции и раскидываются кучей. Ембед-разрабы выключают исключения и RTTI. Ты передаёшь ошибки, записывая их в std::error_code через ссылку, а твой сосед кидает исключение std::runtime_error и вообще пишет в функциональном стиле.
На практике ты применяешь подмножество языка, но знать обязан всё, чтобы не прокатиться лицом по грязи в случае перехода в другое место. Как результат: Порог вхождения выше крыши.
* Недостаток батареек.
Комитет крайне консервативен касательно содержимого стандартной либы. В итоге мы только к C++20 получаем что-то для работы с сетью. Ещё в мечтах обработка юникода и даже не стоит мечтать о парсерах JSON, которые что-то делают в стандартной либе каждого уважающего себя ЯП. Причина этому ниже по тексту.
Даже нет вещей вроде атомарных очередей, казалось бы, что необходимо high-performance языку.
* Решить все проблемы до релиза, которые раз в 3 года.
Это больше проблема коммьюнити, а не комитета. Комитет пилит TS, которые никто из вендоров не реализует и даже реализованные не используются, ибо непереносимо. В итоге — ноль фидбека и комитет оставляет огромные недоработки, даже гонясь за "обработкой всех возможных и невозможных кейсов".
* Обратная совместимость.
Истинный бич C++. Миллиарды строк кода на C++98, которые никто не обновляет ибо неясно, как они работают. Комитет прогибается под этим грузом и затыкает косяки другими косяками, захламляя язык все большим числом мусора.
* Медленная адатация новых стандартов.
Зачем обновлять то, что работает? И насрать, что это всё можно переписать на несколько строк с C++!8. Обновление VC++ потребует покупки новых лицензий и установки (медленной и трудоемкой!) на каждой машине из парка.