Курс на Stepik
Обложка курса «Современный язык Си (стандарт C23)» на Stepik
999 ₽

Современный язык Си (стандарт C23) 0.000

Открыть на
STEPIK.ORG

Курс по языку C для инженеров, которые уже пишут системный код на другом языке. Мы разбираем C23 — nullptr, constexpr, typeof, атрибуты, stdckdint.h, stdbit.h, #embed — и параллельно собираем работающее key-value хранилище с сетевым сервером: формат на диске, восстановление после сбоя, фоновая компакция, событийный цикл на epoll.

Показатель Текущие показатели Рост
Значение 🏆 Рейтинг 3 дн 7 дн 30 дн
Количество учеников на курсе «Современный язык Си (стандарт C23)»Учеников на курсе 1
Сертификаты, выданные на курсе «Современный язык Си (стандарт C23)»Сертификатов выдано 0
Отзывы о курсе «Современный язык Си (стандарт C23)»Отзывов получено 0
Рейтинг курса «Современный язык Си (стандарт C23)»Рейтинг курса 0.000
Уроки в курсе «Современный язык Си (стандарт C23)»Количество уроков 143
Тесты в курсе «Современный язык Си (стандарт C23)»Количество квизов 84
Стоимость курса «Современный язык Си (стандарт C23)»Стоимость курса 999 ₽
Обновления курса «Современный язык Си (стандарт C23)»Обновления курса
Дата публикации курса «Современный язык Си (стандарт C23)»Дата публикации курса
Последнее обновление курса «Современный язык Си (стандарт C23)»Последнее обновление
Сложность hard

Содержание курса

Разделы в курсе «Современный язык Си (стандарт C23)» 16 разделов Уроки в курсе «Современный язык Си (стандарт C23)» 143 урока Тесты в курсе «Современный язык Си (стандарт C23)» 84 теста Последнее обновление курса «Современный язык Си (стандарт C23)» обн. 11 сентября 2026

C23 для системного разработчика

8 уроков
1. Что мы строим: nestor
2. Компилятор, стандарт и единица трансляции
3. main, аргументы и коды возврата
4. Что изменилось в C23
5. Объявления, определения, области видимости и связывание
6. Заголовки и раздельная компиляция
7. Выражения, операторы, точки следования
8. Практика: скелет проекта nestor

Типы, объекты и представление данных

9 уроков
1. Объектная модель C: объект, значение, тип
2. Целые типы: char, short, int, long, long long
3. Точные типы из stdint.h и печать их
4. Преобразования типов и usual arithmetic conversions
5. Литералы C23: 0b, разделители, суффиксы
6. constexpr-объекты и enum с фиксированным типом
7. typeof, typeof_unqual и auto
8. Выравнивание, alignas, alignof и представление
9. Практика: типы записи nestor

Целочисленная арифметика и защита от переполнения

9 уроков
1. Знаковое и беззнаковое переполнение
2. Что оптимизатор делает с UB
3. stdckdint.h: ckd_add, ckd_sub, ckd_mul
4. Биты: сдвиги, маски, битовые поля
5. stdbit.h: подсчёт битов, степени двойки
6. _BitInt(N) и точная ширина
7. Хеш-функции для хранилища
8. CRC32C и целостность данных
9. Практика: безопасные размеры и хеш в nestor

Указатели, массивы и время жизни

9 уроков
1. Указатели: модель, арифметика, сравнение
2. Массивы, распад и передача в функции
3. nullptr, nullptr_t и NULL
4. const, volatile, restrict
5. Указатели на функции и таблицы диспетчеризации
6. Массивы переменной длины и variably-modified типы
7. Время жизни, висячие указатели, escape
8. Строгий алиасинг и type punning
9. Практика: слайсы памяти в nestor

Агрегаты: структуры, объединения, компоновка

9 уроков
1. Структуры: паддинг, размер, порядок членов
2. Инициализация агрегатов в C23
3. Объединения и активный член
4. Гибкий член массива
5. Помеченные объединения и моделирование вариантов
6. Непрозрачные типы и инкапсуляция
7. Компоновка данных для кэша
8. Сериализация структур на диск
9. Практика: формат сегмента nestor

Функции, ABI и модульность

9 уроков
1. Прототипы и объявления функций в C23
2. Передача параметров, стек и регистры
3. Вариативные функции
4. Атрибуты C23 в API
5. inline, static, extern и связывание
6. Проектирование C API библиотеки
7. Обратные вызовы и пользовательские данные
8. Стек, рекурсия и хвостовые вызовы
9. Практика: публичный API libnestor

Препроцессор и метапрограммирование

9 уроков
1. Препроцессор: фазы, включения, замена
2. Макросы: гигиена и типичные дефекты
3. Вариативные макросы и __VA_OPT__
4. _Generic и выбор по типу
5. X-макросы и кодогенерация
6. Условная компиляция и определение окружения
7. #embed: ресурсы в бинарнике
8. Отладочные и диагностические макросы
9. Практика: слой логирования nestor

Ошибки, контракты и защитное программирование

9 уроков
1. Коды возврата вместо исключений
2. errno и системные ошибки
3. static_assert и проверки на этапе компиляции
4. assert, NDEBUG и unreachable()
5. Освобождение ресурсов: goto cleanup
6. Атрибут cleanup и RAII-подобные приёмы
7. Инварианты и контракты в C-коде
8. Нехватка памяти и деградация
9. Практика: система ошибок nestor

Строки, байты и кодировки

9 уроков
1. Строки C: устройство, цена, границы
2. Замены небезопасных функций
3. Слайсы вместо нуль-терминированных строк
4. Форматирование: snprintf, %b и позиционные типы
5. Разбор чисел и границ
6. UTF-8, char8_t и многобайтовые строки
7. Порядок байтов и кодирование чисел
8. Побайтовые операции и безопасное стирание
9. Практика: разбор протокола nestor

Динамическая память и аллокаторы

9 уроков
1. malloc, free и что внутри
2. calloc, realloc и ловушки C23
3. Выровненное выделение, free_sized, free_aligned_sized
4. Арена-аллокатор
5. Пул объектов фиксированного размера
6. Владение и передача ответственности
7. Утечки, двойное освобождение, use-after-free
8. mmap и работа с виртуальной памятью
9. Практика: арена и пул в nestor

Файлы, дескрипторы и ввод-вывод POSIX

9 уроков
1. stdio против системных вызовов
2. open, read, write и частичные операции
3. Позиционный ввод-вывод: pread и pwrite
4. Долговечность: fsync, fdatasync, O_DSYNC
5. Атомарная замена файла и каталог
6. mmap для чтения данных
7. Каталоги, метаданные и обход
8. Блокировки и режим одного писателя
9. Практика: сегменты данных nestor

Сборка, компоновка и инструментарий

9 уроков
1. Этапы трансляции и флаги компилятора
2. Объектные файлы, символы, разрешение имён
3. Статические и динамические библиотеки
4. Видимость символов и ABI
5. Make: правила, зависимости, инкрементальность
6. CMake для проекта на C23
7. Установка, pkg-config, дистрибуция
8. Переносимость и кросс-компиляция
9. Практика: сборочная система nestor

Отладка, санитайзеры и профилирование

9 уроков
1. GDB для системного кода
2. AddressSanitizer и LeakSanitizer
3. UndefinedBehaviorSanitizer
4. ThreadSanitizer и Valgrind
5. Статический анализ
6. perf: где уходит время
7. Кэш, ветвления и микрооптимизация
8. strace, ltrace и наблюдение за системными вызовами
9. Практика: диагностируем баг в nestor

Тестирование, фаззинг и CI

9 уроков
1. Юнит-тесты без фреймворка
2. Табличные тесты и параметризация
3. Подмена зависимостей в C
4. Тесты свойств и генерация данных
5. Фаззинг
6. Тесты на отказ: сбои диска и памяти
7. Бенчмарки и измерение времени
8. Непрерывная интеграция
9. Практика: тестовый контур nestor

Конкурентность: потоки, атомики, lock-free

9 уроков
1. Модель памяти C11/C23
2. Потоки: threads.h и pthreads
3. Мьютексы, условные переменные, очередь задач
4. Атомики и порядки памяти на практике
5. Lock-free структуры: SPSC-очередь
6. thread_local, call_once, барьеры
7. Масштабирование и ложное разделение
8. Отладка конкурентности
9. Практика: фоновая компакция nestor

Сеть, событийный цикл и продакшн

9 уроков
1. Сокеты: bind, listen, accept
2. Неблокирующий ввод-вывод и epoll
3. Буферы соединения и backpressure
4. Протокол nestor
5. Сигналы, signalfd и graceful shutdown
6. Конфигурация, логи и метрики
7. Ограничения ресурсов и защита от перегрузки
8. Развёртывание
9. Практика: запускаем nestord под нагрузкой