Парадигмы программирования: вопросы к экзамену

1. Примеры различных направлений, стилей и техник программирования
2. Операционная семантика языков программирования. Абстрактная машина и интерпретатор
3. С# - механизмы функционального программирования в императивном языке
4. F# - curry-uncurry
5. HomeLisp – интерфейс, язык, система
6. Haskell - 

7. Общая характеристика императивного программирования
8. Общая характеристика функционального программирования
9. Общая характеристика логического программирования
10. Общая характеристика объектно-ориентированного программирования

11. Язык теоретико-множественного программирования SETL как пример языка сверхвысокого уровня. 
12. Параллельное программирование на языке APL
13. Компиляция программ как синтаксически управляемый обработчик данных
14. Организация ленивых (отложенных) вычислений
15. Параллельное программирование на языке Sisal

16. Обзор идей языков сверх высокого уровня
17. Основные особенности языков низкого уровня
18. Типичные механизмы языков высокого уровня

19. Средства и методы параллельного программирования в известных языках (примеры)
20. С# - работа с недоопределенностью
21. С# - Expression trees
22.  F# - типизация данных и контроль
23. F# - изменяемые и защищенные переменных/контексты 
24. F# - ленивые вычисления
25. F# - мемоизация
26. F# - работа с внутренним представлением выражений
27. F# - монады
28. F# - асинхронность и .Net
29. С# - управляемых и защищенный код

Haskell
H1. Встроенные типы данных в Haskell: булевский тип, числа, символы, строки.
H2. Полиморфные типы в языке Haskell. Примеры.
H3. Списки, конструкторы списков, кортежи.
H4. Определение функций в Haskell. Сопоставление с образцом.
H5. Использование let и where в описаниях функций в Haskell, отличие между ними.
H6. Лямбда-абстракции в Haskell (\p1...pn -> e). Сечения функций (inc = (+) 1).
H7. Типы данных в языке Haskell, определяемые пользователем (data).
H8. Модули в Haskell: списки экспорта, импортирование.
H9. Стандартные классы в Haskell: Eq, Ord, Num, Show и другие. Определение экземпляров (instance).
H10. Монада IO и функции ввода-вывода в Haskell.
H11. Монада Maybe в Haskell и её использование.
H12. Использование монад в Haskell для создания функций с побочными эффектами в функциональной парадигме.
H13. Ленивые вычисления в Haskell. Примеры использования.
H14. "Бесконечные" структуры данных в Haskell. Примеры использования.
H15. Использование массивов в Haskell.

Литература по языку Haskell:
http://www.haskell.org/tutorial/indextutorial.html -- Gentle Introduction to Haskell
http://darcs.haskell.org/yaht/yaht.pdf -- Yet Another Haskell Tutorial
http://www.haskell.org/all_about_monads/html/index.html -- All about monads

F# - курс Д.Сошникова на Intuit.ru
С# - документация MSR