ЛИСП

ЛИСП
Лисп
Семантика:

мультипарадигмальный: объектно-ориентированное, функциональное, процедурное программирование

Появился в:

1958 г.

Автор(ы):

Джон Маккарти

Типизация данных:

сильная, динамическая

Диалекты:

Common Lisp (Scheme, Emacs lisp

Повлиял на:

Лого, Python, LISP, от англ. LISt Processing language — «обработка списков»; современное написание: Lisp) — семейство языков программирования, программы и данные в которых представляются системами линейных списков символов. Лисп является вторым в истории (после Фортрана) высокоуровневым языком программирования, который используется по сей день. Слово «lisp» имеет также значение «детский лепет», что не случайно, так как тематика, которая интересовала создателя Лиспа Джона Маккарти была тесным образом связана с исследованиями человеческой речи: Маккарти занимался исследованиями в области искусственного интеллекта и созданный им язык по сию пору является одним из основных средств моделирования различных аспектов ИИ.

Традиционный Лисп имеет динамическую систему типов. Язык является функциональным, но многие поздние версии обладают также чертами императивности, к тому же, имея полноценные средства символьной обработки становится возможным реализовать объектно-ориентированность, примером такой реализации является платформа Ada, прошел процесс фундаментальной стандартизации для использования в военном деле и промышленности, в результате чего появился стандарт Common Lisp. Его реализации существуют для большинства платформ. С полным списком реализаций можно ознакомиться здесь: Common Lisp Implementation.

Одной из базовых идей языка Lisp является представление каждого символа как узла многокоординатной символьной сети; при этом координаты, свойства, уровни сети записаны в так называемых слотах символа. Основные слоты:

  • имя символа (основополагающее Аристотелево А=А из которого вырастает (-ли?) лямбда-исчисление),
  • функциональный слот,
  • слот-значение
  • расширяемый список свойств (можно свободно расширить слотовую систему удобным для решения задачи способом).

Лисп имеет аппаратную реализацию т. н. Лисп-машина.

Содержание

Синтаксис

Основной механизм Лиспа — инкапсулированная в список определяющая голова списка и подключённый к ней хвост списка, который рекурсивно также может быть списком. Лисп-машина способна воспринимать каждый поступающий на неё список на самом абстрактном уровне, например как мета-Лисп-машину, модифицирующую воспринимающую машину. В такой динамичной, высокоабстрактной среде можно реализовать как строго-научные системы, так и неисчислимое множество программистских трюков и генераторов всевозможных машин.

Любая программа на Лиспе состоит из последовательности выражений (форм). Результат работы программы состоит в вычислении этих выражений. Все выражения записываются в виде списков — одной из основных структур Лиспа, поэтому они могут легко быть созданы посредством самого языка. Это позволяет создавать программы, изменяющие другие программы или макросы, позволяющие существенно расширить возможности языка.

Внешне исходный код программы на Лиспе отличается обилием круглых скобок; редактирование программ значительно упрощается использованием текстового редактора, поддерживающего автоматическое выравнивание кода, подсветку соответствующих пар скобок и такие специальные команды, как «перейти через список вправо» и т. д.

Под словами «Лисп-редактор» скрывается технология Debian). Содержательна также история EMACS: она связана с одним из лидеров свободного программного обеспечения Столлманом.

Список является последовательностью элементов любого рода, в том числе других списков. Например, (1 3/7 'foo #'+) состоит из целого числа, рациональной дроби, символа foo и указателя на функцию сложения. Выражения представляются списками в префиксной записи: первый элемент должен быть формой, то есть функцией, оператором, макросом или специальным оператором; прочие элементы суть аргументы, передаваемые форме для обработки. Функция list возвращает список состоящий из её аргументов: например, (list 1 3/7 'foo #'+) возвращает список, упомянутый ранее. Если некоторые элементы являются выражениями, то сначала вычисляется их значение: (list 1 2 (list 1 2)) возвращает (1 2 (1 2)). Арифметические операторы действуют так же, например (+ 4 (* 2 3)) выдаёт 10.

Специальные операторы позволяют управлять последовательностью вычислений. С их помощью реализуются ветвления и циклы. Оператор if позволяет вычислить одно из двух выражений в зависимости от выполнения условия, которое тоже является выражением. Если его результат не nil, то вычисляется первый аргумент, иначе вычисляется второй. Например, (if nil (list 1 2 "foo") (list 3 4 "bar")) всегда возвращает (3 4 "bar").

Символьная природа языка (то есть отсутствие в символьном пространстве традиционной метрической геометрии расстояний, последовательностей и т. д) позволяет легко и продуктивно распараллеливать Лисп-процессы. Что нашло использование в сверхмощных телекоммуникационных, сетевых Лисп-системах.

При всей мощности символьного подхода, он не может занять место контининтуальных (нейро) систем (не-машин!) нейрокомпьютеров. Т. н. проблема образования категорий из сенсорных данных. (см. Harnad).

Примеры

Пример Куайн (программы, выводящей свой исходный код) на Лиспе:

((lambda (x) (list x (list 'quote x))) '(lambda (x) (list x (list 'quote x))))

Данная программа должна работать на большинстве диалектов Лиспа, в том числе и на числа Фибоначчи с использованием макроса Loop:

(defun fibonacci (n)
    (loop repeat n 
          for a = 1 then b 
          and b = 1 then (+ a b)
          finally (return a)))

Применение

Первые области применения Лиспа были связаны с символьной обработкой данных и процессами принятия решений (см. проекты Franz).

Наиболее популярный сегодня диалект Коммон Лисп является универсальным языком программирования. Он широко используется в самых разных проектах: Интернет-серверы и службы, серверы приложений и клиенты, взаимодействующие с реляционными и объектными базами данных, научные расчёты и игровые программы.

Одно из направлений использования языка Lisp — его использование в качестве скриптового языка, автоматизирующего работу в ряде прикладных программ.

  • Лисп используется как язык сценариев в САПР AutoLISP)
  • Лисп является одним из базовых средств текстового редактора EmacsLISP). По сути, большая часть Emacs написана на EmacsLISP, что даёт неограниченные возможности расширения функциональности.
  • В оконном менеджере Rep, который в значительной степени повторяет диалект Лиспа от Emacs.
  • Диалект Gimp.
  • Диалект GOAL используется для высокодинамичных трёхмерных игр.
  • Лисп может использоваться для написания скриптов в аудиоредакторе

    Интересные факты

    Ссылки

    Ссылки на английском

    Литература

Основные языки программирования
Используемые
в разработке
Прочие

Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Полезное


Смотреть что такое "ЛИСП" в других словарях:

  • Лисп — Семантика: мультипарадигмальный: объектно ориентированное, функциональное, процедурное программирование Появился в: 1958 Автор(ы): Джон Маккарти Типизация данных …   Википедия

  • ЛИСП — (LISP, LISt Processing обработка списка), алгоритмический язык программирования (см. ЯЗЫКИ ПРОГРАММИРОВАНИЯ), предназначен для манипулирования перечнями элементов данных. Лисп используется преимущественно в университетских лабораториях США (см.… …   Энциклопедический словарь

  • Лисп — Язык программирования, предназначенный для задач обработки нецифровых данных. Основной структурой данных и программ в языке является список, т. е. программы и данные, которые они обрабатывают, имеют одинаковую структуру. Язык Лисп широко… …   Справочник технического переводчика

  • лисп — сущ., кол во синонимов: 1 • язык (247) Словарь синонимов ASIS. В.Н. Тришин. 2013 …   Словарь синонимов

  • ЛИСП — Язык программирования для обработки списков англ.: LISP, list processor англ. Словарь: С. Фадеев. Словарь сокращений современного русского языка. С. Пб.: Политехника, 1997. 527 с …   Словарь сокращений и аббревиатур

  • ЛИСП — алгоритмический язык, разработанный в. 1959 62 Дж. Маккар ти [1]. Характеризуется весьма однородным синтаксисом, в к ром как программа, так и ее объекты выглядят одинаково в виде т. н. с п и с о ч н о й структуры графа, в частности дерева,… …   Математическая энциклопедия

  • Лисп-машина — в музее MIT Лисп машина  универсальная вычислительная машина, архитектура которой оптимизирована для эффективного выполнения программ на языке Лисп. Эквивалентна ( …   Википедия

  • Лисп ЭВМ — ЭВМ, обеспечивающая аппаратную интерпретацию программ на языке Лисп [Е.С.Алексеев, А.А.Мячев. Англо русский толковый словарь по системотехнике ЭВМ. Москва 1993] Тематики информационные технологии в целом EN Lisp machine …   Справочник технического переводчика

  • лисп — (анг. LISP, скр. od List Processing обработка на списоци) комп. програмски јазик од високо ниво најчесто се користи за софтвер за вештачка интелигенција декларативен јазик што не прави разлика меѓу програма и податок …   Macedonian dictionary

  • лисп — 1. плис (ткань х/б) слип спил 2. плис слип спил …   Краткий словарь анаграмм


Поделиться ссылкой на выделенное

Прямая ссылка:
Нажмите правой клавишей мыши и выберите «Копировать ссылку»