Для чего хорош C++?
C++ хорош для проектов, в которых важна производительность кода. Почему это так, и в каких областях применяется C++? Разбираем в этом материале.
52К открытий53К показов
С++ — это как Си, только с ООП
Что это значит?
- можно работать с памятью на низком уровне;
- нет «виртуальных машин» или фреймворков, которые занимаются, например, сборкой мусора или выделением памяти;
- быстрое (иногда очень быстрое) выполнение кода по сравнению с более высокоуровневыми языками (Python, C#, Java и другими);
- полный доступ к API операционной системы без обёрток (в которых может быть реализовано не всё).
Но чем больше силы, тем больше ответственности. По сравнению с языками более высокого уровня, на С++ проще ошибиться. Причём так, что компилятор не подскажет и вы сразу не поймёте, в чём дело.
Итак, C++ хорош для проектов, в которых важна производительность кода.
Где применяется С++?
В недавнем интервью по ссылке ниже создатель языка рассказал, что C++ используют практически во всех областях. Мы выделим три направления, в которых лучше всего раскрываются преимущества языка.
Оптимизация
Перепишите любой код с языка более высокого уровня на C++, чтобы программа работала быстрее. Так часто делают в сфере глубокого обучения и других алгоритмических областях, где важна скорость. Подход может выглядеть так:
- пишу код на Python;
- заставляю работать нейросеть, которая решит мою проблему;
- переношу код на C++.
Но это не всегда приносит пользу: иногда быстрая разработка важнее производительности, или выгода от переноса кода на C++ совсем незначительна.
Игры
В инди-играх обычно используются высокоуровневые языки и игровые движки (C# и Unity, Java и jMonkeyEngine), но на том же Unreal Engine можно создавать игры и на C++. Множество игр AAA-класса пишутся на C++ по нескольким причинам:
- топовые игры надо хорошо оптимизировать, а С++ достаточно гибкий для этого. Но вместе с тем на нём удобно писать в ООП-стиле, не спускаясь до очень низкого уровня;
- использование собственного движка для полного контроля любых игровых механик. Да, так делают не всегда, но часто — в основном из-за проблем с лицензиями и необходимостью делить прибыль с продаж;
- кроссплатформенность: игра должна хорошо работать на всех поддерживаемых устройствах. Хотя многие движки по умолчанию предоставляют эту особенность, она не всегда эффективна: у кого-то игра может работать быстрее, а у кого-то медленнее. Код пишется так, чтобы оптимизировать компиляцию в бинарные файлы на разных платформах.
GPU-вычисления
Nvidia CUDA и OpenCL — две платформы, позволяющие запускать код C++ на графическом процессоре. GPU содержат сотни небольших вычислительных ядер, которые могут одновременно выполнять простые математические операции. Написав код для GPU, распараллеливающий сложные вычисления, можно добиться очень высокой производительности и скорости. C++ отлично подходит для этого.
Среди возможных применений:
- майнинг биткоинов: код на C++ помогает майнить быстрее;
- обучение нейросетей: большинство библиотек Deep Learning используют C/C++ код на CUDA или OpenCL, чтобы нейросети обучались и работали быстрее. Однако многие функции доступны как на C++, так и на более высокоуровневых языках;
- шейдеры для игр и графического ПО. Шейдеры — небольшие участки кода, параллельно запускающиеся на GPU и выполняющие сложные графические задачи (например, трассировку лучей).
Чтобы работать с языком было комфортно, нужно выбрать хорошую среду разработки. Это поможет сделать наша подборка с популярными IDE для программирования на C++.
52К открытий53К показов