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