Надо Знать

добавить знаний



LISP



План:


Введение

Лисп (LISP) - язык общего назначения с поддержкой парадигм функционального и процедурного программирования. Исходная информация записывается в виде списков.

Язык программирования Лисп был разработан в конце 1950-тех в Массачусетском Технологическом Институте для исследования проблем искусственного интеллекта. Но, из-за мощности заложенных принципов, язык Лисп также пригодна для многих других применений.


1. Формальное описание языка

Программа на языке программирования Лисп представляет рекурсивную функцию символьных выражений, которая строится аналогично арифметическим функциям из элементарных с помощью условного оператора и операции суперпозиции. Условный оператор имеет вид (p 1l 1;..., p nl n). Результатом его выполнения будет выражение l i если p i верно.

Существует пять элементарных функций:

  • atom - булева функция, определяющая ли исследуемый выражение атомом - неделимой единицей информации;
  • eq - булева функция, которая определяет равенство двух атомов;
  • car, cdr - функции, которые выделяют первый и последний элемент списка соответственно;
  • cons - соединяет два списка в один.

Кроме элементарных функций определяются ряд сложных функций, которые строятся на их основе.


2. Базовые сведения

LISP означает LISt Processing (обработка списков), язык работает со списками (и списками списков) размещая их между скобками. Скобки определяют границы списка. Списки являются базисом языка программирования Лисп. Язык Лисп была одним из первых языков программирования с автоматическим уборкой мусора из памяти. [1]

Одним из преимуществ LISP является то, что каждая переменная может выступать как строка символов (собственное имя), ссылки на значение, структура данных или функция. Именно последний факт сделал этот язык очень удобна при разработке лингвистических программ, особенно для естественных языков с четкой структурой предложения (например, английский). В таких языках каждое слово, его содержание / смысл / императив, можно интерпретировать как функцию от слов, находящихся на четко определенных позициях в предложении, к тому же эти позиции определяются самим этим словом. Пример системы, основанной на этой идее можно найти в книге Т.Винограда "Программа которая понимает естественный язык". Эта система реализует диалог с пользователем на естественном языке. Пользователь видит перед собой стол с некоторыми предметами разного цвета, и может отдавать приказы естественном языке, о переносе какого-то предмета. При этом система (манипулятор) сама определяет что надо снять по этому предмету, какой предмет на которых можно класть (на пирамиду уже ничего не положишь), и если есть неоднозначность в выборе предмета задает уточняющие вопросы. Также реализован контекстное ссылки местоимений по тексту диалога (пользователь может сказать: "перестал куб туда-то", и система из текста диалога может определить, какой именно "то куб"). Это императивы. Также система может отвечать на вопросы. Вывод ответа подобен прологивського. Также есть возможность пользователю выражать декларативы - вносить новые знания об объектах, например, предоставлять им имена. Хотя словарь и база знаний относительно не велика, но она имеет возможности для расширения.


3. Примеры

В следующем примере показано применение "фундаментальной" функции cons - объединение списков:

 (  cons  "Pine"  (  fir oak maple  )  ) 

В результате интерпретации этого выражения, будет получен список (pine fir oak maple).

Первый элемент (председатель) списка может быть получен в результате применения функции car:

 (  car  "  (  rose violet daisy buttercup  )  ) 

Остальные элементы списка можно получить путем применения функции cdr:

 (  cdr  "  (  rose violet daisy buttercup  )  ) 

Результат выполнения этого выражения список (violet daisy buttercup).


4. Источники информации

  1. http://portal.acm.org/citation.cfm?id=367177.367199

См.. также

Братский проект Википедия имеет книгу на тему

Литература

  • Mc Carthy J., Recursive functions of symbolic expressions and their computation by machine, part 1. "Communications of the Associations for Computing Machinery", 1960, v. 3, N. 4.
  • Е. Хювьонен, И. Сеплянен, Мир Лисп методы и системы программирования, Москва, "Мир", (в двух томах) 1990.
  • Пантелеев А. Г. Об интерпретатор с языка Лисп для ЕС ЭВМ. - Программирование, 1980, No 3, с. 86-87.

5.1.2. Учебные материалы

5.2.3. Ресурсы интернета


Язык Это незавершенная статья о языка программирования.
Вы можете помочь проекту, исправив и дополнив ее.

Данный текст может содержать ошибки.

скачать

© Надо Знать
написать нам