ГЕНЕРАТОР ФАНТАСТИЧЕСКИХ ИДЕЙ
В 1950-х годах специалисты по искусственному интеллекту начали искать язык, пригодный для манипулирования понятиями, выраженными словами и фразами на естественном языке. (Искусственный интеллект — раздел информатики, ставящий своей целью разработку методов решения задач, для которых отсутствуют формальные алгоритмы: понимание естественного языка, обучение, доказательство теорем, распознавание образов.) Первый результат тут был получен в виде семейства языков под названием ИПЛ (IPL, от Information Processing Languages— языки обработки информации), созданного одним из пионеров в области искусственного интеллекта Алленом Ньюэллом и его сотрудниками. Центральным для ИПЛ являлось понятие списка. Представляя данные в виде списка слов и символов, программист мог связать понятия в памяти компьютера приблизительно таким же образом, как, по мнению специалистов по искусственному интеллекту, они связываются в памяти человека [1].
Понятием списка заинтересовался и Джон Маккарти, разносторонний математик, один из ведущих исследователей в области искусственного интеллекта (причем сам термин искусственный интеллект был предложен именно им в 1956 году).
Маккарти родился в 1927 году в семье профсоюзного деятеля. Среди его многочисленных работ наиболее важные относятся к концу 1950-х годов, когда он работал в Массачусетсском технологическом институте (МТИ), Маккарти был генератором самых фантастических идей, а также "человеком поразительной внешности с... шокирующими манерами, например, привычкой поворачиваться и уходить, оборвав разговор на полуслове" [2].
В 1957—1958 годах по инициативе Маккарти при МТИ сформировалась лаборатория искусственного интеллекта, и он вместе с несколькими студентами стал создавать язык высокого уровня, в котором понятие списка сочеталось с системой обозначений, заимствованной из специального раздела математики — так называемого лямбда-исчисления (λ - исчисления). Введенное в 1931 году математиком Алонзо Черчем, лямбда-исчисление оперирует всего тремя типами элементов [3]: символами, представляющими переменные и константы; скобками для группировки символов; обозначениями функций с использованием греческой буквы, лямбда.
Появившийся вскоре язык получил название Лисп (LISP,от LISt Processing — обработка списков). Спустя какое-то время вышла статья Маккарти "Рекурсивные функции и символьные вычисления" [4] с математическим обоснованием применения Лиспа. "Лисп являлся для нас не просто языком, который используют для определенных целей, — говорил один из студентов, помогавших Маккарти, — им можно было любоваться, как прелестной вещью" [1].
Программы и данные Лиспа существуют в форме символьных выражений, хранимых в виде "списковых" структур. Употребляются два вида объектов: атомы и списки. Атомы — это символы, применяемые для идентификации объектов, которые могут быть числовыми или символьными. Список — это последовательность (возможно, пустая) элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. Для манипулирования списками употребляются так называемые списочные примитивы (примитивные функции), из которых получаются все другие функции обработки списков [1, 3, 5—7]. Первая реализация Лиспа была осуществлена на ламповом компьютере IBM7 04. [У нас первый транслятор (интерпретатор) Лиспа был создан для БЭСМ-6 в конце 1960-х годов.]
Даже небольшой фрагмент программы на Лиспе способен содержать десятки пар скобок, куда заключены списки. Часто пары скобок вкладываются друг в друга, образуя список внутри списка, который, в свою очередь, также находится внутри списка (иногда бывает 8—10 уровней вложенности). Характерная особенность языка Лисп "состоит в том, что и программы, и данные, обрабатываемые с их помощью, имеют одинаковую структуру.
В 1960-е годы предпринимались попытки аппаратной реализации Лиспа, однако реальная возможность решения этой задачи появилась позже, когда начало интенсивно развиваться производство интегральных схем. А с 1982 года Лисп-компьютеры (с реализацией различных версий языка) стали выпускаться серийно целым рядом фирм.
Скорость и легкость, с которой можно писать, выполнять и изменять программы на Лиспе, способствовали появлению многочисленных поклонников этого языка и вне лабораторий искусственного интеллекта [1]. Подобно большинству популярных языков, Лисп имеет достаточно большое "потомство". Так, в Великобритании употреблялся появившийся в 1960-х годах язык ПОП-2 (POP2), названный в честь одного из его создателей Робина Дж. Поплстона из Эдинбургского университета.
Лиспу уже много лет, и, не смотря на то, что этот язык имеет oпределенные недостатки (например связанные с уже отмечавшейся необходимостью использования большого количества скобок), он весьма широко применяется на всех этапах создания систем искусственного интеллекта вообще решения сложных логических задач. "LISP... в течение длительного времени рассматривался как кандидат на стандарт языка в области искусственного интеллекта. Позднее в эти npитязания вмешался Prolog" [8].
В 1959 году Маккарти предложил концепцию разделения времени (режим работы компьютера, позволяющий нескольким программистам, работая за разными терминалами, одновременно использовать его память и процессор) [1,2]. Тем самым специалисты избавлялись от необходимости ждать несколько часов или даже дней, пока их задания будут обработаны машиной. (По другим данным [9] идею разделения времени впервые высказал англичанин К.Стрейчи.)
Литература:
Язык компьютера: Пер. с англ. М.: Мир, 1989.
Компьютер обретает разум: Пер. с ан М.: Мир, 1990.
Малыхина М.П., Частиков А.Л. Языки программирования: Лисп // Новое в жизни, науке, технике. Сер. "Вычислительная техника и применение", № 3/89.
MеCarthy J. Recursive Functions of Symtx Expressions and Their Computation by Machine Part 1.Communications of the Associations Computing Machinery,.1960, vol. 3, no. 4.
Хелмс Г.Л. Языки программирования: Пер. с англ. М.: Радио и связь, 1985.
Лисп//Информатика,№ 17/2000.
(Lots (of (Idiotic (Silly (Parentheses))))) Информатика, № 40/2001.
Толковый словарь по вычислительной технике (MicrosoftCorporation): Пер. с англ. М.: Издательский отдел "Русская редакция" Ti "ChannelTradingLtd.", 1995.
Частиков АЛ. От калькулятора до супер ЭВМ // Новое в жизни, науке, технике. Сер. "Вычислительная техника и ее применение", № 1/88