Скидка до 60% и курс в подарок 2 дня 09 :56 :09 Выбрать курс
Код
#Руководства

C++ для новичков — что за язык программирования и как писать программы: первая часть гайда

Разбираемся, как устроен язык программирования C++, что такое программы и как научиться их писать.

Иллюстрация: Polina Vari для Skillbox Media

Чтобы начать программировать с нуля, не нужны специальные знания — достаточно базовых навыков работы на компьютере: устанавливать программы, создавать и находить файлы и папки. Это первая статья из серии «Глубокое погружение в C++»: с неё вы начнёте разбираться в языке и сделаете первые шаги к профессии разработчика серверных приложений и игр.

Не пугайтесь большого объёма информации: чем лучше вы разберётесь в базовых принципах, тем проще будет писать код. Для C++ это особенно важно: чтобы программа работала быстро, нужно понимать, что происходит «под капотом» — как расходуется память и как команды выполняются процессором.

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

Содержание


Что такое язык программирования

Сам по себе компьютер — это лишь набор электронных компонентов, который не понимает человеческие команды. Поэтому, чтобы он что-то сделал, нужно дать ему программу — чёткий пошаговый список инструкций: откуда взять данные, что с ними сделать и куда после этого отправить результат.

Компьютер понимает только машинный код — специальный язык, который очень сложно читать и писать вручную. Например, вот как выглядит вывод надписи «Hello, World!» на машинном коде (в шестнадцатеричном виде):

BB 11 01 B9 0D 00 B4 0E 8A 07 43 CD 10 E2 F9 CD 20 48 65 6C 6C 6F 2C 20 57 6F 72 6C 64 21

Чтобы не писать программы в виде наборов чисел, люди придумали языки программирования — в них те же действия записываются более читаемыми словами и конструкциями, понятными человеку. Одним из первых стал ассемблер — вот как на нём выглядит тот же вывод «Hello, World!»:

        mov bx, 0111h
        mov cx, 000Dh
        mov ah, 0Eh
print:  mov al, [bx]
        inc bx
        int 10h
        loop print
        int 20h
HW      db 'Hello, World!'

Всё равно сложно, правда? Поэтому со временем появились высокоуровневые языки — на них программы пишутся гораздо быстрее и читаются почти как обычный текст. Например, весь «Hello, World!» на Python — это одна строка:

print("Hello, World!")

Чтобы такой код заработал, его сначала нужно превратить в инструкции, понятные процессору. В одних языках это делают заранее: программу компилируют в машинный код. В других — команды переводятся и выполняются прямо во время запуска с помощью программы-интерпретатора.

Это лишь один способ разделить языки. Есть и другой — по тому, насколько язык близок к железу. Те, что работают почти на уровне машинного кода, называют низкоуровневыми, а понятные человеку — высокоуровневыми.

C++ интересен тем, что это высокоуровневый и при этом компилируемый язык с прямым низкоуровневым доступом к памяти и железу. Благодаря этому на нём достаточно удобно писать — и программы получаются очень быстрыми.

Как работают программы

Практическая любая программа делает три вещи: получает данные, затем что-то с ними делает и в конце выдаёт результат. Эти данные могут прийти от пользователя, загрузиться из файла или быть заранее заданными в коде.

Возьмём для примера браузер. Данные на входе — введённый вами адрес сайта. Браузер по доменному имени определяет нужный сервер, отправляет запрос и получает в ответ HTML-разметку, стили, скрипты и картинки. А на выходе получается страница, которая собрана из этих частей у вас на экране.

Большие программы обычно собирают из подпрограмм — небольших блоков инструкций, каждая со своей задачей. В том же браузере одна подпрограмма принимает адрес, другая находит сервер и отправляет запрос, третья получает ответ, четвёртая рисует страницу. Посмотрите на логику такой подпрограммы.

Инфографика: Skillbox Media

Полученный результат можно вернуть пользователю, записать в файл или передать другой подпрограмме. Вот ещё один пример — команда в терминале:

magick img.jpg img.png

Эта команда запускает утилиту ImageMagick, которая конвертирует изображение img.jpg в формат PNG и сохраняет результат в файл img.png.

Сегодня слово «подпрограмма» вы услышите нечасто: обычно говорят «функция», «процедура» или «метод». Но по сути это одно и то же — небольшой блок кода со своим именем и конкретной задачей. Вам достаточно написать его один раз, а потом вызывать по имени столько раз, сколько нужно.

Для чего нужен C++

C++ — мощный и универсальный язык программирования, который разработчики ценят прежде всего за скорость. Он появился ещё в начале 1980-х как развитие языка C: к скорости и «низкоуровневым» возможностям предшественника добавилась работа с классами и объектами, а также множество других полезных инструментов. Главная фишка C++ — сочетание высокой скорости с гибкостью, поэтому его в первую очередь выбирают для задач, где важны производительность и контроль над ресурсами компьютера.

Вот лишь несколько областей, где C++ применяют чаще всего:

  • Игры и графика. C++ широко используют в геймдеве, потому что он даёт высокую производительность и полный контроль над ресурсами. На нём создают движки (например, Unreal Engine), ключевые части игр — рендеринг, физику, ИИ — и тяжёлые графические приложения.
  • Системное ПО. Операционные системы, браузеры, базы данных, компиляторы — всё, где нужны максимальная скорость и надёжность.
  • Встраиваемые системы. Микроконтроллеры, бытовая техника, автомобили, робототехника, умные устройства — везде, где есть ограниченные ресурсы и необходим прямой доступ к железу.
  • Высоконагруженные и наукоёмкие задачи. Проекты, где нужна максимальная производительность: финансовые сервисы и торговые платформы, вычисления для науки и инженерии, системы обработки больших данных и ключевые модули библиотек машинного обучения.

Пишем и запускаем первую программу на C++

По традиции первая программа на любом новом языке выводит на экран надпись «Hello, World!». На C++ она выглядит так:

#include <iostream>
int main()
{
std::cout << "Hello, World!\n";
}

Давайте запустим этот код, а затем разберём, как он работает.

Запускаем программу онлайн

Проще всего сделать это через онлайн-сервис, где код на C++ компилируется и запускается прямо в браузере — ничего не нужно устанавливать. Например, зайдите на JDoodle, вставьте код в окно редактора и нажмите Execute.

Скриншот: JDoodle / Skillbox Media

Запускаем программу на компьютере

Если вы хотите запустить код прямо на компьютере, понадобится установить компилятор. Самый популярный — G++ из набора инструментов GCC, его и будем использовать. Способ установки зависит от операционной системы:

  • Windows — проще всего через окружение MSYS2. Установите его, откройте терминал MSYS2 UCRT64 (он ставится вместе с MSYS2) и затем выполните команду pacman -S mingw-w64-ucrt-x86_64-gcc.
  • Linux — скорее всего, компилятор уже есть в системе. Если нет, установите его через менеджер пакетов: sudo apt install g++ (Ubuntu/Debian), sudo dnf install gcc-c++ (Fedora), sudo pacman -S gcc (Arch/Manjaro).
  • macOS — выполните в терминале xcode-select --install.

После установки введите в терминал команду g++ --version. Если всё прошло успешно, вы увидите название и версию компилятора.

Так выглядит ответ на команду g++ --version в Manjaro Linux. На скриншоте видно название и версию компилятора — значит, всё установлено верно
Скриншот: Manjaro Linux / Skillbox Media

После установки компилятора нужно подготовить файл с кодом. Создайте отдельную папку для проекта и в ней — файл hello.cpp. Далее откройте hello.cpp в любом удобном редакторе кода и вставьте код нашей программы.

После этого прямо в редакторе кода откройте терминал и выполните команду:

g++ hello.cpp -o hello

Эта команда скомпилирует код из файла hello.cpp в исполняемый файл с именем hello (в Windows — hello.exe). Если ошибок нет, команда выполнится без сообщений — просто появится новый файл. Теперь запустите программу:

./hello

На скриншоте ниже — запущенная программа в Antigravity IDE.

Скриншот: Google Antigravity IDE / Skillbox Media

Теперь, когда программа запускается, разберёмся, как она устроена.

Из чего состоит программа на C++

Начнём с самой первой строчки:

#include <iostream>

Здесь #include — это команда компилятору подключить к программе библиотеку, а <iostream> в угловых скобках — её название.

Переходим к следующей части кода:

int main()
{
	...
}

Разберём эту строку по частям:

  • int — тип данных, которые возвращает функция;
  • main — идентификатор, то есть имя этой самой функции;
  • круглые скобки () — в них указывают входные параметры функции, однако если параметров нет, скобки оставляют пустыми;
  • фигурные скобки { } — внутри находится тело функции, то есть набор команд, которые выполняются при её вызове.

main () — это функция, с которой начинается выполнение любой программы на C++. Её ещё называют точкой входа.

Сами подпрограммы мы разберём подробнее в следующих статьях. Сейчас достаточно знать, что все команды записываются в тело функции.

Настало время понять, как работают команды:

std::cout << "Hello, World!\n";

Эта строка тоже состоит из нескольких частей:

  • std — пространство имён, к которому относится команда;
  • cout — команда вывода;
  • << — оператор вывода, он передаёт текст команде cout;
  • «Hello, World!» — текст, который нужно вывести;
  • \\n — символ переноса строки;
  • ; — точка с запятой в конце.

Команда std: cout выводит текст в консоль — в нашем примере это «Hello, World!». Текст обязательно берётся в двойные кавычки "...", иначе компилятор воспримет его не как сообщение, а как имя переменной или функции (идентификатор). Попробуйте самостоятельно изменить текст в кавычках, заново запустить программу и посмотреть, как изменится вывод.

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

Пространства имён (например, std) группируют команды из библиотек, чтобы их названия не конфликтовали между собой. Подробнее о них мы тоже поговорим в следующих статьях.

Плюсы и минусы C++

Как и у любого инструмента, у C++ есть сильные и слабые стороны. Для начала давайте перечислим все основные преимущества:

  • Высокая производительность. Программы на C++ работают очень быстро — практически на уровне машинного кода.
  • Контроль над ресурсами. Язык даёт прямой доступ к памяти и железу, что во многих случаях критически важно для требовательных приложений.
  • Универсальность. На C++ можно создавать самые разные программы под любую платформу — от прошивок для микроконтроллеров до серверов и настольных приложений. Исключение — фронтенд, где правит JavaScript, а C++ подключают разве что через WebAssembly для тяжёлых вычислений.
  • Зрелость и экосистема. Язык развивается десятилетиями, поэтому для него есть огромное количество библиотек и готовых решений.
  • Востребованность. Хорошие разработчики на C++ нужны всем.

Теперь перейдём к недостаткам:

  • Высокий порог входа. Язык большой и сложный — новичку придётся освоить немало понятий, прежде чем писать серьёзные программы.
  • Ручное управление памятью. Это мощный инструмент, но из-за него легко допустить ошибку — например, утечку памяти или незаметный баг.
  • Строгость к ошибкам. Некоторые ошибки в коде проявляются не сразу и ведут себя непредсказуемо, поэтому их бывает довольно сложно найти.
  • Многословность. В C++ приходится явно прописывать множество деталей — типы данных, структуру программы и так далее. Из-за этого даже простые задачи требуют больше кода, чем, например, на Python.
  • Долгая сборка. Чем больше проект, тем больше файлов и зависимостей нужно скомпилировать и связать. Поэтому сборка может длиться несколько минут, а её настройка будет неочевидной для новичков.

Хоть недостатки и звучат серьёзно, переживать из-за них не стоит. С большинством сложностей вы столкнётесь только на крупных проектах — а к тому времени уже наберётесь опыта и будете знать, как их решать. К тому же современный C++ стал удобнее и безопаснее, чем его версия из 2000-х. Поэтому осваивать его можно спокойно, не пытаясь заучить всё и сразу.

На этом всё. Для первого раза этих основ вполне достаточно, чтобы сделать первые шаги, — остальное придёт с практикой. В следующей части мы также подробно разберём, как программа получает данные и где их хранит.

Больше интересного про код — в нашем телеграм-канале. Подписывайтесь!

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Курс с трудоустройством: «Профессия Разработчик С++
 с нуля + ИИ» Узнать о курсе
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована