Является дисциплиной по выбору. Метавычисления — это раздел программирования, посвященный разработке методов анализа и преобразования программ за счет реализации конструктивных метасистем (метапрограмм) над программами. Метавычисления в первую очередь включают теорию суперкомпиляции и близкие методы и средства. В рамках изучения дисциплины студенты получат представление об основных принципах метавычислений и суперкомпиляции, научатся применять их для реализации частичных вычислителей и суперкомпиляторов. Для освоения дисциплины студентам необходимы знания, полученные в результате изучения дисциплин «Функциональное программирование», «Компиляторы», «Семантики языков программирования».
Цель освоения дисциплины
Формирование у студентов теоретических знаний и практических навыков по основам анализа языков программирования, разработке метавычислителей для различных языков программирования.
Освоение методов статического и динамического анализов, семантического анализа, абстрактной интерпретации.
Планируемые результаты обучения
Знает основные понятия и факты теорий языков программирования и метавычислений, такие, как проекции Футамуры–Ершова–Турчина, разбиение программ, самоприменение, компиляция, семантика и семантический анализ, типы, анализ потока данных, анализ времени связывания, завершаемость, безопасность, специализация, суперкомпиляция, абстрактная интерпретация и другие.
Умеет реализовывать различные виды метавычислителей для функциональных и императивных языков программирования.
Имеет навыки в анализе программ и языков программирования.
Содержание учебной дисциплины
Раздел 1. Введение в метавычисления
Раздел 2. Специализация программ
Раздел 3. Критерии программной специализации
Раздел 4. Суперкомпиляция
Элементы контроля
Экзамен
Устный экзамен проводится в форме ответов на вопросы экзаменационного билета. Экзаменационный билет содержит два вопроса из перечня вопросов к экзамену. На подготовку ответа выделяется 2,5 часа.
Домашнее задание №3
Домашнее задание №3 выдается студентам в одном варианте и состоит в реализации суперкомпилятора для академического функционального языка. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
Домашнее задание №1
Домашнее задание №1 выдается студентам в одном варианте и состоит в реализации специализатора для простого императивного языка программирования. Из задачи выделяется 5 основных подзадач, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
Домашнее задание №2
Домашнее задание №2 выдается студентам в одном варианте и состоит в реализации специализатора для простого функционального языка программирования. Из задачи выделяется 4 основных подзадачи, выполняемых обязательно последовательно друг за другом, поскольку каждая последующая подзадача основана на предыдущей. Срок на выполнение каждой подзадачи – одна неделя. Форма представления обучающимися домашнего задания — своевременная публикация решения в репозиторий.
Промежуточная аттестация
2025/2026 2nd module
Преподаватель учитывает оценку за текущий контроль (домашние задания).
Онакопленная = (Одз/1 + Одз/2 + Одз/3) / 3
Результирующая оценка за дисциплину рассчитывается следующим образом:
Орезультирующая = 0,5*Онакопленная + 0,5*Оэкзамен
Список литературы
Рекомендуемая основная литература
Pierce, B. C. (2002). Types and Programming Languages. Cambridge, Mass: The MIT Press. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=70966
Рекомендуемая дополнительная литература
Cardoso, J. M. P., & Diniz, P. C. (2009). Compilation Techniques for Reconfigurable Architectures. New York, NY: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=275651
Draheim, D. (2017). Semantics of the Probabilistic Typed Lambda Calculus : Markov Chain Semantics, Termination Behavior, and Denotational Semantics. Berlin, Germany: Springer. Retrieved from http://search.ebscohost.com/login.aspx?direct=true&site=eds-live&db=edsebk&AN=1479832
Instructor
Akhtyamov, Pavel
Программа дисциплины
Аннотация
Цель освоения дисциплины
Планируемые результаты обучения
Содержание учебной дисциплины
Элементы контроля
Промежуточная аттестация
Список литературы
Рекомендуемая основная литература
Рекомендуемая дополнительная литература
Авторы