Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Язык Лисп Печать
 
Понятие списка интересовало и другого выдающегося члена тесного сообщества исследователей искусственного интеллекта - Джона Маккарти, блестящего и разностороннего математика.

В 1958 г., когда при его помощи организовалась лаборатория по искусственному интеллекту при МТИ, Маккарти начал работу над языком высокого уровня, в котором понятие списка сочеталось с системой обозначений, заимствованной из экзотической области математики так называемого лямбда-исчисление.

Введенное в 1931 г. математиком и логиком Алонзо Чёрч, это исчисление оперирует только тремя элементами: символами, представляющими переменные и константы, скобками для группировки символов и обозначениями функций, выражаемыми греческой буквой «лямбда».

Маккарти назвал свой язык Лисп (LISP, от LISt Processing Language - обработка списков).

Даже небольшой фрагмент про граммы на Лиспе может содержать десятки пар скобок, определяющих списки. Часто пары скобок вкладываются друг в друга, образуя список внутри списка, который в свою очередь также находится внутри списка (иногда бывает 8-10 уровней вложенности). В списке (PUT(QUOTE SHIP)(QUOTE LOC)(QUOTE (7 5») функция PUT назначает для размещения (LOCation) корабля (SHIP) декартовы координаты (7,5); функция QUOTE показывает, что нужно использовать имя списка или просто символ, а не его значение; символ LOC - имя свойства (в нашем случае размещения), принадлежащего символу SHIP.

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

Специалисты по информатике восхищались как элегантностью, так и утилитарностью Лиспа, особенно после публикации в 1960 г. широко известной статьи Маккарти под заглавием «Рекурсивные функции и символьные вычисления», в которой излагалось математическое обоснование применения Лиспа.

«Лисп был для нас не просто языком, который используют для определенных целей, говорил Пол Абрахамс, бывший дипломником у Маккарти в период разработки нового языка, - им можно было любоваться, как прелестной вещью. Поэтому существовала постоянная напряженность в отношениях между теми, кто восхищался Лиспом за его чистоту, и теми, кто стремился использовать его для различных вычислений. Безусловно, с помощью Лиспа проделано множество вычислений. Но в самом начале было не так. Часто говорили, что главная цель Лиспа - делать больше Лиспа».

Сегодня в США Лисп остается основным языком программирования в исследованиях по искусственному интеллекту. Скорость и легкость, с которой можно писать, выполнять и видоизменять программы на Лиспе, способствовали появлению многочисленных поклонников этого языка и за пределами лабораторий искусственного интеллекта.

Подобно большинству популярных языков, Лисп породил обширное потомство. Например, в Великобритании признанным языком для искусственного интеллекта является производный от Лиспа язык ПОП-2 (POP-2), созданный в 60-х годах и названный в честь одного из его соавторов, Робина Дж. Попплстона (Robin Popplestone) из Эдинбургского университета (University of Edinburgh).