Разбираемся, кому и для чего подходит C++, какие инструменты для работы с ним самые востребованные. Устанавливаем и настраиваем базовые инструменты, а также пробуем написать и запустить простую программу. В конце статьи — список полезных ресурсов для новичков, которые помогут понять, насколько вам подходит язык.
Кто создал C++
Билл Гейтс начал программировать в школьные годы, обучаясь в привилегированной школе. Марк Цукерберг в десять лет получил в подарок компьютер и начал изучать программирование.
У автора языка C++ Бьерна Страуструпа старт не был блестящим. Его родители были бедны. Он учился в худшей школе города. Он не знал, в какой области развиваться. Страуструп как-то признался, что попал на курс информатики в университете по ошибке, перепутав его с математикой. Ошибка стала большим везением как для самого Бьерна, так и для множества программистов со всего мира.
В 80-е годы Страуструпу понадобилось написать программу моделирования распределенных вычислений для фирмы Bell Labs. К тому времени он изучил более двадцати языков программирования, но ни один не подходил для задачи.
Тогда он решил разработать объектно-ориентированный язык на основе синтаксиса Си. В 1985 году он презентовал свою разработку в книге «Язык программирования C++».
В чем отличие C++ от других языков
C++ используют в финтехе, разработке игр, для создания программ разной сложности: от простых утилит до масштабных систем. C++ сложно назвать языком для новичков, в простоте он уступает популярному Python. Однако у C++ есть особенности, которые делают его более гибким.
Большие возможности и большая ответственность. Многие современные языки, такие как C#, Java, Ruby обеспечивают управление памятью и проверки безопасности без участия программиста, на уровне компилятора. Но Страуструп считает это не преимуществом, а уязвимостью, от которой страдает и безопасность, и быстродействие. В C++ все контролирует автор программы.
Объектно-ориентированность. Концепция ООП была реализована еще в Simula67. Но по-настоящему популярным подход стал благодаря работам Страуструпа.
Универсальность и гибкость. C++ разрабатывался как язык для широкого круга задач, от программирования микроконтроллеров до систем любой сложности. Страуструп предполагал, что для разработки потребуются многочисленные библиотеки с нужными классами и функциями.
Основы синтаксиса C++
Программа состоит из инструкций. Инструкция (statement) выполняет какое-то действие. После инструкции в C++ ставится знак «;».
Например:
std::cout << "мой текст";
Несколько инструкций, заключенных в фигурные скобки, составляют блок кода:
{                          
    std::cout << "мой текст";    
    std::cout << "еще текст";                       
}
Здесь cout — это стандартный выходной поток. В C++ нет готовых средств ввода-вывода, для этого используют объектно-ориентированную библиотеку iostream.
Чтобы компилятор подключил библиотеку, требуется директива:
#include <iostream>
Iostream определяет три стандартных потока:
- cin — входной поток (stdin в C);
 - cout — выходной поток (stdout в C);
 - cerr — поток вывода сообщений об ошибках (stderr в C).
 
Они находятся в пространстве имен (namespace) std. Чтобы использовать их без префикса std::, можно предварительно применить инструкцию:
using namespace std;
Для ввода-вывода переопределены две операции:
- >> — получить из входного потока;
 - << — поместить в выходной поток.
 
Вывод на консоль выглядит так:
using namespace std; cout << значение;
Значение — это данные определенного типа. Тип данных определяет, какие операции с ними можно производить и сколько байт в памяти они занимают.
Основные типы данных в C++:
- int — целочисленный тип данных;
 - float — тип данных с плавающей запятой;
 - double — тип данных с плавающей запятой двойной точности;
 - char — символьный тип данных;
 - bool — логический тип данных
 
Попробуем написать «Hello, world!». Программа на C++ обязательно включает функцию main. С нее начинает работу программа. Тело функции — это блок кода. После имени в круглых скобках следует список параметров. Если параметры не нужны, скобки пустые. Функция возвращает значение определенного типа.
Так выглядит заголовок функции main без параметров, возвращающей целое число:
int main()
В конце тела функции нужен оператор return и возвращаемое значение. Обычно 0 — признак успешного завершения.
return 0;
Так выглядит программа вывода сообщения «Hello, world!»:
#include <iostream>              
using namespace std;
int main()                          
{                          
    cout << "Hello world";    
    return 0;                      
} 
Что нужно для программирования на C++
Запуск оnline
Можете набрать в Google «Online-компиляторы для C++» и выбрать любой. Но для многих нужна регистрация, настройки и пр.
По ссылке вы попадете сразу на нужную страницу. В окне справа уже будет пример кода вывода приветствия миру:

Нажмите кнопку «Run» — зеленую со стрелочкой слева вверху. В нижней части экрана увидите результат — сообщение «Hello, world!».
Работа с C++ на локальном компьютере
Устанавливаем и проверяем компилятор
Согласно опросу Jetbrains, самый популярный набор компиляторов для разных операционных систем — GCC с компилятором g++ для языка C++.
Воспользуемся пакетом средств для разработки MSYS2, который включает GCC. Скачаем и запустим msys2-x86_64-20230718.exe:

Выбираем флажки для меню Пуск, и пакет устанавливается. Когда установка закончится, запустится консоль MSYS2.exe, если такой пункт был выбран. Можно запустить usrt_64.exe из папки указанного при установке каталога.
Чтобы установить набор компиляторов GCC, наберем в консоли команду pacman -S mingw-w64-x86_64-gcc.
Пакетный менеджер начнет устанавливать пакет компиляторов. Не забудьте ответить Y на запрос:

Желательно сразу установить отладчик. Для этого набираем в консоли MSYS2 команду pacman -S mingw-w64-x86_64-gdb и также отвечаем Y.
Теперь в каталоге C:\msys64\ucrt64\bin есть файл компилятора g++.exe. Добавляем путь к нему в Переменные среды. В окне поиска в Windows вводим «изменение переменных среды» .

Изменяем переменную Path: добавляем путь C:\msys64\ucrt64\bin. Теперь мы сможем скомпилировать и запустить программу на C++. Создаем файл hello.cpp с текстом нашей программы из прошлого раздела в любом текстовом редакторе:
#include <iostream>              
using namespace std;
int main()                          
{                          
    cout << "Hello world";    
    return 0;                      
}
Помещаем его в папку C:\HELLO_CPP.
Осталось скомпилировать. Открываем командную строку Windows. Для этого можно ввести текст «командная строка» в окне поиска в Windows. Переходим в нужную папку с помощью команды cd C:\HELLO_CPP и запускаем компиляцию g++ hello.cpp -o hello.
В первом параметре указан файл с кодом, который надо скомпилировать. У нас получилось готовое приложение, можно его запускать. Набираем hello.

Программа работает!
Выбираем среду для разработки на C++
Конечно, набирать весь код в обычном текстовом редакторе и вручную компилировать и запускать неудобно. Потребуется специальное ПО для разработки.
Спор между сторонниками редакторов кода и IDE не разрешен. Использование редактора более соответствует философии C++, где все контролирует программист. Также встречается мнение, что редактор больше подходит для обучения, позволяет вникнуть в детали. В интернете много обзоров редакторов кода, например этот.
В то же время, необходимость работы со множеством библиотек и фреймворков, работа в команде и многие другие причины побуждают использовать мощные IDE. Рейтинг для C++ можно посмотреть здесь.

Настраиваем Visual Studio Code для C++
Как скачать и установить Visual Studio Code, рассказываем по ссылке. При установке выбирайте 64-битный System Installer.
Теперь нужно настроить VS Code для работы с компилятором и отладчиком для C++, которые установили на предыдущем этапе.
Сначала установите расширение для работы с C++. Нажмите на значок «Extensions» слева и в строке поиска плагинов наберите C++. Убедитесь, что плагин с описанием «C/C++ IntelliSense, debugging, and code browsing» установлен, или установите его, нажав «Install».

Закройте программу VS Code и запустите ее из командной строки командой code .. Убедитесь, что в текущей папке создан каталог с настройками .vscode.
Теперь нужно создать каталог .vscode в папке C:\HELLO_CPP с исходным кодом, на котором проверяли компилятор. В каталоге создаем файлы настроек в формате JSON. Удобно использовать как редактор VS Code.

Файл tasks.json отвечает за то, чтобы работала комбинация клавиш Ctrl+shift+B для сборки программы. Убедитесь, что указан правильный путь к компилятору g++.exe, который установили с пакетом MSYS2:
{
    "version": "2.0.0",
    "tasks": [
        {
            "type": "shell",
            "label": "g++.exe build active file",
            "command": "C:/msys64/mingw64/bin/g++.exe",
            "args": [
                "-std=c++17",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\msys64\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": "build"
        },
        {
            "type": "cppbuild",
            "label": "C/C++: g++.exe build active file",
            "command": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "args": [
                "-fdiagnostics-color=always",
                "-g",
                "${file}",
                "-o",
                "${fileDirname}\\${fileBasenameNoExtension}.exe"
            ],
            "options": {
                "cwd": "C:\\msys64\\mingw64\\bin"
            },
            "problemMatcher": [
                "$gcc"
            ],
            "group": {
                "kind": "build",
                "isDefault": true
            },
            "detail": "Task generated by Debugger."
        }
    ]
}
Файл launch.json отвечает за работу отладчика. Проверьте правильность пути к отладчику gdb.exe:
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "g++.exe build and debug active file",
            "type": "cppdbg",
            "request": "launch",
            "program": "${fileDirname}\\${fileBasenameNoExtension}.exe",
            "args": [],
            "stopAtEntry": false,
            "cwd": "${workspaceFolder}",
            "environment": [],
            "externalConsole": false,
            "MIMode": "gdb",
            "miDebuggerPath": "C:\\msys64\\mingw64\\bin\\gdb.exe",
            "setupCommands": [
                {
                    "description": "Enable pretty-printing for gdb",
                    "text": "-enable-pretty-printing",
                    "ignoreFailures": true
                }
            ],
            "preLaunchTask": "g++.exe build active file",
            "internalConsoleOptions": "neverOpen"
        }
    ]
}
Файл c_cpp_properties.json отвечает за расположение include-файлов. Также проверьте правильность пути:
{
    "configurations": [
        {
            "name": "Win32",
            "includePath": [
                "${workspaceFolder}/**",
                "C:/msys64/mingw64/include/**"
            ],
            "defines": [
                "_DEBUG",
                "UNICODE",
                "_UNICODE"
            ],
            "windowsSdkVersion": "8.1",
            "compilerPath": "C:\\msys64\\mingw64\\bin\\g++.exe",
            "cStandard": "c11",
            "cppStandard": "c++17",
            "intelliSenseMode": "gcc-x86"
        }
    ],
    "version": 4
}
Пробуем запустить ранее созданный код из hello.cpp. Открываем файл. Разворачиваем список возле стрелки справа вверху и выбираем режим запуска без отладки — Run C/C++ File.

Теперь нажмем на стрелку, и программа выполнится.
Выбираем режим отладки Debug C/C++ File, нажимаем на значок отладки слева, чтоб включить панель отладки, и запускаем снова. Отлично, отладчик тоже работает.

Ресурсы для изучения C++
В интернете много ресурсов для самостоятельного изучения основ C++.
Основы C++ от Академии Яндекса — на курсе рассматривают базовые конструкции, стандартную библиотеку и идиомы C++. По каждой теме есть разбор задач.
В более подробном руководстве по языку C++ есть информация про основы синтаксиса, указатели, функции, работу со строками, алгоритмами и контейнерами.
Если хотите разобраться подробно и начать с основ, почитайте книги автора языка Бьерна Страуструпа:
- «Язык программирования C++»;
 - «Дизайн и эволюция языка C++»;
 - «Программирование. Принципы и практика использования C++»
 
Если после бесплатных курсов язык вам понравится, захочется программировать на нем, можно записаться на коммерческие курсы. Под руководством менторов и с понятным расписанием вы пройдете путь с нуля до специалиста по C++.
		
						
	