Курс на 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)»Учеников на курсе 3
Сертификаты, выданные на курсе «Современный язык Си (стандарт 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 под нагрузкой ↗