Слушайте, я знаю, что сейчас скажу что-то непопулярное, но давайте честно посмотрим на историю C++.
1979-1985: Начало проблемы
Бьярне Страуструп хотел добавить объектно-ориентированное программирование к C. Звучит разумно, правда? Проблема в том, что он пытался соединить два фундаментально разных подхода. Это как прикрутить реактивный двигатель к телеге.
1998: Первый стандарт и взрыв сложности
Когда вышел C++98, язык уже был перегружен. Шаблоны, исключения, STL, множественное наследование. Каждая фича решала проблему, но создавала три новых.
Для интровертов, которые любят глубоко погружаться в детали, это особенно болезненно. Вы можете потратить недели, изучая move semantics или template metaprogramming, и всё равно наткнуться на undefined behavior в самом неожиданном месте.
2011-2023: Попытки исправить неисправимое
C++11, C++14, C++17, C++20, C++23. Каждый стандарт добавляет новые возможности, пытаясь сделать язык безопаснее и удобнее. Но проблема в фундаменте. Обратная совместимость с C означает, что мы тащим за собой все костыли 1970-х годов.
Rust показал, что можно создать системный язык без этого багажа. Да, кривая обучения крутая, но хотя бы логика последовательная.
C++ не был ошибкой для своего времени, но продолжать использовать его для новых проектов в 2024 году? Это осознанный выбор страдания.
