Создан: апрель 2019
Прочитан для магистров первого и второго года обучения механико-математического факультета филиала МГУ им. М.В. Ломоносова в городе Ташкенте.
- весна/2019
- осень/2020
- осень/2021
- осень/2023
Кафедра МаТИС.
Задачи для самостоятельного решения
Вопросы для проведения аттестации
Список воспроизведения с лекциями
- Автору блога http://scrutator.me
- Алексееву Дмитрию Владимировичу
- Алисейчику Павлу Александровичу
- Гасанову Эльяру Эльдаровичу
- Калугину-Балашову Дмитрию Андреевичу
(2021) Содержание:
- Анализ требований
- Процесс разработки
- Борьба со сложностью
- Архитектура
- Создание ПО - человеческая деятельность
- Методология повторного использования
- Тестирование
- Документация
(2021) Содержание:
- Новые регулярные слова
- Проверка инвариантов времени компиляции и времени выполнения
- Типизированные перечисления
- Тривиальный тип данных и тип со стандартным размещением
- RAII и утечки ресурсов
- Исправление шаблонов
- Константа нулевого указателя
- Нововведения в STL
- Управление потоками
(2021) Содержание:
- Обратно совместим ли С++ c ANSI/ISO Сu?
- Как вызвать Cu/C++ функцию из Cu/C++?
- Как включить Cи заголовок в коде на C++?
- Почему компоновщик (linker) выдаёт ошибки?
- Искажение имён
- Как передать объект класса Cu/C++ в/из Cu/C++?
- Различия C99 и современный С++
(2021) Содержание:
- Полиморфизм динамический vs статический
- CRTP. Curiously Recurring Template Pattern
- MixIn вариации
- std::enable_shared_from_this
Видео-лекция (извините за звук):
Видео-лекция (2019) (старая версия, может, лучше звук):
Лекция 3.1 — polymorphisms.pdf
(2021) Содержание:
- Единообразная инициализация
- Запрет на “сужение” типа
- Конструирование
- Операторы выравнивания адресов в памяти
- Свойства выражений (lvalue и rvalue)
- Семантика перемещения (move-semantic)
- Специальные методы перемещения класса
- Совершенная передача (perfect-forwarding)
- Передача аргументов функций по ссылке или по значению
- std::decay
(2021) Содержание:
- C++11 auto, decltype
- C++11 lambda-функции
- Списко захвата (capture list)
- Функторы
- std::function
- std::bind
- Обобщённая лямбда-функция
(2021) Содержание:
- Авто-вывод типа возвращаемого значения функций
- Обобщённые (полиморфные) лямбда-выражения
- Нововведения в STL
- Обособленные строки и пользовательские литералы
- std::optional и std::exception_ptr
- std::complex
Тест для самопроверки для 5 и 5.1
(2021) Содержание:
- Шаблоны языка С++
- Variadic Templates
- Пишем класс DiscriminatedPtr
- Применение в виде std::tuple
Лекция 6 — variadic template.pdf
(2021)
Тест для самопроверки для 6 и 6.1
(2019) Содержание:
- Продвинутые подходы мета-программирования
- Пишем вместе std::tuple правильно!
(2021) Содержание:
- SFINAE
- Lazy initialization
- PImpl
- TypeErasure
- std::any
- std::function
Тест для самопроверки для 7 и 7.1
(2021) Содержание:
- Свёртка variadic templates
- Вывод шаблонных аргументов
- Структурное связывание
- constexpr if
- Новый порядок выполнения инструкций
- Copy elision
- Атрибуты C++
(2019) Содержание:
- Заморозка нововведений (2019) для стандарта языка С++ 2020 г.
- Исчерпывающий список нововведений с объяснением некоторых новых механизмов
(2021) Содержание:
- Процесс, его свойства и классификация
- Создание процессов, copy-on-write
- Иерархия и аттрибуты процессов unix
- Жизненный цикл процесса unix (fork + exec)
- Поток исполнения, его свойства и аттрибуты
- С++11: std::thread
- Мьютексы
- Условные переменные
- Барьеры
- Асинхронность (std::promise, std::future, std::async)
Лекция 9 — Процесс и поток.pdf
(2019) Содержание:
- Подходы управления памятью
- Ручное управление памятью
- Memory pool
- Garbage collection
- Ошибки памяти на языке С++
- Самая опасная функция в С/С++
- Область применения аллокаторов
- Как написать свой аллокатор?
- std::allocator
- Allocator С++03
- Allocator С++11
- Allocator С++17
- Polymorphic memory resource (PMR)
- Polymorphic Allocator
(2021) Содержание:
- Пишем свой умный указатель
- std::unique_ptr
- std::shared_ptr
- std::weak_ptr
Лекция 10.1 — smart-pointers.pdf
(2021) Содержание:
- Boost
- Boost.Log
- Boost.Test
- Boost.Signals2
- Boost.Algorithm
- Boost.TypeTraits
- Boost.Filesystem
- Boost.Serialization
- Boost.Numeric
- Boost.Graph
- Boost.Regex
- Boost.MetaStateMachine
- Boost.Spirit
- Boost.PropertyTree
- Boost.Pool
- Boost.PointerContainer
- Boost.ScopeExit
(2021) Содержание:
- boost-test
- google-test
- visual-studio native unit-test
- visual-studio test-explorer
- code-coverage: lcov
Лекция 11.1 — Тесты, покрытие кода.pdf
(2019) Содержание:
- Обзор
- Дизайнерские идеи
- Особенности
- Примеры
- Обоснование конструкции
Лекция 12 — boost geometry.pdf
(2021) Содержание:
- Сокеты Беркли
- IPv4, IPv6
- networking
- TCP, UDP, HTTP
- server-client
- Мультиплексирование
- select, poll, epoll, kqueue
(2021) Содержание:
- libevent
- libev
- boost.asio