- •1. Парадигмы императивного и декларативного программирования.
- •2. Основные задачи для функционального и логического программирования.
- •3. Основные понятия систем ии.
- •4. Понятие функционального программирования и основные положения по а.П. Ершову.
- •5. Понятие функциональности.
- •6. Понятие прозрачности по ссылкам.
- •7. Виды вычислений в функциональных языках.
- •10. Свойства функционального программирования в постановке а. П. Ершова.
- •11. Структура символьного выражения в Лиспе.
- •8. Понятие бестипового программирования.
- •9. Обзор функциональных языков программирования.
- •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. Металогические предикаты для определения типа переменных
12. Символы, атомы, константы, t, nil, списки.
(Символьные выражения) S-выр:
1.скалярные объекты (символы, числа, атомы). Примеры символов: Vmax, A753,S. Символ, который используется для представления константного объекта предметной области, называется атомом. Символы, которые используются для именования других объектов, называются переменными (числа - не переменные). Существуют 2 системно определенных атомов T & NIL. NIL обозначает логическое значение «ложь», с другой стороны – это пустой список. Т используется для логического значения «истина».
2.структурные объекты (списки).
Список - структура, которая либо пуста, либо состоит из 2-х элементов: головы и хвоста. Хвост - обязательно является списком. Список строится перечислением символов через пробел и заключением получившегося выражения в скобки, например,
1) (+ 5 3);вызов функции сложения
2) (a ((bc))(((a)))(e a)); многоуровневый список данных
3) (defun f(x y) (+ x y)); в зависимости от интерпретации либо данные, либо определение функции
4) (f 3 9); вызов функции сложения двух чисел
13. Список как основная структура функционального и логического программирования.
Списки в функциональных и логических языках являются фундаментальной структурой. Большинство языков имеет встроенные средства для работы со списками вроде получения длины списка, головы (первый элемент списка), хвоста (часть списка, идущая за первым элементом), применения функции к каждому элементу списка.
Список - структура, которая либо пуста, либо состоит из 2-х элементов: головы и хвоста. Хвост - обязательно является списком. Список строится перечислением символов через пробел и заключением получившегося выражения в скобки.
14. Префиксная нотация Лиспа, вычисление арифметических выражений.
В лиспе принято единообразная префиксная нотация записи выражений. Все выражения записываются в круглых скобках. Одно и то же выражение, в зависимости от контекста, может выступать в разных ролях. Префиксная нотация дает широкие возможности для синтаксического анализа выражений, а так же обеспечивает возможность использования единого списочного контекста для программ и данных.
>(имя_функции аргумент1 аргумент2 ... аргументN)
Деления как целочисленное, так и вещественное зависит от аргументов и версии лиспа. В одной версии применится вещественная, в другой версии не применится и будет передаваться не вычисленным выражением. Например, некоторые версии лиспа могут вычислить корень из 9, а некоторые нуждаются в вещественной записи корень из 9.0.
15. Понятие псевдофункции.
Функции, обладающие побочным эффектом, в языке LISP называют псевдо-функциями. Все псевдо-функции обязательно выполняют и отображение аргументов в результаты, что позволяет им равноправно участвовать в любой позиции формулы, задающей вычислительный процесс. Формальный результат сопровождается дополнительными эффектами.
Например, функция определения функции в лиспе называется defun (это псевдо-функция). Побочный эффект - создание связи между именем и вычисляемым выражением.
