
- •История развития фп.
- •Введение в лисп.
- •Элементарные понятия лисп.
- •Функции. Базовые функции.
- •Использование символов в качестве переменных.
- •Базовые функции.
- •Лекция № 2.
- •Арифметические функции
- •Определение функций.
- •Передача параметров глобальной и локальной переменной.
- •Дополнительные функции обработки списков.
- •Логические функции.
- •Управляющие структуры.
Литература: Люгер, «Искусственный интелект».
Оба направления функционального программирования помогают с реализацией ИИ. Избран язык LisP. В УГАТУ почему-то сперва о Фун, потом о Лог.
История развития фп.
Лисп. Язык был предложен в конце 50х годов ХХ века. Не остался единственным, среди функционалов, но так как речь идет о базовых реализациях ФП, то будем работать на Лиспе. Продолжатели – Haskell, F#. В качестве основы для сдачи лабораторных, не рекомендуется использолвать фа диез, хаске хз, а вот с ЛИСпом – коммон ЛИСП, вижуал ЛИСП, используется как внутренний язык в системе АвтоКАД. Хрен знает что это значит. Короч, установить Автокад с Вижуал Лисп. ЙА АРХИТЕКТОР!
В самом начале своей истории, язык рассматривался как альтернативная модель на основе вычислений рекурсивных функций. У языка сильная автоматическая подложка. Даже в первой своей работе, автор сформулировал цель следующим образом: для решения задач следует создать язык программирования, который выполнял бы символьные вычисления, на основе теории рекурсивных функций. Многие языки того времени уже давно заколебали всех в концы, и заменены более современными. До недавнего времени, Лисп был одним из двух вариантов реализаций заказов министерства США. Второй – Паскалеподобный язык в честь первой дамы-программюги. Там использовалось программирование в режиме реального времени, управление фортраном, прочей полезной байдой. Сейчас ситуация с ЛИСП неизвестна, однако ЛИСП всё же является удобнрым языком для реализации приколюх.
Основным инструментом в языке ЛИСП является список. В ЛИСП отстутсвует понятие типа. Работает со списками и и структурами указателей. В ЛИСП основной является структура указателей. Ещё одной особенностью языка является то, что основной элемент, список, может рассматриваться, в зависисмости отконтекста и как исходные данные, и как оператор. То есть, как кусок текста, который что-то обрабатывает. То есть одно и то же может использоваться и как данные, и как исходный код. То есть, в зависимости от программы, текст программы компануется и изменяется. Изначально ЛИСП был очень компактным языком, и состоял из функций посторения и обработки списков. Основные функции – рекурсия, условный оператор (развлетвление). На основе из создавались более сложные функции, и рано или поздно язык расширялся усилиями сообществами программистов, и в зависимости от базовых функций появились различные диалекты.
Стандарт языка получил название Common Lisp (общий лисп), был предложен в 1983 году. Тащемто по истории всё.
Введение в лисп.
Главная фишка языка – рекурсия. Она тут капец какая эффективная, плюс прога с рекурсией очень компактная. Например, ООП требовало ломать мозги в одном направлении, теперь нам надо опять ломать мозг в ФП, а потом в ЛП. Короче, звиздец нашим мозгам. Идиотски большое количество скобок. Пример:
(, , , )
(Язык, (Состоящий (Из (Скобок (чуть (более ( чем (полностью))))))))
(ебать (как (я (люблю (скобки)))))
Например, f(x) – не верно, (f_x) – верно. Вобщем, нужно быть капец как внимательным к скобкам.
Элементарные понятия лисп.
Основа ЛИСП составляет символьные выражения, которая образует области определения программы. Пример: (Джон_Смит_32_хирург) – символьное выражние
((Ева 12) (Адам 14) (Макс 8)) –список детей сотрудников отдела. Символьное выражение с двойной вложенностью. Список однородных вылажений. ТО есть s-выражение – либо список, либо атом. Атом – составные части, некий аналог переменной. Атом – может быть числовой константой, может быть символьной константой. Но есть и различая.
Более подробно. Атомы – символьные и числовые. Символьные атомы – последовательность букв и цифр, причем хотябы 1 символ должен отличать эту послежовательность от числа. В отличае от обычного идентефикатора, он может стоять на любом месте. Главное, чтобы она не могла быть прочитана как число. Тогда, это символ (или символьный атом). Как правило, символ обозначает какой-либо предмет, действие и тд. К символьным атомам можно применять только 1 операцию – сравнение. Вторая разновидность атомов – числовые, которое можно рассмотреть как значения: целые, дробные с фикс количеством знаков после точке, или же как вещественные числа с плавающей точкой. Это всё- числовые атомы. В нашем привычном понимании, в различных реализациях по-разному. Из атомов могут составляться списке. Списки могут быть вложенными (иерархическая струтура данных, зависящая от скобок). (+_3_8) Получим в результате сообщение 11. Есть 3 варианта формирования сложных выражений, один из них – польская запись, постфиксная, префиксная, унфиксная запись.
NIL – аналог (). NIL – это и список, и атом одновременно. Схема использования как ноль в арифметике.
Логические константы. Кроме NIL может испольоваться ещё один атом T. T – true, NIL – false.. А вот если NIL – пустой список, то уже (NIL ) – не пустой список.
Символьное выражение:
КАРТИНКА!