ФНТИ
Карта сайта

Теория компиляторов
Карпов В.Э.(ктн., доцент, вице-президент Российской ассоциации искусственного интеллекта)

  1. Введение. Предмет курса и его связь со смежными дисциплинами.
    1. Архитектура ЭВМ. История развития вычислительной техники. Автоматически управляемые вычислительные машины.
    2. Организация памяти. Элементная база ЭВМ. Структура и принципы организации машин фон-неймановской архитектуры. Современные тенденции развития вычислительной техники. Машины не-фон-Неймановской архитектуры. Параллельные машины. Нейрокомпьютеры. Машины искусственного интеллекта.
  2. Основные понятия и определения. Терминология. Ассемблер и автокод. Логическая структура компилятора. Процесс компиляции. Основные части компилятора Понятие синтаксического и семантического анализа. Многопроходные компиляторы.
  3. Формальные системы и языки программирования. Принципы описания и задания языков. Формальные грамматики.
  4. Иерархия Хомского. Регулярные и ОК-грамматики. Форма Бэкуса-Наура.
  5. Регулярные грамматики. Конечные автоматы. Формальное определение. Детерминированные и недетерминированные конечные автоматы
  6. Программирование сканера. Регулярные выражения и конечные автоматы. Структура сканера.
  7. Организация таблиц символов. Хеш-функции, хеш-адресация. Способы решения задачи коллизии. Рехеширование.
  8. Контекстно-свободные грамматики. Ок-грамматики. Синтаксический анализ и генерация промежуточных форм представления программы.
    1. Схема синтаксически управляемого перевода.
    2. Автоматы с магазинной памятью.
    3. Операторные грамматики (грамматики простого предшествия).
    4. Матрицы переходов.
  9. Внутренние формы представления исходной программы. Польская форма. Тетрады.
  10. Оптимизация программ. Оптимизация линейных участков, циклов и условий.
  11. Интерпретаторы. Принципы построения. Особенности интерпретируемых языков. Компиляторы компиляторов.
  12. Генерация объектного кода. Генерация кодов арифметических выражений. Система адресации. Объектные модули и компоновка. Объектный язык. Регистры. Модификация адресов. Принципы построения общесистемных ассемблеров. Основные конструкции и алгоритмы.
  13. Отладчики Общие принципы отладки программ. Технологии отладки. Трассировка и контрольные точки. Отладка в интегрированных средах.
  14. Макросы. Макрокомады и макроопределения. Макроязык и макропроцессор. Реализация макропроцессоров. Однопросмотровые и двупросмотровые алгоритмы. Макроассемблеры.
  15. Загрузчики. Принципы организации памяти. Выделение памяти различным типам данных. Динамическое распределение. Схемы загрузки. Абсолютные и настраивающие загрузчики. Связывание подпрограмм. Принципы проектирования загрузчиков. Алгоритм работы загрузчика.

Объектно-ориентированное программирование

  1. Современные системы управления сложными объектами основаны на применении высокотехнологичных приемов и методов программирования, одним из которых является объектно-ориентированное программирование (ООП). Несмотря на то, что история ООП насчитывает уже более 20 лет, основные тенденции современного программирования остаются неизменными. Изучению общих принципов объектно-ориентированного программирования и получению навыков практического применения ООП при создании сложных программных комплексов и посвящена настоящая дисциплина.
  2. Курс разбит на 2 части. Первая часть посвящена основам программирования на, пожалуй, единственном "настоящем" на данный момент времени объектно-ориентированном языке – языке Смолток.
  3. Язык Смолток – очень элегантен и прост с точки зрения синтаксиса (попробуйте найти еще один язык, в котором было бы всего три оператора). Тем не менее это одно из наиболее эффективных средств для моделирования сложных систем, на этом языке создаются надежные сверхсложные программные комплексы.
  4. Во второй части курса рассматриваются принципы объектно-ориентированного программирования на языке C++. Рассматриваются основные ООП-конструкции, приемы и методы.
  5. На основании изучения этой дисциплины студент должен уметь применять приемы и методы ООП в своей практической деятельности, знать основные принципы организации сложных объектно-ориентированных систем, иметь представление об основных тенденциях развития современных информационных технологий. Этот курс является составной частью цикла специальных дисциплин, определяющих подготовку студентов в области современных информационных технологий.

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

  1. .
  2. .
  3. .
  4. .
  5. .
Факультет нанотехнологии и информатики, МФТИ, 2007 г.,