Бакалавриат
2025/2026




Разработка компиляторов
Статус:
Курс по выбору (Прикладная математика и информатика)
Где читается:
Факультет компьютерных наук
Когда читается:
3-й курс, 3, 4 модуль
Охват аудитории:
для своего кампуса
Язык:
русский
Кредиты:
6
Контактные часы:
80
Программа дисциплины
Аннотация
Курс посвящён разработке компиляторов и инженерии языков программирования. Студенты изучат основные этапы построения современных компиляторов — синтаксический и семантический анализ, промежуточные представления, оптимизации и генерацию кода. Практическая часть курса состоит в поэтапной разработке собственного компилятора для учебного языка программирования. Полученные знания применимы в системном программировании, разработке языков и рантаймов, виртуальных машин, статического анализа, а также при работе с индустриальными компиляторными инфраструктурами и инструментами оптимизации.
Цель освоения дисциплины
- Цели изучения дисциплины — формирование у студентов профессиональных компетенций в области методов, инструментов и процессов разработки компиляторов.
Планируемые результаты обучения
- Знать основные методы конструирования компиляторов
- Знать что такое компилятор, как он устроен, какая часть отвечает за что
- Знать принципы работы компиляторов и интепретаторов
Содержание учебной дисциплины
- Введение в компиляторы и языки программирования
- Роль компилятора, этапы компиляции, обзор архитектуры компиляторной системы
- Лексический анализ и синтаксический разбор
- Формальные грамматики, токенизация, построение парсеров, абстрактное синтаксическое дерево
- Представление программ и абстрактный синтаксис
- AST, структуры данных для представления программ, обходы и трансформации
- Семантический анализ
- Области видимости, таблицы символов, проверка типов, статические ошибки
- Промежуточное представление программ и граф потока управления
- Трёхадресный код, базовые блоки, CFG, введение в SSA-подобные представления
- Анализы потоков данных
- Формулировка анализов, прямые и обратные задачи, распространение констант, достижимые определения
- Оптимизации программ
- Удаление мёртвого кода, локальные и глобальные оптимизации, оптимизации на уровне IR
- Генерация кода и выполнение программ
- Отображение IR на целевую модель выполнения, генерация исполняемого кода
Промежуточная аттестация
- 2025/2026 4th module0.4 * Проект 2 + 0.1 * Проект 1 + 0.3 * Проект 3 + 0.2 * Экзамен
Список литературы
Рекомендуемая основная литература
- Вирт, Н. Построение компиляторов / Н. Вирт. — Москва : ДМК Пресс, 2010. — 192 с. — ISBN 978-5-94074-585-3. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/1262 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Золкин, А. Л. Конструирование компиляторов: анализ и синтез в сфере искусственного интеллекта : учебное пособие для вузов / А. Л. Золкин. — Санкт-Петербург : Лань, 2025. — 176 с. — ISBN 978-5-507-52290-3. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/482951 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Малявко, А. А. Формальные языки и компиляторы : учебник для вузов / А. А. Малявко. — Москва : Издательство Юрайт, 2025. — 429 с. — (Высшее образование). — ISBN 978-5-534-04288-7. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/562822 (дата обращения: 14.01.2026).
- Малявко, А. А. Формальные языки и компиляторы : учебное пособие для вузов / А. А. Малявко. — Москва : Издательство Юрайт, 2024. — 429 с. — (Высшее образование). — ISBN 978-5-534-04288-7. — Текст : электронный // Образовательная платформа Юрайт [сайт]. — URL: https://urait.ru/bcode/538879 (дата обращения: 04.07.2025).