Написать пост

Для чего хорош C++?

Аватар Типичный программист

C++ хорош для проектов, в которых важна производительность кода. Почему это так, и в каких областях применяется C++? Разбираем в этом материале.

С++ — это как Си, только с ООП

Что это значит?

  • можно работать с памятью на низком уровне;
  • нет «виртуальных машин» или фреймворков, которые занимаются, например, сборкой мусора или выделением памяти;
  • быстрое (иногда очень быстрое) выполнение кода по сравнению с более высокоуровневыми языками (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++.

Следите за новыми постами
Следите за новыми постами по любимым темам
51К открытий51К показов