Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции ФЛП.doc
Скачиваний:
18
Добавлен:
27.05.2015
Размер:
632.83 Кб
Скачать

2. Язык функционального программирования лисп Введение

На сегодня ЛИСП вместе с Прологом является одним из главных инструментальных средств систем искусственного интеллекта.

Язык ЛИСП (LISP) был разработан в 1958 году американским ученым Джоном Маккарти как функциональный язык, предназначенный для обработки списков. (LISt Processing).

Lisp - означает "лепетать". С появлением этого языка машина стала пока лепетать, a не говорить по-человечески.

В основу языка положен серьезный математический аппарат:

  • лямбда-исчисление Черча

  • алгебра списочных структур

  • теория рекурсивных функций

Долгое время язык использовался узким кругом исследователей. Широкое распространение язык получил в конце 70-х - начале 80-х годов с появлением необходимой мощности вычислительных машин и соответствующего круга задач.В настоящем - Лисп одно из главных инструментальных средств систем искусственного интеллекта. Он принят как один из двух основных ЯП для министерства обороны США и постепенно вытесняет второй ЯП - АДА.

Система AutoCAD разработана на Лиспе.

Лиспимеет необычный синтаксис. Из-за большего числа скобокLISP расшифровывают какLots of Idiotic Silly Parentheses.

Функциональное программирование – это такой способ представления программ, в котором единственным действием является вызов функции. Функция – это изображение вычислений или их определение, а вызов функции – применение этого изображения. Результатом этого применения является значение функции.

Повторные вычисления осуществляются с помощью рекурсии, которая является основным средством функционального программирования.

ЛІСП не является типизированным языком. В нем имена символов, переменных, списков, функций и других объектов не закреплены изначально за какими-то определенными типами данных. Типы вообще не связаны с именами объектов, а сопровождают сами объекты. Но каждая функция выполняет действия только над аргументами определенного типа.

Чисто функциональным стилем программирования называется программирование, в котором аргументы передаются в виде списка, а результат вычислений возвращается через имя функции, При этом, если аргументы также являются функциями, то сначала вычисляются аргументы.

Основу ЛИСПа составляют символьные выражения, которые называются S-выражениями и образовывают область определения функциональных программ. S-выражением называется последовательность атомов, списков и S-выражений, расположенных в сбалансированных скобках. При этом на первом месте после скобок, которые открываются, обязательно должно стоять имя функции.

2.1 Объекты данных Лиспа

Определение S-выражения является рекурсивным и очерчивает круг объектов Лиспа, а именно, ими могут быть только атомы и списки.

Объекты могут быть двух типов: простые и составные.

Простые объекты называются атомами. К атомам относятся символы и числа. Символ не может начинаться с цифры. muLisp не различает маленькие буквы, а заменяет все введенные буквы на заглавные. Атом является неделимым, т.е. его нельзя разбить на компоненты. Символы T и NIL имеют в ЛИСПе специальное назначение: они обозначают соответственно логические значения истина и ложь. Они должны всегда иметь одно фиксированное значение и не допускается их использование в качестве имен других объектов. Числа и логические значения T и NIL являются константами, все другие символы – переменными.

Составными объектами данных являются списки. Список включает нуль (пустой список) или больше объектов, каждый из которых может быть как простым, так и составным. Списки записывают в скобках, а их элементы разделяются пробелами.

Так (FACE LOOK NOSE) является списком, который состоит из трех атомов. Пустой список обозначается как ( ), так и NIL и является атомом.

Список называется линейным, если его элементы являются атомами. Иначе говорят о списках с подсписками, например: (7 (8 9) TR).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]