Джон Маккарти (4 сентября 1927, Бостон) — выдающийся
американский информатик, автор термина «искусственный интеллект» (1955),
изобретатель языка Лисп (1958), основоположник функционального
программирования, лауреат Премии Тьюринга (1971) за огромный вклад в область
исследований искусственного интеллекта.
В 1950-х
годах специалисты по искусственному интеллекту начали искать язык, пригодный
для манипулирования понятиями, выраженными словами и фразами на естественном
языке. (Искусственный интеллект — раздел информатики, ставящий своей целью
разработку методов решения задач, для которых отсутствуют формальные алгоритмы:
понимание естественного языка, обучение, доказательство теорем, распознавание
образов.) Первый результат тут был получен в виде семейства языков под названием
ИПЛ (IPL, от InformationProcessing 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
Комментариев нет :
Отправить комментарий