В нашем примере образец мыслекода, который выражает семейные отношения, представлен двумя типами утверждений. Пример первого типа – Alex father-of Andrew (Алекс отец Эндрю): имя, за которым следует указание на тип родственных отношений, а затем еще одно имя. Пример второго типа – Alex is-male (Алекс мужского пола): имя, за которым следует указание на пол. Пусть вас не смущает то, что в записях мыслекода я использую английскую лексику и синтаксис. Это делается только для того, чтобы вам, читатель, было легче понять, что означают символы. В случае с машиной эти символы представляют собой разные метки. Это могут быть какие угодно символы, расположенные в каком угодно порядке – при условии, что каждый символ последовательно используется для обозначения одного и того же человека (например, тот символ, который мы используем для обозначения Алекса, всегда используется для Алекса и никогда не используется для обозначения кого-либо еще), и что они располагаются в одном и том же порядке (чтобы они могли правильно передавать информацию о том, кто чей отец). Метки могут иметь форму штрихов в штрих-коде, распознаваемом сканером, или замочных скважин, к каждой из которых подходит только один ключ, или форм, которые подходят только к одному шаблону. Естественно, в случае серийных компьютеров это будут разные последовательности расположения зарядов в кристаллах микросхем, а в случае мозга – последовательности возбуждения в группах нейронов. Здесь очень важно отметить, что машина не может понимать символы таким же образом, как вы и я; элементы конструкции машины реагируют на их форму, выполняя ту или иную операцию – как автомат для продажи жвачки реагирует на вес и форму монетки, выдавая покупателю жвачку.
Приводимый ниже пример – это попытка пролить свет на суть машинного вычисления, показать вам, как машине удается это провернуть. Чтобы более наглядно представить мое положение о том, что символ может одновременно обозначать некое понятие и механическим путем обусловливать некое событие, я покажу весь процесс работы продукционной системы шаг за шагом и опишу все происходящее дважды: на концептуальном уровне, в терминах содержания задачи и логики, которая используется для ее решения, и на механическом уровне, в терминах действий машины – считывания данных и нанесения меток. Система разумна в том смысле, что эти два уровня точно соответствуют друг другу: каждая идея соответствует метке, каждый логический шаг соответствует действию.
Назовем ту часть памяти системы, в которой содержатся записи о родственных отношениях, «Долгосрочной памятью». Другую часть назовем «Краткосрочной памятью» – это нечто вроде чернового блокнота для вычислений. Часть «Краткосрочной памяти» представляет собой область задач; в ней содержится список вопросов, на которые система пытается ответить. Системе нужно узнать, является ли Горди родным дядей по отношению ко мне (условное обозначение – Я). В самом начале память выглядит следующим образом:
На концептуальном уровне наша цель – ответить на вопрос; ответ будет положительным, если факт, которого он касается, истинен. На механическом уровне система должна определить, есть ли где-нибудь в ее памяти последовательность знаков, идентичная той последовательности, которую мы видим со знаком вопроса в колонке «Задачи». Функция одного из демонов системы – отвечать на вопросы, связанные с поиском, считывая аналогичные знаки в колонках «Задачи» и «Долгосрочная память». Обнаружив совпадение, он печатает метку рядом с вопросом, что означает, что вопрос получил положительный ответ. Для удобства давайте скажем, что метка имеет форму слова Yes (Да).
IF: Goal = blah-blah-blah?
Long-Term Memory = blah-blah-blah
THEN: MARK GOAL
Yes
(ЕСЛИ: Задача = то-то и то-то?
Долгосрочная память = то-то и то-то
ТО: МЕТКА ЗАДАЧИ
Да)
Концептуальная проблема, стоящая перед системой, состоит в том, что у нее нет