
- •1. Парадигмы императивного и декларативного программирования.
- •2. Основные задачи для функционального и логического программирования.
- •3. Основные понятия систем ии.
- •4. Понятие функционального программирования и основные положения по а.П. Ершову.
- •5. Понятие функциональности.
- •10. Свойства функционального программирования в постановке а. П. Ершова.
- •11. Структура символьного выражения в Лиспе.
- •12. Символы, атомы, константы, t, nil, списки.
- •13. Список как основная структура функционального и логического программирования.
- •14. Префиксная нотация Лиспа, вычисление арифметических выражений.
- •15. Понятие псевдофункции.
- •16. Псевдофункция статического связывания объекта.
- •21. Основные примитивы Лиспа для обработки списка.
- •22. Графическое представление списка.
- •23. Принципы работы с памятью функциональной и логической программы
- •24. Автоматические сборщики мусора
- •25. Старт-стопные сборщики мусора и сборщики мусора реального времени
- •Ключевой параметр optional, key, res.
- •33. Карринговая форма записи функций нескольких переменных.
- •48. Функция принадлежности аргумента списка, декларативное определение
- •56. Генератор в программировании, понятие вычислительного контекста
- •57. Связь дисциплины логического программирования с дисциплиной "базы данных"
- •65. Резолюция, правило резолюции как процедура вывода решений
- •66. Сопоставление в логическом программировании
- •81. Оператор присваивания в прологе
- •82. Детерминированные и недетерминированные предикаты
- •83. Отсечение, операционная модель Пролога в случае применения отсечения.
- •88. Рекурсивное логическое программирование
- •105. Металогические предикаты
- •106. Металогические предикаты для анализа структуры термы
- •107. Металогические предикаты для определения типа переменных
1. Парадигмы императивного и декларативного программирования.
Императивная предполагает, что программист последовательно описывает порядок выполнения операций, приводящих к результату.
Декларативная предполагает, что описываются только свойства требуемого результата.
2. Основные задачи для функционального и логического программирования.
Целью логического и функционального программирования является вывод решений и они тесно связаны с задачами, решаемыми в искусственном интеллекте и экспертных системах (ЭС).
3. Основные понятия систем ии.
Практический подход предполагает, что с ИИ моделируют отдельные стороны интеллектуальной деятельности человека: восприятие, логический вывод, умозаключение.
Задачи ИИ:
а) классификация, предполагает отнесение объекта к одному из раннее описанных классов.
б) кластеризация, предполагает, что свойства каждого класса не описаны, более того группы, т.е. классы могут быть не известны, но система относит объект к какому-то классу, тем самым все исходное множество объектов разбивается на группы.
в) распознавание образов, может рассматриваться как частный случай классификации.
г) экспертные системы и базы знаний, следующая задача ИИ
4. Понятие функционального программирования и основные положения по а.П. Ершову.
Функциональное программирование - способ составления программы, при котором единственное действие - вызов функции.
А.П.Ершов сказал: «Способ составления программ, при котором:
- единственным действием является вызов функции;
- единственным способом расчленения программы на части является введение имени функции;
- единственным способом композиции является оператор суперпозиции;
- никаких ячеек памяти;
- ни операторов-присваивания;
- ни блок-схем;
- ни передач управления».
5. Понятие функциональности.
Свойство функциональности (прозрачность по ссылкам) означает, что результат работы функции не зависит от места программы в котором она вызвана, а зависит только от аргументов вызова.
Основное требование к программе – функциональность: значение функции зависит только от нее самой и аргумента вывода, но не зависит от места программы, в котором эта функция встречается (т.е. не должно быть обращения функции к глобальной переменной). Менее принципиальное свойство – бестиповость.
6. Понятие прозрачности по ссылкам.
Свойство функциональности (прозрачность по ссылкам) означает, что результат работы функции не зависит от места программы в котором она вызвана, а зависит только от аргументов вызова
7. Виды вычислений в функциональных языках.
Ленивые вычисления означают, что на каждом шаге вычисляется только то, что нужно для того, чтобы перейти к следующему шагу.
Энергичные вычисления – вычисляется всё, что может быть вычислено.
В энергичном случае вычисляется всё, что можно, а в ленивом – всё, что нужно.
8. Понятие бестипового программирования.
Бестиповый язык предполагает, что переменные одновременно могут быть связаны с разными по типу объектами. Бестиповые языки: Common Lisp, Erlang, Sheme и др.
9. Обзор функциональных языков программирования.
Критерии сравнения:
Практичность - использование языка программирования в реальных приложениях, наличие коммерческих компиляторов.
Академический - означает, что язык использовался только в научных приложениях, для обучения студентов, на нем нет реальных коммерческих разработок.
Типизация - статическая, динамическая. Строгая - тип переменной определяется до её использования. Динамическая - во время. Не строгая предполагает, что тип переменной определяется типом значения, которое заносится в неё. Безтиповая типизация.