Найти тему

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

Оглавление

12 марта приглашаем на вебинар «ОБЛАСТИ ВИДИМОСТИ И НЕВИДИМОСТИ». Вы на примерах убедитесь в существовании проблемы деинициализации чего-либо, которая довольно часто возникает в разработке ПО с использованием legacy или native-кода. Попробуете разработать подход к её решению, за 1,5 часа реализуете класс общего назначения и запустите несколько unit-тестов с использованием googletest.

━━━━ ▸▹◉◈◉◃◂ ━━━━

В этой статье поговорим о том, где применяется язык программирования 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/.