Магистратура
2023/2024
Языки программирования и компиляторы
Статус:
Курс обязательный (Компьютерные системы и сети)
Направление:
09.04.01. Информатика и вычислительная техника
Кто читает:
Департамент компьютерной инженерии
Когда читается:
1-й курс, 3, 4 модуль
Формат изучения:
без онлайн-курса
Охват аудитории:
для своего кампуса
Преподаватели:
Карпов Юрий Глебович,
Шульгин Михаил Алексеевич
Прогр. обучения:
Компьютерные системы и сети
Язык:
русский
Кредиты:
6
Контактные часы:
80
Программа дисциплины
Аннотация
Курс даёт информацию об общем устройстве компиляторов. Он дает начальное введение в область языков программирования, компиляторов и других языковых инструментов. Будут сформулированы некоторые основные понятия и подходы в данной области, такие, как операционная семантика языков программирования, промежуточное представление программ, интерпретация, преобразования программ и т.д. Студенты познакомятся с базовыми идеями и методами, используемыми при создании современных компиляторов, а также получат практические навыки написания простых компиляторов. Предполагается, что слушатели в процессе выполнения заданий к концу курса реализуют полноценный компилятор в машинный код для простого, но вполне функционального языка императивного программирования.
Цель освоения дисциплины
- освоение формальных моделей и алгоритмов, а также практических приемов и методов, которые лежат в основе современных подходов к разработке компиляторов формальных языков;
- начальный опыт применения этих концепций и техник при разработке своего собственного компилятора.
Планируемые результаты обучения
- знать основные этапы разработки компилятора;
- уметь при компиляции обрабатывать ветвления, циклы, функции;
- владеть алгоритмами работы сборщика мусора при разработке компилятора.
- Знание утилит лексического анализа языка flex и синтаксического анализа BIZON
Содержание учебной дисциплины
- Формальные языки. Грамматики. КА
- Теория конечных автоматов-распознавателей
- Регулярные множества и регулярные выражения
- BDD: Binary Decision Diagrams
- Трансляция автоматных языков
- Язык Милан и стековая машина
- Порождающие грамматики Хомского
- Атрибутные трансляции и двусмысленные КС-грамматики
- Атрибутная семантика
- Трансляция арифметических выражений
- Конечные автоматы
- Синтаксический анализ. s-грамматики. Санация КС-грамматик
- Грамматики рекурсивного спуска
Промежуточная аттестация
- 2023/2024 4th module0.3 * Курсовая работа + 0.3 * Курсовая работа + 0.1 * Самостоятельная работа + 0.1 * Самостоятельная работа + 0.2 * Экзамен
Список литературы
Рекомендуемая основная литература
- Sharan, K. (2017). Beginning Java 9 Fundamentals : Arrays, Objects, Modules, JShell, and Regular Expressions (Vol. Second edition). [Berkeley, CA]: Apress. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1632186
- Князьков, В. С. Введение в теорию автоматов : учебное пособие / В. С. Князьков, Т. В. Волченская. — 2-е изд. — Москва : ИНТУИТ, 2016. — 89 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/100715 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
Рекомендуемая дополнительная литература
- Драгилева, И. П. Автоматы и алгоритмы : методические рекомендации / И. П. Драгилева, А. С. Митин. — Москва : РТУ МИРЭА, 2022. — 21 с. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/265646 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.
- Эриксон, Д. Алгоритмы : руководство / Д. Эриксон , перевод с английского А. В.Снастина, П. Б. Иванова. — Москва : ДМК Пресс, 2023. — 526 с. — ISBN 978-5-97060-981-1. — Текст : электронный // Лань : электронно-библиотечная система. — URL: https://e.lanbook.com/book/348125 (дата обращения: 00.00.0000). — Режим доступа: для авториз. пользователей.