Вниманию магистрантов, слушавших курс "Парадигмы программирования"!

Обратите внимание! Экзамен состоится 13 января!

Ниже приведён список экзаменационных вопросов по курсу "Парадигмы программирования" (лектор доц. А.В.Столяров). Студентам, не выполнившим минимальных требований практической части курса (Кислых, Лифарь, Рыбаков, Сутупов, Тихомиров, Шлюнкин), в начале экзамена (до получения экзаменационного билета) будет нужно выполнить предложенное задание на соответствующих языках программирования. Указанным студентам просьба иметь с собой ноутбуки с установленной unix-подобной системой и интерпретаторами SBCL, Chicken Scheme, SWI-Prolog и Hopeless; если для кого-то это представляет проблему, просьба заранее связаться с лектором через его сайт, мы тогда закажем на это же время машзал.

Студенты Дворецкий, Кальсин, Сапин, Тодуа и Тузикова по итогам семинарских занятий и посещения лекций могут получить оценку "отлично" без сдачи экзамена. Для этого необходимо обеспечить наличие на экзамене своей зачётки (личное присутствие не обязательно).

Если кому-то очень нужно сдать экзамен досрочно, это можно будет сделать 28 декабря во второй половине дня. Желающим просьба связаться с лектором и сообщить о своём желании; если желающих наберётся хотя бы три человека, то будет заказана аудитория и сообщено конкретное время проведения мероприятия. Оценка в любом случае будет проставляться только на экзамене, проводимом в сессию, то есть получившим досрочно положительную оценку нужно будет как минимум передать зачётку.

СПИСОК БИЛЕТОВ

1. Понятие "парадигма программирования" и его история. Взаимосвязь языков программирования и парадигм программирования.

2. Рекурсия. Виды рекурсии. Примеры.

3. Остаточная (хвостовая) рекурсия.

4. Императивное и императивно-процедурное программирование. Ключевые понятия.

5. Язык Лисп. Понятие S-выражения.

6. Язык Лисп. Функции высоких порядков, мапперы.

7. Язык Лисп. Лексическое и динамическое связывание. Лексические замыкания.

8. Функция REDUCE и примеры её использования.

9. Понятие функционального программирования. Ключевые особенности и термины.

10. Основные понятия языка Пролог: атом, терм, предикат, переменная. Сопоставление (унификация).

11. Выполнение программы на Прологе. Декларативная и процедурная семантика. Отрицание и отсечение.

12. Инвертирование предикатов в Прологе. Причины, по которым инвертирование может не работать.

13. Логическое программирование и базы данных. Понятие декларативного программирования.

14. Основы языка Рефал. Ситуационное программирование.

15. Понятие ленивых вычислений. Достоинства и недостатки.

16. Основы языка Hope.

17. Обработка потенциально бесконечных структур данных с помощью ленивых вычислений.

18. Командно-скриптовые языки программирования и их ключевые особенности.

19. "Текст" как универсальное представление.

20. Основы объектно-ориентированного программирования. Понятие класса как множества.

21. Наследование в ООП. Наследование как сужение множества. Виртуальные методы.

22. Полиморфизм, его теоретико-множественное и техническое описание.

23. Обобщенное программирование.

24. Обработка исключительных ситуаций и её связь с основными стилями программирования.

25. Событийно-ориентированное программирование.

26. Основные методы многостилевой (мультипарадигмальной) интеграции.