Введение (WIP)

Содержание:

  1. О самом C++
  2. Краткая история C++
  3. Подготовка к разработке
  4. Среда разработки (IDE)

О самом C++

C++ (произносится как "си плюс плюс") – один из самых распостранённых языков программирования высокого уровня в наше время. Он известен своей высокой производительностью, а также сложностью.

C++ является компилируемым языком программирования – весь код, написанный на нём, предварительно обрабатывается специальной программой – компилятором. Компилятор переводит наш "текст" на C++ в набор машинных кодов, которые уже понятны для компьютера. Это всё, что стоит пока что знать о нём. Подробнее его рассмотрим в других главах.

Рассмотрим ещё некоторые особенности языка.

Статическая типизация. Это значит, что типы всех переменных в вашем коде известны уже на этапе компиляции, и этот тип не может меняться во время выполнения программы. В противоположность статической типизации дана динамическая, которая есть в таких языках, как Python, JavaScript и Lua.

Ручное управление памятью. ...

Q: Почему C++ считается таким сложным?

C++ предоставляет полный контроль над каждым аспектом программы и не делает почти никаких ограничений. Это вынуждает программиста внимательно следить за тем, что он пишет. В этом языке есть тысяча разных способов накосячить в коде и даже не заметить. Например, C++ не проверяет границы массивов; C++ позволяет обратиться в любой участок памяти, даже защищённые, из-за чего операционная система может аварийно завершить программу – это и есть всем до боли известный Segmentation fault.

Однако, если использовать только те части языка, которые вам хорошо знакомы, то большинства ошибок можно избежать.

Краткая история С++.

Язык C++ был создан как "улучшенный C", который включает гибкие и эффективные инструменты для построения новых типов. Он вносит множество вещей, сохраняя полную обратную совместимость с C (почти полную), но самое главное – классы. Класс – это определяемый пользователем тип, которые обеспечивают инкапусляцию данных, их инициализацию, неявное преобразование пользовательских типов и многое другое.

Первая версия C++, созданная в начале 1980-х годов, называлась "C с классами" ("C with classes"). Этот язык возник из-за необходимости решения больших задач моделирования. Такую задачу мог решить язык SIMULA-76, но он оказался недостаточно эффективен, а также в нём не доставало возможностей: перегрузки операций, ссылок, виртуальных функций и прочего. В публичный доступ C++ вышел только в 1983 году.

С 1998 года комитет ISO (вики) взял на себя обязательства по стандартизации языка, по которому создаются компиляторы. На данный момент есть 5 основных версий языка: C++11, C++14, C++17, C++20 и C++23. На данном сайте будет рассматриваться преимущественно самый последний вышедший стандарт языка.

Q: Что насчёт онлайн-IDE?

Онлайн-IDE сложно назвать настоящими IDE, так как обычно их функционал сильно урезан. Но на первых порах их можно смело использовать.


Подготовка к разработке

Для разработки на C++ необходимо только две вещи: редактор файлов и компилятор. За редактор может сойти и обычный встроенный блокнот, но обычно так никто не делает. Принято использовать специализированные среды разработки, то есть IDE. Они предоставляют множество удобств для работы с языком: подсветка синтаксиса, автодополнение, поиск, рефакторинг и прочее.

Так как комитет ISO не занимается разработкой компилятора, а только документа, определяющего язык, существует множество реализаций компилятора. Рассмотрим некоторые из них:

  • Microsoft Visual C++ (MSVC++) – одновременно и IDE, и компилятор для C++ от Microsoft. Нацелен только на Windows.
  • G++ – компилятор C++ с открытым исходным кодом, распостраняемый внутри пакета компиляторов GCC. Для Windows он распостраняется в различных версиях, например, MinGW-w64; а в большинстве дистрибутивов Linux он уже предустановлен.
  • LLVM/Clang – тоже компилятор с открытым исходным кодом, но с использованием LLVM (вики). Имеется в репозиториях большиства Linux-дистрибутивов.

Windows

MSVC и Visual Studio

...

G++

...

LLVM/Clang

...

Linux

G++

На большинстве дистрибутивов Linux пакет компиляторов GNU уже предустановлен, так что давайте проверим его версию:

learncpp:~$ g++ --version
g++ (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

learncpp:~$

Как мы видим, установлена версия 11.4. На 6 мая 2024 года последней версией является GCC 14.1. Однако и 11-й версии уже достаточно, она поддерживает около 90% нововведений C++20.

Версия GCCВерсия стандарта
4.8C++11
5C++14
7C++17
8-12**C++20*
13-14**C++23*

Подробнее *Поддержка этих стандартов до сих пор неполная. **Различные фичи языка реализованы только в более поздных версиях.

Q: Что делать, если "команда не найдена"?

Это значит, что у вас не установлен GCC. Вам необходимо выполнить следующую команду в терминале:

# Для Debian-дистрибутивов: Debian, Ubuntu, Mint и пр.
sudo apt install gcc

# Для RPM-дистрибутивов как CentOS.
sudo yum install gcc

# Для Arch-дистрибутивов
sudo pacman -Ss gcc

LLVM/Clang

Clang – компилятор, довольно похожий на GCC. Clang ставит своей целью полностью заменить GCC и вполне с этим справляется. Он поддерживает большинство опций GCC.

Он редко бывает предустановлен, поэтому его придётся установить. Я не рекомендую использовать версию из стандартного репозитория, поэтому мы воспользуемся скриптом, который установить Clang автоматически. Однако этот способ может не сработать на дистрибутивах, не основанных на Debian. В этом случае воспользуйтесь командами ниже:

# Для Debian-дистрибутивов: Debian, Ubuntu, Mint и пр.
sudo apt install clang

# Для RPM-дистрибутивов как CentOS.
sudo yum install clang

# Для Arch-дистрибутивов
sudo pacman -Ss clang

Установка через скрипт llvm.sh:

# Скачиваем скрипт.
wget https://apt.llvm.org/llvm.sh

# Делаем скрипт исполняемым.
chmod +x llvm.sh 

# Запускаем скрипт с правами суперпользователя и указываем, что 
# хотим установить Clang 17-й версии.
sudo ./llvm.sh 17 
Версия ClangВерсия стандарта
3.3C++11
3.4C++14
5C++17
6-19**C++20*
13-19**C++23*

Подробнее *Поддержка этих стандартов до сих пор неполная **Различные фичи языка реализованы только в более поздных версиях.

Среда разработки (IDE)

Среда разработки – вторая программа по важности после компилятора. Если вы, конечно, не мазохист, чтобы писать в блокноте.

Visual Studio

Бесплатная

Visual Studio – IDE от Microsoft для продуктов Microsoft, то есть для Windows. Имеет бесплатное Community издание.

Для установки Visual C++ нам необходимо установить пакет Microsoft C++ Build Tools по ссылке:

Нажмите на кнопку Download Build Tools

...

Visual Studio Code

...

CLion

Платная, 118 долларов США в год или 12 в месяц (около 12 000 и 1 250 рублей)

CLion – IDE от Jetbrains, доступная на трёх основных платформах: Windows, Linux и Mac.

Code::Blocks

...