Список экзаменационных вопросов к спецкурсу «Введение в парадигмы программирования» (лектор доц. А.В.Столяров, 2012 г.)
- История термина "парадигма" в применении к программированию. Томас Кун.
Роберт Флойд.
- Экстенсиональные определения парадигмы программирования (примеры
парадигм) и варианты интенсиональных определений.
- Парадигмы программирования и языки программирования. Уровни поддержки
парадигмы в языке.
- Рекурсия как парадигма программирования. Примеры.
- Виды рекурсии.
- Остаточная (хвостовая) рекурсия и её оптимизация.
- Язык Лисп: S-выражения.
- Язык Лисп: вычислительная модель и основные спецформы.
- Язык Лисп: функция как объект данных и функции высших порядков.
- Язык Лисп: фунарг-проблема, лексическое и динамическое связывание,
замыкания.
- Редуцирование списков.
- Основные видимые отличия языка Scheme от языка Лисп.
- Продолжения (континуации) языка Scheme как обобщение нелокальных
выходов и обработки исключений.
- Техника рекурсии с накапливающим параметром и её достоинства в
сочетании с оптимизацией хвостовой рекурсии.
- Язык Пролог: структуры данных. Сходство и различия между структурами
данных Пролога и S-выражениями.
- Язык Пролог: переменные, унификация выражений, контексты
- Язык Пролог: основы вычислительной модели, предикаты, факты; имитация
функций, возвращающих значения, с помощью предикатов большей арности.
- Язык Пролог: гипотеза о замкнутости мира и её последствия.
- Язык Пролог: процедурная семантика, отсечения, причины зависимости
программы от порядка целей.
- Язык Пролог: арифметика.
- Язык Пролог: функционирование предикатов в различных прототипах и
факторы, мешающие такому функционированию.
- Лямбда-исчисление: синтаксис; БНФ лямбда-выражения.
- Лямбда-исчисление: редукция, редексы, виды редукции.
- Лямбда-исчисление: нормальный и аппликативный порядок редукции,
следствие из теоремы Чёрча-Россера и теорема стандартизации.
- Рекурсия в лямбда-исчислении и Y-комбинатор.
- Ленивые вычисления: общие принципы; причины выигрыша и потери в
эффективности.
- Ленивые вычисления и бесконечные структуры данных.
- Императивное программирование: основные определяющие факторы, понятие
состояния программы.
- Объектно-ориентированное программирование: объекты и сообщения.
- Объектно-ориентированное программирование: теоретико-множественное
введение понятия класса.
- Две терминологические традиции ООП и их синонимия.
- Командно-скриптовые языки программирования и их основные
особенности.
|