Что нравится и не нравится в С++? Чего не хватает?cplus-71

Что нравится в C++

  1. Мощь и гибкость

    • Контроль над ресурсами: Возможность тонкой настройки управления памятью (ручное управление, умные указатели, аллокаторы).
    • Пример:
      std::unique_ptr<Resource> res(new Resource()); // Безопасное владение
      
  2. Производительность

    • Нулевые или минимальные overhead-ы благодаря компиляции в нативный код и оптимизациям.
    • Возможность low-level оптимизаций (например, SIMD через intrinsic).
  3. Современные возможности

    • C++11/14/17/20 привнесли:
      • Лямбды, constexpr, концепты, корутины.
      • Пример концептов (C++20):
        template<typename T>
        concept Numeric = std::integral<T> || std::floating_point<T>;
        
  4. Обратная совместимость

    • Возможность использовать legacy-код вместе с современными практиками.

Что не нравится в C++

  1. Сложность языка

    • Множество способов сделать одно и то же, что ведет к ошибкам. Например:
      std::vector<int> v(5, 1); // 5 элементов со значением 1
      std::vector<int> v{5, 1}; // 2 элемента: 5 и 1
      
  2. Отсутствие встроенной безопасности

    • Нет bounds checking в стандартных контейнерах по умолчанию.
    • Уязвимости (например, use-after-free) требуют дополнительных инструментов (ASan, Valgrind).
  3. Медленная компиляция

    • Шаблоны и заголовочные файлы увеличивают время сборки.
  4. Недостаток "батареек"

    • Нет стандартных библиотек для:
      • HTTP-клиентов, JSON (до C++20), GUI.
      • Пример: Работа с JSON требует сторонних библиотек (nlohmann/json).

Чего не хватает

  1. Упрощенная многопоточность

    • Нужны аналоги async/await из C# или Rust-подобных tokio.
  2. Стандартный Package Manager

    • Как pip в Python или cargo в Rust.
  3. Улучшенная рефлексия

    • Текущие решения (например, typeid) ограничены.
  4. Более строгий "безопасный" подмножество

    • Аналоги Rust's borrow checker для критичных проектов.

Резюмируем

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