С++ — это как Си, только с ООП1.
Что это значит?
Итак,
https://tproger.ru/articles/bjarne-stroustrup-interview/
https://tproger.ru/jobs/udaljonnyj-razrabotchik-s/?utm_source=in_text
Среди возможных применений:
Источник статьи: https://tproger.ru/articles/what-cpp-is-good-for/
Что это значит?
- можно работать с памятью на низком уровне;
- нет «виртуальных машин» или фреймворков, которые занимаются, например, сборкой мусора или выделением памяти;
- быстрое (иногда очень быстрое) выполнение кода по сравнению с более высокоуровневыми языками (Python, C#, Java и другими);
- полный доступ к API операционной системы без обёрток (в которых может быть реализовано не всё).
Итак,
C++ хорош для проектов, в которых важна производительность кода.
Где применяется С++?
В недавнем интервью по ссылке ниже создатель языка рассказал, что C++ используют практически во всех областях. Мы выделим три направления, в которых лучше всего раскрываются преимущества языка.https://tproger.ru/articles/bjarne-stroustrup-interview/
Оптимизация
Перепишите любой код с языка более высокого уровня на C++, чтобы программа работала быстрее. Так часто делают в сфере глубокого обучения и других алгоритмических областях, где важна скорость. Подход может выглядеть так:- пишу код на Python;
- заставляю работать нейросеть, которая решит мою проблему;
- переношу код на C++.
Игры
В инди-играх обычно используются высокоуровневые языки и игровые движки (C# и Unity, Java и jMonkeyEngine), но на том же Unreal Engine можно создавать игры и на C++. Множество игр AAA-класса пишутся на C++ по нескольким причинам:- топовые игры надо хорошо оптимизировать, а С++ достаточно гибкий для этого. Но вместе с тем на нём удобно писать в ООП-стиле, не спускаясь до очень низкого уровня;
- использование собственного движка для полного контроля любых игровых механик. Да, так делают не всегда, но часто — в основном из-за проблем с лицензиями и необходимостью делить прибыль с продаж;
- кроссплатформенность: игра должна хорошо работать на всех поддерживаемых устройствах. Хотя многие движки по умолчанию предоставляют эту особенность, она не всегда эффективна: у кого-то игра может работать быстрее, а у кого-то медленнее. Код пишется так, чтобы оптимизировать компиляцию в бинарные файлы на разных платформах.
GPU-вычисления
Nvidia CUDA и OpenCL — две платформы, позволяющие запускать код C++ на графическом процессоре. GPU содержат сотни небольших вычислительных ядер, которые могут одновременно выполнять простые математические операции. Написав код для GPU, распараллеливающий сложные вычисления, можно добиться очень высокой производительности и скорости. C++ отлично подходит для этого.https://tproger.ru/jobs/udaljonnyj-razrabotchik-s/?utm_source=in_text
Среди возможных применений:
- майнинг биткоинов: код на C++ помогает майнить быстрее;
- обучение нейросетей: большинство библиотек Deep Learning используют C/C++ код на CUDA или OpenCL, чтобы нейросети обучались и работали быстрее. Однако многие функции доступны как на C++, так и на более высокоуровневых языках;
- шейдеры для игр и графического ПО. Шейдеры — небольшие участки кода, параллельно запускающиеся на GPU и выполняющие сложные графические задачи (например, трассировку лучей).
- Строго говоря, это не совсем верно. Хотя C++ произошёл от Си, с тех пор оба языка изменились и стали совершенно разными. Вы можете писать на C++ без ООП и использовать ООП в Си. ООП — это скорее подход или методология, а не конкретная функциональность. Но в C++ однозначно больше возможностей для реализации принципов ООП. ↩
Источник статьи: https://tproger.ru/articles/what-cpp-is-good-for/