• A
  • A
  • A
  • АБB
  • АБB
  • АБB
  • А
  • А
  • А
  • А
  • А
Обычная версия сайта
Бакалавриат 2018/2019

Лингвистическое и программное обеспечение автоматизированных систем

Лучший по критерию «Полезность курса для расширения кругозора и разностороннего развития»
Лучший по критерию «Новизна полученных знаний»
Направление: 09.03.01. Информатика и вычислительная техника
Когда читается: 3-й курс, 3, 4 модуль
Формат изучения: без онлайн-курса
Язык: русский
Кредиты: 5

Программа дисциплины

Аннотация

Предлагаемая дисциплина ориентирована на формирование у студентов знаний о формальных языках и грамматиках, методах их порождения, анализа и разбора, устройстве компиляторов и интерпретаторов, информации, ее видах, представлении в памяти компьютера, способах ее хранения, преобразования и передачи, навыков логического и системного мышления для решения поставленной инженерной задачи. При этом акцент делается на изучение основ информатики. Одной из целей данной дисциплины является формирование у студента базовых знаний в областях теории формальных языков, конечных автоматов, математической логики, теории информации и кодирования, теории компиляторов и т.д., а также навыков по использованию современных инструментов для повседневной деятельности инженера в области вычислительной техники.
Цель освоения дисциплины

Цель освоения дисциплины

  • изучение основ и математического аппарата теории формальных языков;
  • изучение основ проектирования трансляторов различного вида;
  • изучение приёмов разработки современных трансляторов;
  • изучения методов и технологий разработки программного обеспечения;
  • изучения жизненного цикла существования программного обеспечения;
  • изучения современных инструментальных средств разработки программного обеспечения.
Планируемые результаты обучения

Планируемые результаты обучения

  • подходы к проектированию структуры трансляторов;
  • технологию разработки программного обеспечения, управляемого данными;
  • математический аппарат теории формальных языков;
  • основы теории компиляторов;
  • современные технологии разработки программного обеспечения;
Содержание учебной дисциплины

Содержание учебной дисциплины

  • Введение в теорию компиляторов
    История развития компиляторов и теории компиляторов. Виды и состав трансляторов, назначение и возможности основных блоков транслятора. Определение основных понятий.
  • Регулярные грамматики
    Понятие грамматики, цепочки, сентенциальной формы. Классификация языков и грамматик. Формы Бэкуса-Науэра (БНФ). Правила записи грамматик в БНФ. Примеры построения грамматик.Регулярные выражения и конечные автоматы (КА). Методы разбора предложений с использованием КА. Регулярные выражения. Построение регулярных выражений. Детерминированный КА (ДКА), недетерминированный КА (НКА). Методы автоматической генерации КА по регулярному выражению, построения ДКА по НКА, оптимизации КА.
  • Контекстно-свободные грамматики.
    Понятия нисходящего и восходящего разбора. Преобразования КС-грамматик. Автоматы с магазинной памятью. Методы диагностики ошибок. Структура синтаксического анализатора. Предсказывающий анализатор. LL(1)-грамматики. Метод разбора с использованием LL(1)-анализатора. Методы построения LL(1)-анализатора. LR(k)-грамматики. LALR(1)-грамматики. Нисходящий разбор с возвратами. Разбор с использованием LL(1), LR(1) и LALR(1) грамматик. Методы построения таблицы разбора. Компиляторы компиляторов. Язык YACC. Метод написания программы разбора с использованием YACC.
  • Синтаксически управляемая трансляция
    Таблицы типов и символов. Лексический анализатор. Выделение лексем: типов, переменных, констант и пр. Целевая стековая машина. Генерация кода для многоадресного процессора при помощи грамматик. Генерация кода для арифметического выражения. Генерация кода для процессора 80386. Машинозависимая и машинонезависимая оптимизация. Оптимизация кода. Генерация оптимальных конструкций в ходе генерации кода. Генерация кода для логических выражений, циклов. Понятие абстрактного синтаксического дерева (АСТ). Генерация и оптимизация кода с использованием АСТ.
  • Функциональные языки программирования.
    Парадигма функционального программирования. Операторы функциональных языков. Методы представления данных в функциональных языках. Интерпретация функциональной программы.
  • Практические приложения теории компиляторов в других областях.
    Обеспечение качества программных кодов методами теории компиляторов. Статический анализ кода Обеспечение качества программных кодов методами теории компиляторов. Динамический анализ кода
Элементы контроля

Элементы контроля

  • неблокирующий Домашняя работа
  • неблокирующий Практическая работа
  • блокирует часть оценки/расчета Экзамен
Промежуточная аттестация

Промежуточная аттестация

  • Промежуточная аттестация (4 модуль)
    0.25 * Домашняя работа + 0.25 * Практическая работа + 0.5 * Экзамен
Список литературы

Список литературы

Рекомендуемая основная литература

  • Пентус А.Е., Пентус М.Р. - Математическая теория формальных языков - Национальный Открытый Университет "ИНТУИТ" - 2016 - 218с. - ISBN: 5-9556-0062-0 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/100633

Рекомендуемая дополнительная литература

  • Вирт Н. - Построение компиляторов - Издательство "ДМК Пресс" - 2010 - 192с. - ISBN: 978-5-94074-585-3 - Текст электронный // ЭБС ЛАНЬ - URL: https://e.lanbook.com/book/1262