Компьютерные науки

Разработка компиляторов

В программе рассматриваются теоретические основы и практические методы создания компиляторов языков программирования на базе языка C# и инструментов платформы .NET.
Студентов 2669 Выпускников 919 Для специалистов
690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.
Темы:
Программирование
Объем

36 час.
Длительность

30 дней
Нагрузка в неделю

9 час.
Формат обучения

Дистанционно (самостоятельно)
Описание Учебная программа посвящена архитектуре и полному циклу разработки компиляторов с использованием платформы .NET. В учебной программе изучаются основы теории формальных языков и грамматик, реализация лексического, синтаксического и семантического анализаторов. Детально разбираются построение внутреннего представления кода, анализ потоков управления, алгоритмы оптимизации, сборка мусора и генерация исполняемого MSIL-кода. Учебная программа ориентирована на разработчиков, которым важно глубоко понять принципы функционирования языков программирования и механизмы трансляции кода.
Цели
  • Сформировать понимание архитектуры и принципов работы компиляторов.
  • Дать теоретическую базу формальных грамматик и языков.
  • Познакомить с методами оптимизации и генерации исполняемого кода.
Чему я научусь?
  • Реализовывать лексические и синтаксические анализаторы.
  • Проводить семантический анализ и строить внутреннее представление кода.
  • Генерировать MSIL-код и применять алгоритмы оптимизации.

Авторы

Булычев Дмитрий Юрьевич
Булычев Дмитрий Юрьевич
Вояковская Наталья Николаевна
Вояковская Наталья Николаевна
Москаль Антон Евгеньевич
Москаль Антон Евгеньевич
Терехов Андрей Андреевич
Терехов Андрей Андреевич
Чему я научусь?
  • Реализовывать лексические и синтаксические анализаторы.
  • Проводить семантический анализ и строить внутреннее представление кода.
  • Генерировать MSIL-код и применять алгоритмы оптимизации.

Учебный план

Занятия
Экзамен экстерном Внимание! Экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите подтвердить свои знания по данному курсу без его изучения или поверить свои знания по нему. Экзамен экстерном можно сдать только один раз. 90 мин
1 Введение и обзор платформы .NET "В введении рассматриваются цели и задачи данного курса, его структура и рамки, а также говорится об... "В введении рассматриваются цели и задачи данного курса, его структура и рамки, а также говорится об необходимых предварительных знаниях, которые потребуются для полноценного понимания курса. В первой лекции обсуждаются следующие вопросы: общая идея архитектуры .NET ещё
Введение и обзор платформы .NET тест для курса Разработка компиляторов 60 мин
2 Обзор языка C# Основные идеи создания C#. Базовые конструкции языка. Препроцессор C#. Системные и пользовательские атрибуты. Опасный код в... Основные идеи создания C#. Базовые конструкции языка. Препроцессор C#. Системные и пользовательские атрибуты. Опасный код в C#. Описание языка C-бемоль, являющегося подмножеством C#. ещё
Обзор языка C# тест для курса Разработка компиляторов 60 мин
3 Основы компиляторов "Основные понятия. Компиляторы и интерпретаторы. Входной язык, целевой язык, язык реализации. T-диаграммы. Прямой компилятор. Раскрутка. Кросс-трансляторы.... "Основные понятия. Компиляторы и интерпретаторы. Входной язык, целевой язык, язык реализации. T-диаграммы. Прямой компилятор. Раскрутка. Кросс-трансляторы. Виртуальные машины. Компиляция ""на лету""." ещё
Основы компиляторов тест для курса Разработка компиляторов 60 мин
4 Теория языков "Различные способы задания языков в компиляции: грамматики
Теория языков тест для курса Разработка компиляторов 60 мин
5 Лексический анализ Основные задачи лексического анализа. Регулярные выражения. Использование конечных автоматов для лексического анализа. Утилита Lex. Использование механизма... Основные задачи лексического анализа. Регулярные выражения. Использование конечных автоматов для лексического анализа. Утилита Lex. Использование механизма регулярных выражений .NET ещё
Лексический анализ тест для курса Разработка компиляторов 60 мин
6 Синтаксические анализаторы. Нисходящие анализаторы Синтаксический анализ. Контекстно-свободные грамматики. Нисходящие анализаторы. Метод рекурсивного спуска.
Синтаксические анализаторы. Нисходящие анализаторы тест для курса Разработка компиляторов 60 мин
7 Восходящие анализаторы Восходящие анализаторы. LR (k)-анализаторы. Построение LR (0)-анализатора. LR (1)-анализатор. LALR-анализаторы. Неоднозначные грамматики. Различные типы конфликтов. Разрешение... Восходящие анализаторы. LR (k)-анализаторы. Построение LR (0)-анализатора. LR (1)-анализатор. LALR-анализаторы. Неоднозначные грамматики. Различные типы конфликтов. Разрешение конфликтов. ещё
Восходящие анализаторы тест для курса Разработка компиляторов 60 мин
8 Грамматики и YACC Генератор анализаторов YACC
Грамматики и YACC тест для курса Разработка компиляторов 60 мин
9 Семантический анализ. Внутреннее представление "Фаза контроля типов. Идентификация. Работа с таблицами. Идентификация. Работа с типами. Причины использования промежуточных языков в... "Фаза контроля типов. Идентификация. Работа с таблицами. Идентификация. Работа с типами. Причины использования промежуточных языков в компиляторах. Различные формы промежуточных языков (ПЯ) в компиляторах:атрибутные деревья разбора ещё
Семантический анализ. Внутреннее представление тест для курса Разработка компиляторов 60 мин
10 Управление памятью и сборка мусора Управление памятью с точки зрения разработчика компилятора. Проблемы управления памятью. Статическое и динамическое размещение памяти. Стековый... Управление памятью с точки зрения разработчика компилятора. Проблемы управления памятью. Статическое и динамическое размещение памяти. Стековый механизм управления памятью. Управление кучей. Подсчет ссылок и разметка памяти. Управление памятью в .NET. ещё
Управление памятью и сборка мусора тест для курса Разработка компиляторов 60 мин
11 Оптимизация Задачи оптимизации. Виды оптимизирующих преобразований. Представления программы, используемые в оптимизирующих преобразованиях. Примеры оптимизирующих преобразований.
Оптимизация тест для курса Разработка компиляторов 60 мин
12 Анализ потока управления Задачи анализа потока управления. Граф потока управления. Доминирование. Глубинное остовное дерево. Основные виды фрагментов графа потока... Задачи анализа потока управления. Граф потока управления. Доминирование. Глубинное остовное дерево. Основные виды фрагментов графа потока управления и их свойства. ещё
Анализ потока управления тест для курса Разработка компиляторов 60 мин
13 Анализ потоков данных Определение анализа потоков данных. Достижимые определения и живые переменные. Формализация задач анализа потоков данных. Итеративный алгоритм... Определение анализа потоков данных. Достижимые определения и живые переменные. Формализация задач анализа потоков данных. Итеративный алгоритм для решения задач анализа потоков данных. ещё
Анализ потоков данных тест для курса Разработка компиляторов 60 мин
14 Генерация MSIL Основные свойства MSIL. Пример генерации MSIL по программе на Cи-бемоль. Механизм рефлексии в .NET (на примере).... Основные свойства MSIL. Пример генерации MSIL по программе на Cи-бемоль. Механизм рефлексии в .NET (на примере). Процесс генерации MSIL. ещё
Генерация MSIL тест для курса Разработка компиляторов 60 мин
15 Выбор инструкций при генерации кода Постановка задачи выбора оптимальных инструкций. Деревянные языки. Деревянные грамматики. BURS и ее приложения.
Выбор инструкций при генерации кода тест для курса Разработка компиляторов 60 мин
16 Приложение. Описание языка C Конструкции и грамматика языка С-бемоль
Тренировочный экзамен Внимание! Тренировочный экзамен экстерном не обязательный для сдачи. При желании вы можете его пройти, если хотите проверить свои знания курса перед сдачей экзамена. Тренировочный экзамен можно сдавать сколько угодно один раз. 90 мин
Экзамен 60 мин

Какой документ я получу?

Сертификат

Выдаётся автоматически после успешного завершения программы.

Удостоверение о повышении квалификации

Выдается при наличии среднего специального или высшего образования (необходимые документы).

Стоимость программы

690 ₽ 1 200 ₽
или любая сумма на ваше усмотрение
Вы можете оплатить любую сумму, чтобы поддержать наш проект и авторов программы. Объем услуг не зависит от размера вашей оплаты.