Архитекторы компьютерного мира - Аркадий Частиков
Шрифт:
Интервал:
Закладка:
Джон Маккарти
Слова, вынесенные в эпиграф, принадлежат бывшему дипломнику Джона Маккарти в период разработки нового языка программирования. Для специалистов по информатике эти слова неудивительны, т. к. имя Джона Маккарти известно во всем мире. Его называют отцом искусственного интеллекта, он первый ввел термин "искусственный интеллект" и создал первый язык искусственного интеллекта.
Джон Маккарти сыграл решающую роль в основании двух самых известных научных центров США по исследованию проблем искусственного интеллекта — в Массачусетском университете в 1957 году и в Стэнфордском университете в 1963 году. Среди его многочисленных работ, внесших значительный вклад в науку, наиболее важные относятся к концу 50-х годов, когда он работал в Массачусетском Технологическом институте. Именно там в 1959 году Маккарти предложил концепцию разделения времени — режима работы компьютера, который позволяет нескольким программистам, работая за разными терминалами, одновременно использовать его память и процессор. Помимо всего прочего, это означало, что исследователи в области искусственного интеллекта получили возможность составлять и проверять экспериментальные программы непосредственно, не ожидая по нескольку часов и дней, пока их задания, заложенные среди других в пакеты перфокарт, будут обработаны единственным оператором вычислительной машины.
В 80-х годах главный научный интерес Джона Маккарти — это формализация так называемых "знаний здравого смысла".
Джон Маккарти родился 4 сентября 1927 года в Бостоне, штат Массачусетс, в семье профсоюзного деятеля-марксиста. Уже в возрасте 8 лет он твердо знал, что непременно будет ученым. Не имея возможности и опыта работы с компьютером, Маккарти интересовался техническими новинками и строил планы на будущие. В 1944 году Джон поступил в Калифорнийский технологический университет (Cal-Tech), но был отчислен за многочисленные пропуски по физкультуре, которая давалась ему с большим трудом. В 1945 году он был призван на службу в армию. После возвращения из армии Маккарти повторно зачислили в Калифорнийский технологический университет. Окончив его, Джон продолжил свое образование в Принстоне, где и получил степень доктора наук.
В начале 50-х годов Маккарти разделял взгляды коммунистов, а десятилетием позже стал радикалом с длинными волосами и лентой на лбу. В 70-е годы он взбирался на горы, летал на самолете и иногда, для разнообразия, прыгал с парашютом. 80-е годы Маккарти встретил одетым в строгий костюм и высказывающим столь же "строгие" консервативные взгляды. Одно в нем было неизменно, Маккарти был поистине генератором самых фантастических идей, которые он разбрасывал с такой скоростью, с какой вводил информацию в компьютер у себя дома или на работе. Один журналист описал его как "человека поразительной внешности, седовласого патриарха с бородкой обольстителя… и шокирующими манерами, например привычкой поворачиваться и уходить, оборвав разговор на полуслове".
Задолго до того, как разгорелись споры в области искусственного интеллекта, исследователям пришлось преодолеть ряд серьезных трудностей в применении компьютеров. При взаимодействии человека с компьютером наиболее важны два момента: во-первых, по возможности более легкий доступ к машинам, во-вторых, более совершенные языки программирования. В решение обеих задач в конце 50-х годов существенный вклад внес Джон Маккарти, именно он первым ввел термин "искусственный интеллект". В 1956 году Маккарти организовал Дартмутскую конференцию. Эта конференция объединила многих экспертов в области машинного интеллекта, которые и заложили основу для будущих исследований в области искусственного интеллекта, а именно так они назвали науку и практику создания интеллектуальных компьютерных программ. Маккарти был по праву назван отцом искусственного интеллекта.
В 1956–1959 годах Джон Маккарти вместе со студентами Массачусетского технологического института (МТИ) разработал новый изящный язык для работы со списками, которому и дал имя LISP. Причем многие студенты внесли существенный вклад в эту разработку. В частности, Д. Эдвардс запрограммировал процесс очистки памяти от ненужных массивов, так называемой сборки мусора (garbage collection), являющийся фундаментальным понятием в LISP, да и в других языках.
Название язык получил от сокращения английских слов LISP Processing (LISP), что означает "обработка списков".
После своего появления LISP присваивали много эпитетов, отражающих его черты, — это язык функций, символьный язык, язык обработки списков, рекурсивный язык. С позиций сегодняшнего дня LISP определяют как язык программирования функционального типа, в основу которого положен метод λ-исчисления (метод λ-исчисления разработан в 30-е годы А. Черчем в качестве строгой математической модели для вычисления функций).
Программы и данные LISP существуют в форме символьных выражений, которые хранятся в виде списковых структур. LISP имеет дело с двумя видами объектов: атомами и списками. Атомы — это символы, используемые для идентификации объектов, которые могут быть числовыми или символьными (понятия, материалы, люди и т. д.). Список — это последовательность из нуля или более элементов, заключенных в круглые скобки, каждый из которых является либо атомом, либо списком. LISP манипулирует списками путем использования трех примитивных функций: CAR, CDR и CONS, из которых получаются все другие функции обработки списков. В функции CAR в качестве значения аргумента используется первый элемент списка; значением аргумента в функции CDR является оставшаяся часть списка после удаления первого элемента, а функция CONS собирает вновь то, что CAR и CDR разбили на части. Интересно отметить, что слова "CAR" и "CDR" остались в LISP на память от первой реализации языка на ламповом компьютере IBM 704. Они являются сокращением английских слов, означающих "содержимое адресной части регистра" и "содержимое уменьшаемой части регистра", соответственно, терминами, характерными для машин первого поколения.
Во многих отношениях LISP отличается от других языков прежде всего тем, что выполнение программы не состоит в последовательности шагов, как в других языках. В основном LISP относится к языкам интерпретирующего типа, однако в некоторых его диалектах имеется функция COMPILE, которая может быть использована для компилирования LISP-npoграмм.
В 1962 году Джон Маккарти переехал в Стэнфорд. В этот период он решил первые проблемы в разделе математики, называемом семантикой вычислений. Маккарти уделял большое внимание проблемам общности. Он пишет: "Еще в 1958 году было очевидно, что системы искусственного интеллекта страдают отсутствием общности. Первый явный симптом состоит в том, что небольшое добавление к идее программы часто приводит к переписыванию заново всего начала со структурами данных". Некоторый прогресс был достигнут с появлением модульности структур данных, но по-прежнему невозможно было обходиться без переписывания программ. Другим симптомом, по мнению Маккарти, являлся тот факт, что никто не знал, как создать такую базу данных, содержащую общеполезные знания об окружающем мире, которую могла бы использовать любая программа, нуждающаяся в этих знаниях. В 1963 году Маккарти публикует статью, посвященную именно проблемам общности в системах искусственного интеллекта. В ней он выдвигает предположение, что, может быть, стоило бы попробовать что-нибудь более похожее на генетическую эволюцию, например, дублировать подпрограммы, одни копии модифицировать, а другие оставлять неизменными. Обучающаяся система экспериментировала бы: а не лучше ли заменить некоторые вызовы начальных подпрограмм вызовами модифицированных подпрограмм? Может быть, потребовалось бы зарезервировать для модификаций некоторое количество параметров подпрограмм. Однако все способы представления знаний с помощью программ сталкивались с возникновением такого вопроса, насколько скоро придется комбинировать несопоставимые знания или создавать программы, модифицирующие знания. Маккарти считал, что малые модификации поведения в большинстве случаев можно описать как малые изменения представлений о мире и для этого необходима система, точно отражающая эти представления.
Он писал: "Если вы хотите, чтобы машина могла выводить абстракции, скорее всего, это значит, что она должна уметь представлять эти абстракции некоторым достаточно простым способом".
Еще тогда возникла идея увеличения общности, которая заключается в том, чтобы воспользоваться логикой для такого описания фактов, которое не зависело бы от того, как эти факты будут использоваться впоследствии. Тогда Маккарти казалось (как, впрочем, и сейчас), что люди по объективным причинам предпочитают общаться с помощью декларативных предложений, а не языков программирования, все равно, является ли субъект общения человеком, существом с Альфа Центавра или компьютерной программой. Более того, и для внутреннего представления проявляются преимущества декларативной информации.