
- •1. Парадигмы императивного и декларативного программирования.
- •2. Основные задачи для функционального и логического программирования.
- •3. Основные понятия систем ии.
- •4. Понятие функционального программирования и основные положения по а.П. Ершову.
- •5. Понятие функциональности.
- •6. Понятие прозрачности по ссылкам.
- •7. Виды вычислений в функциональных языках.
- •8. Понятие бестипового программирования.
- •9. Обзор функциональных языков программирования.
- •10. Свойства функционального программирования в постановке а. П. Ершова.
- •11. Структура символьного выражения в Лиспе.
- •12. Символы, атомы, константы, t, nil, списки.
- •13. Список как основная структура функционального и логического программирования.
- •14. Префиксная нотация Лиспа, вычисление арифметических выражений.
- •15. Понятие псевдофункции.
- •16. Псевдофункция статического связывания объекта.
- •17. Функция eval.
- •18. Функция quote.
- •19. Символьные выражения Лиспа.
- •20. Символьные выражения Пролога и Эрланга
- •21. Основные примитивы Лиспа для обработки списка.
- •22. Графическое представление списка.
- •23. Принципы работы с памятью функциональной и логической программы
- •24. Автоматические сборщики мусора
- •25. Старт-стопные сборщики мусора и сборщики мусора реального времени
- •26. Список в Эрланге, конструктор списка
- •27. Образец, сопоставление с образцом
- •28. Выделение элементов списка в Эрланге с помощью примитивов.
- •29. Выделение элементов списка в Эрланге с использованием образцов
- •30. Порядок вычисления лямбда выражений
- •31. Функция определения функций (связывание символов)
- •Ключевой параметр optional, key, res.
- •33. Карринговая форма записи функций нескольких переменных.
- •Формы организации временного контекста (let/let*).
- •Последовательная и одновременная передача параметров вычисляемой формы.
- •Форма организации условных вычислений cond.
- •37. Последовательные вычисления в Лиспе.
- •42. Классификация и виды рекурсии.
- •43. Рекурсия по аргументу, пример
- •44. Рекурсия по значению, пример
- •45. Параллельная рекурсия
- •46. Косвенная рекурсия, пример
- •47. Реализация рекурсивного вызова, функция трассировки в Лиспе
- •48. Функция принадлежности аргумента списка, декларативное определение
- •49. Эффективность рекурсивного и итерационного процесса.
- •50. Хвостовая рекурсия
- •51. Понятие функции высокого порядка
- •52. Применяющий функционал Лиспа
- •53. Обобщение вычислений посредством использования функций высокого порядка
- •54. Отображающие функционалы
- •55. Понятие лексического замыкания, формы организации лексического замыкания
- •56. Генератор в программировании, понятие вычислительного контекста
- •57. Связь дисциплины логического программирования с дисциплиной "базы данных"
- •58. Cвязь логического программирования с искусственным интеллектом
- •59. Логическое программирование и функциональное программирование
- •60. Логическое программирование и параллельное программирование
- •61. Логическая теория Фреге и значение её для логического программирования.
- •62. Теория Френча и Эрбрана и значение её для логического программирования.
- •63. Теория Тьюринга, значение для логического программирования.
- •64. Дизъюнкт Хорна
- •65. Резолюция, правило резолюции как процедура вывода решений
- •66. Сопоставление в логическом программировании
- •67. Понятие инверсных вычислений
- •68. Структура терма
- •69. Переменная, конкретизация переменных
- •70. Атом
- •71. Структура, функтор, компоненты
- •72. Факты, пример записи фактов
- •73. Правило, пример записи правила
- •74. Процедура вывода решения, как процедура доказательства теоремы
- •75. Поиск с возвратом
- •76. Сопоставление термов
- •77. Операционная модель машины вывода Пролога
- •78. Операторная нотация в прологе
- •79. Определение оператора и его свойства.
- •80. Пример "естественной языковой" записи программы на Прологе.
- •81. Оператор присваивания в прологе
- •82. Детерминированные и недетерминированные предикаты
- •83. Отсечение, операционная модель Пролога в случае применения отсечения.
- •84. Операционная семантика Пролога при использовании сечения
- •85. Подцель, терпящая неудачу
- •86. Запись списка в виде структуры
- •87. Традиционная форма записи списка
- •88. Рекурсивное логическое программирование
- •89. Запись фактов, записи рекуррентных определений
- •95. Организация ввода/вывода в прологе
- •96. Предикат открытия и чтения текущего входного потока
- •97. Предикат открытия и записи текущего выходного потока
- •98. Перемещение терма во внешнюю память базы данных
- •99. Организация работы с динамической базой данных
- •100. Предикат assert для перемещения фактов и правил
- •101. Constraint программирование: наложение ограничений и виды ограничений
- •102. Классификация Constraint систем логического программирования
- •103. Стандартные предикаты Constraint систем программирования
- •104. Множественные предикаты. Описание компонентов
- •105. Металогические предикаты
- •106. Металогические предикаты для анализа структуры термы
- •107. Металогические предикаты для определения типа переменных
1. Парадигмы императивного и декларативного программирования.
Паради́гма программи́рования — это совокупность идей и понятий, определяющая стиль написания программ.
Традиционно рассматривают 2 основные парадигмы программирования: императивная и декларативная.
Императивная предполагает, что программист последовательно описывает порядок выполнения операций, приводящих к результату.
Декларативная предполагает, что описываются только свойства требуемого результата.
Отличительные черты императивного и декларативного программирований:
Явное управление памятью;
Концепция переменной как поименованная часть памяти;
Широкое использование деструктора функций (оператор присваивания);
Ориентировано на численные вычисления;
Императивная парадигма базируется на фон-неймановской вычислительной модели;
Отличительные черты декларативного программы: отсутствие управления потоком, отсутствие явного управления памятью. Основная специализация декларативного программирования: решение символьных задач.
2. Основные задачи для функционального и логического программирования.
Целью логического и функционального программирования является вывод решений и они тесно связаны с задачами, решаемыми в искусственном интеллекте и экспертных системах (ЭС).
Функциональная программа состоит из совокупности определений функций. Функции, в свою очередь, представляют собой вызовы других функций и предложений, управляющих последовательностью вызовов. Каждый вызов возвращает некоторое значение и вызвавшую ее функцию, вычисление которой после этого продолжается. Этот процесс повторяется до тех пор, пока запустившая процесс функция не вернет результат пользователю.
В логических языках программирования для решения задачи достаточно описания структуры и условий этой задачи. Поскольку последовательность и способ выполнения программы не фиксируется, как при описании алгоритма, программы могут в принципе работать в обоих направлениях, то есть программа может как на основе исходных данных вычислить результаты, так и по результатам – исходные данные.
Наиболее известными языками функционального программирования являются ЛИСП и РЕФАЛ, а логического – Пролог.
3. Основные понятия систем ии.
Искусственный интеллект обычно толкуется как свойство автоматических систем брать на себя отдельные функции интеллекта человека, например, выбирать и принимать оптимальные решения на основе ранее полученного опыта и рационального анализа внешних воздействий.
Практический подход предполагает, что с ИИ моделируют отдельные стороны интеллектуальной деятельности человека: восприятие, логический вывод, умозаключение.
Задачи ИИ:
а) классификация, предполагает отнесение объекта к одному из раннее описанных классов.
б) кластеризация, предполагает, что свойства каждого класса не описаны, более того группы, т.е. классы могут быть не известны, но система относит объект к какому-то классу, тем самым все исходное множество объектов разбивается на группы.
в) распознавание образов, может рассматриваться как частный случай классификации.
г) экспертные системы и базы знаний, следующая задача ИИ. ЭС - комплекс программ, общение с которым позволяет специалисту "среднего уровня" работать в своей прикладной сфере на уровне специалиста "высокого уровня". Ядром ЭС является база знаний. Знания характеризуются следующим: внутренняя интерпретируемость, структурность, активность, адаптивность. Активность предполагает, что знания должны стимулировать получение новых знаний, поэтому ЭС должна в процессе диалога с пользователем генерировать новые знания. Адаптивность предполагает изменение знаний под новые данные.