Это начало статей курса языков С и С++. Пока только покажу весь зоопарк компиляторов и версий языков, вкратце укажу на их плюсы и недостатки. Установим основные средства разработки, а также скомпилируем первую программу
Для кого эти статьи
В первую очередь эти статьи рассчитаны на новичков, столкнувшимися с языком С++ в первый раз, но, полагаю, и опытные разработчики смогут подчерпнуть что-то новое. А дополнения, пожелания и критику можно ввести в комментарии или отправить на почтовый адрес автора
Главная цель — предоставить структурированное изложение о том что такое С и С++. Надеюсь что это поможет уменьшить количество ситуаций когда ничего не работает и не ясно почему.
Структура
Подход будет весьма специфичен, но я считаю что это лучший вариант:
- Введение, обзор, и изучение языка Си. Изучение особенностей языка Си
- Продвинутая общая информация, что касается как языка Си, так и языка С++
- Изучение особенностей С++
Языки Си и С++ тесно связаны друг с другом.
(добавить указатель типа языка статьи)
Оба эти языка — стандарт разработки с низким уровнем доступа к памяти. Когда разрабатывается ядро системы, прошивка микроконтроллера, или очередной драйвер устройства, используется либо С++, либо С
Начинаем обучение с языка Си из-за его главного плюса — простоты. После перейти на С++ будет уже не так трудно
Компилятор
Программа, это текст. Написанный по особым правилам, но это всё-же, ещё текст. Его нельзя запустить. Тут есть несколько моментов:
- Нам необходим способ запуска текста
- Нам желательно иметь способ проверки и исправления текста
Пока остановимся на пункте 1, а для создания файлов будем использовать блокнот (да, да, разработка на С++ в блокноте).
Создай файл raw.c в пустой папке, и вставь в него следующее содержимое:
int printf(const char *, ...);
int main(){
printf("Hello World!\n");
}
Это наша первая программа, не стоит думать пока о том как она работает, для начала её нужно запустить. Для этого нужен компилятор
Немного о подвидах
Есть разные компиляторы. Лично я, зачастую, говоря C/C++ я подразумеваю именно диалект GCC, поскольку на практике GCC extensions — чуть ли не часть самого С++
У других компиляторов свои условности, но они весьма редко используются, так-что я рекомендую просто использовать GCC. Тут немного подробнее:
➨Про clang, IAR и другие
Конечно, в этом мире есть и другие компиляторы: IAR - компилятор твоего дедушки. Чертовски стар. Порой используется из-за бюрократии. Многие деды до сих пор топят то что он безопаснее и лучше оптимизирован чем GCC (так было в 2007). SEGGER Compiler - см. IAR. Clang - Клон GCC, разработка Apple, попытка превратить мир в огромный iPhone. Лицензия позволяет создавать на его основе другие проприетарные компиляторы. Создан потому-что GCC запрещает использовать свой код для создания других закрытых компиляторов. Имеет удобные утилиты, например clang-format (спасибо Apple за финансирование). Утилиты так-же работают и с GCC. MSVC - Родной компилятор Windows. Имеет несовместимости с GCC, Используется так-же редко как и сервера на Windows. Не рекомендуется ввиду своей специфики и узкой зоны применимости. Small Device C Compiler - Популярный компилятор для некоторых слабых платформ (8051, Z80, STM8).
Установка GCC под Linux (1 минута)
Для этого достаточно ввести в консоль: sudo apt-get install build-essential
Установка GCC под Mac (2 минуты)
Установить «Command Line Tools for Xcode» с сайта разработчиков Apple
Установка GCC под Widnows (5-10 минут)
Тут не так всё приятно. Этот гайд и как и большинство софта заточены под GCC, для следования ему у тебя есть два варианта.
Вариант номер 1: Установить Mac/Linux
Вариант номер 2: Установить MinGW через MSYS2
➨Подробные шаги установки через MSYS2
1. Скачать и установить подсистему MSYS2. Запомни путь установки 2. Запустить MSYS2 и в окне ввести команду:pacman -Syu
2.5 На все запросы отвечать yes/all 3. Закрыть и открыть MSYS2 заново. ввести команду:pacman -Su
4. По окончанию ввести команду:pacman -S --needed base-devel mingw-w64-x86_64-toolchain mingw-w64-x86_64-cmake mingw-w64-x86_64-ninja
5. Пока устанавливается или после, добавить папку C:\msys64\mingw64\bin (зависит от пути установки) в PATH системы Делается это в разделе "Изменение системных переменных среды" панели управления. Проще всего её открыть через поиск пуска. Далее скриншоты с тем как найти нужное место:


Для того чтобы было удобнее запускать консоль, в папке можно создать (или скачать) файл console.bat с следующим содержимым:
@echo off
cmd
Компиляция и запуск
Для начала стоит проверить что компилятор установлен. Открываем консоль и вводим gcc --version успешный результат должен выглядеть примерно так:

Это значит что наш компилятор успешно установлен. Для компиляции кода достаточно теперь ввести gcc имя-файла . это создаст исполняемый фал с именем a (такое имя — традиция). Мы сможем его запустить. Здесь показан результат исполнения прошлого файла raw.c :

Да, этого достаточно для того чтобы создать программу!
Подвиды языков С и С++
Перед тем как перейти к самому синтаксису, стоит упомянуть о том что существуют разные версии языка. Тут небольшой итог:
- C89 C90 — Древнейшая дичь, не используй её, просто знай что она есть и избегай её.
- MISRA C — Вариант Си для бюрократов
- C99 C11 — Приемлемые компиляторы. исправлены грубейшие ошибки прошлых версий
- C17 — Фикс ошибок C11. Используется современными компиляторами по умолчанию. Отлично подходят для обучения
- C++98 C++03 — См. С89. Также древнейшие ужасные версии С++. Не рекомендуется трогать.
- C++11 C++14 — Более свежие и жизнеспособные версии. Огромные исправления.
- C++17 — На данный момент один из самых оптимальных вариантов С++ — огромное количество полезных нововведении, большинство компиляторов поддерживают его и проверены. После изучения Си, рекомендуется использовать именно его.
- C++20 — Более свежий стандарт. Пока не все компиляторы успешно его поддерживают. Имеет несколько хороших нововведений, но не критично отличается от C++17. Нет такой огромной разницы как между C++17 / С++11 / С++03
Просто если ты вдруг увидишь что что-то иногда компилируется, а иногда нет — знай: это либо из-за специфики компилятора, либо из-за версии языка
Что дальше?
Впереди ждет достаточно много статей, не только о том как устроен язык С/С++, но и о том как настроить окружение разработки. А начнется всё это с создания самых простых программ.