Разработчик++: курс С++20 [2024]
Слёрм
Дмитрий Сердюк
Продвинутый курс по С++. Работаем со стандартом С++20 и не только. Создадим собственный проект — многопоточный сетевой микросервис. Даем материал и практику, которые вы не найдете ни в каком другом курсе по С++ на русском языке.
Научим решать задачи на современном C++:
- Best practice: разберем, что точно работает, а от каких практик стоит отказаться
- Многопоточному и сетевому программированию, объектно-ориентированному программированию и метапрограммированию шаблонов
- Выбирать инструменты под задачу: объясним, как устроены эти инструменты
- Работе со стандартом С++20: даем материал и подходы, которые не представлены на курсах в русскоязычном образовательном сегменте
- Работать с кодом: писать простой и понятный код, тестировать, оптимизировать, читать чужой код, проводить и проходить код-ревью
- Проходить технические собеседования и решать стандартные задачи, которые задают специалистам при трудоустройстве
- Исключения
- Лямбды
- Аллокаторы
- Умные указатели
- Сокеты
- Паттерны ООП
- Контейнеры алгоритмы
- Инструменты и библиотеки для тестирования и отладки
- Инструменты обобщенного программирования
- Инструменты многопоточности
- Шаблоны и вариативные шаблоны
- Инструменты мультиплексирования
1. Для тех, кто хочет разобраться в С++ и укрепить свои знания в разработке
Курс подойдет для специалистов, которые уже работают с C++, но хотели бы получить больше экспертной информации. Мы идем от простых тем к самым сложным и помогаем нашим студентам стать уверенными middle-специалистами по С++.
2. Для специалистов, работающих со стандартом С++20Спикеры курса построили программу с учетом последнего стандарта. Если вы работали С++17, то на курсе вы сможете познакомиться с актуальными возможностями языка и применять их в текущих рабочих задачах.
3. Тем, кто переходит в C++ из других языков программированияПродукты, написанные на C++, окружают человека: на нем пишут серверные бэкенды, код под встроенные устройства, операционные системы, драйверы устройств, высокопроизводительные серверы, игры.
4. Для компаний, которые ведут разработку на С++Эксперты Слёрм обучат ваших коллег best practice и будут сопровождать студентов на первых шагах в разработке. Вы сможете сформировать свой штат специалистов, работающих на С++.
На курсе вы создадите несколько проектов на основе С++:
- Контейнер с нестандартным алгоритмом поиска/вставки
- Аллокатор с управлением памятью и умный указатель со счетчиком ссылок к нему
- Собственный пул потоков для выполнения отложенных задач
- Итоговый проект представляет собой вариацию тестовых заданий на должность Middle-разработчика С++. Вы создадите многопоточный сетевой микросервис, самостоятельно разработав и имплементировав его протокол, тесты к нему и правильно организовав репозиторий и механизм сборки.
- Работать со стандартом С++20: научимся работать с корутинами, концептами, ренджами
- Имплементировать нетривиальные контейнеры и алгоритмы к ним
- Выбирать контейнеры и инструменты стандартной библиотеки под задачу
- Управлять памятью, использовать умные указатели и аллокаторы
- Создавать многопоточные приложения, приложения с высокой производительностью
- Разрабатывать сетевые приложения
- Применять паттерны ООП при разработке и проектировании приложения, распознавать их в чужом коде
- Проектировать, отлаживать, профилировать и деплоить собственные приложения
- Разрабатывать и читать шаблонный код
Модуль 1 - Профессиональный C++
- Система типов, квалификаторы, выведение, преобразование (явное/неявное), ссылки (lvalue и rvalue), move и forward, structure binding, decltype, typeid, type_traits;
- Числовые типы, их представление, битовые операции, приведение, common_type, numeric_traits
- Функции и функторы, перегрузка, лямбды, указатели на функции и члены, С++20 шаблонные лямбды, С++20 ниблоиды
- Обработка ошибок, исключения, noexcept, std::exception_ptr, stack unwinding, RAII
- Компиляция, оптимизация, линковка, static, static inline, constexpr/constinit/consteval
- STL, стандарты, документация
- Работа с отладчиком, профилировщиком и средой, стектрейс
- Инструменты, тестирование, инструменты сборки (make, cmake, meson)
- Контейнеры I: общий обзор и сравнение, типы, итераторы, валидность
- Контейнеры II: последовательные, списки, очереди
- Контейнеры III: деревья и хеш-таблицы
- Итераторы: адаптеры, range-for, написание итераторов, traits
- Алгоритмы I: O-нотация, виды поиска, вставки, по контейнерам
- Алгоритмы II: сортировки
- Ренджи (С++20) I: абстракции, концепты STL, алгоритмы
- Ренджи (С++20) II: views и адаптеры
- Устройство памяти в железе и ОС
- Ссылки, стек, срок жизни
- Указатели, куча, аллокация
- Умные указатели
- Низкоуровневая работа с памятью
- Виды параллелизма
- Многопоточность I: уровень ОС, thread/jthread
- Многопоточность II: примитивы синхронизации
- Многопоточность III: тред-пулы и promise/future
- Модель памяти С++
- Программирование без блокировок
- Корутины (С++20)
- Примитивы ОС, сокеты Беркли
- Мультиплексирование IO, select, poll, epoll
- Кросплатформенные библиотеки boost::asio, libevent, libev, libuv
- Классы
- Динамический полиморфизм
- Статический полиморфизм
- Применение ООП I: базовые паттерны (синглтон, фасад и PIMPL, итератор, посетитель)
- Применение ООП II: продвинутые паттерны (фабрика, адаптер, ...), объектная архитектура приложения
- Типы шаблонов и принципы
- Вариативные шаблоны
- Программирование на этапе компиляции
- Работа с типами
- Концепты (С++20)
- Итоговый проект представляет собой вариацию тестовых заданий на должность Middle-разработчика С++
- Подведем итоги курса, ответим на последние вопросы
Продажник