Игра в имитацию. О шифрах, кодах и искусственном интеллекте

fb2

Иногда люди, которые ничего из себя не представляли, делают то, чего никто не мог себе представить… (Алан Тьюринг) Как мыслит компьютер? Как отыскать ошибку в системе, в которой их нет? Как взломать код, который невозможно взломать? Ученый-математик Алан Тьюринг в тексте работы «О вычислимых числах», вышедшей в 1936 году, доказал, что универсального метода установления истины нет и не может быть в математической науке. Математика всегда будет содержать не поддающиеся разрешению задачи. На базе этого метода ученый разработал так называемую «Машину Тьюринга», ставшую прообразом современного персонального компьютера. Во времена Второй мировой он создал дешифровальную машину, которая позволила взломать код «Энигмы», что изменило весь ход Второй мировой войны. Именно Алан Тьюринг считается основателем современной кибернетики и главным теоретиком проблемы искусственного интеллекта. В этой книге Алан Тьюринг расшифровывает не только свои методы, философию, но и код собственной жизни. «Всегда есть ошибка. В этом все дело. Без них невозможно существование любой системы. Вопрос лишь в том, как ее найти…» (Алан Тьюринг)

А.М. Тьюринг

Может ли машина мыслить?[1]

I. Игра в имитацию

Я собираюсь рассмотреть вопрос «Могут ли машины мыслить?». Но для этого нужно сначала определить смысл терминов «машина» и «мыслить». Можно было бы построить эти определения так, чтобы они по возможности лучше отражали обычное употребление этих слов, но такой подход таит в себе некоторую опасность. Дело в том, что если мы будем выяснять значение слов «машина» и «мыслить», исследуя, как эти слова употребляются обычно, нам трудно будет избежать того вывода, что значение этих слов и ответ на вопрос «Могут ли машины мыслить?» следует искать путем статистического обследования наподобие анкетного опроса, проводимого институтом Гэллапа[2]. Однако это нелепо. Вместо того чтобы пытаться дать такого рода определения, я заменю наш вопрос другим, который тесно с ним связан и выражается словами с относительно четким смыслом.

Эта новая форма проблемы может быть описана с помощью игры, которую мы назовем «игрой в имитацию». В этой игре участвуют три человека: мужчина (A), женщина (В) и кто-нибудь задающий вопросы (С), которым может быть лицо любого пола. Задающий вопросы отделен от двух других участников игры стенами комнаты, в которой он находится. Цель игры для задающего вопросы состоит в том, чтобы определить, кто из двух других участников игры является мужчиной (A), а кто – женщиной (В). Он знает их под обозначениями X и Y и в конце игры говорит либо «X есть А, и Y есть В», либо «X есть В, и Y есть А». Ему разрешается задавать вопросы такого, например, рода:

С: «Попрошу X сообщить мне длину его (или ее) волос».

Допустим теперь, что в действительности X есть А. В таком случае А и должен давать ответ. Для А цель игры состоит в том, чтобы побудить С прийти к неверному заключению. Поэтому его ответ может быть, например, таким:

«Мои волосы коротко острижены, а самые длинные пряди имеют около девяти дюймов в длину».

Чтобы задающий вопросы не мог определить по голосу, кто из двух других участников игры – мужчина, а кто – женщина, ответы на вопросы следовало бы давать в письменном виде или, еще лучше, печатать на машинке. Идеальным случаем было бы телеграфное сообщение между комнатами, где находятся участники игры. Если же этого сделать нельзя, то ответы и вопросы может передавать какой-нибудь посредник. Цель игры для третьего игрока – женщины (В) – состоит в том, чтобы помочь задающему вопросы. Для нее, вероятно, лучшая стратегия – давать правдивые ответы. Она также может делать такие замечания, как «Женщина – я, не слушайте его!», но этим она ничего не достигнет, так как мужчина тоже может делать подобные замечания.

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

II. Критика новой постановки проблемы

Подобно тому, как мы задаем вопрос «В чем состоит ответ на проблему в ее новой форме?», можно спросить: «Заслуживает ли рассмотрения проблема в ее новой постановке?» Этот последний вопрос мы рассмотрим, не откладывая дела в долгий ящик, с тем чтобы в последующем уже не возвращаться к нему.

Новая постановка нашей проблемы имеет то преимущество, что позволяет провести четкое разграничение между физическими и умственными возможностями человека. Ни один инженер или химик не претендует на создание материала, который было бы невозможно отличить от человеческой кожи. Такое изобретение, быть может, когда-нибудь и будет сделано. Но, даже допустив возможность создания материала, не отличимого от человеческой кожи, мы все же чувствуем, что вряд ли имеет смысл стараться придать «мыслящей машине» большее сходство с человеком, одевая ее в такую искусственную плоть. Форма, которую мы придали проблеме, отражает это обстоятельство в условии, не позволяющем задающему вопросы соприкасаться с другими участниками игры, видеть их или слышать их голоса. Некоторые другие преимущества введенного критерия можно показать, если привести образчики возможных вопросов и ответов. Например:

С: Напишите, пожалуйста, сонет на тему о мосте через реку Форт[3].

А: Увольте меня от этого. Мне никогда не приходилось писать стихи.

С: Прибавьте 34 957 к 70 764.

А (молчит около 30 секунд, затем дает ответ): 105 621.

С: Вы играете в шахматы?

А: Да.

С: У меня только король на е8 и других фигур нет. У Вас только король на е6 и ладья на h1. Как Вы сыграете?

А (после 15 секунд молчания): Лh8. Мат.

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

Вероятно, нашу игру можно подвергнуть критике на том основании, что в ней преимущества в значительной степени находятся на стороне машины. Если бы человек попытался притвориться машиной, то, очевидно, вид у него был бы весьма жалкий. Он сразу выдал бы себя медлительностью и неточностью при подсчетах. Кроме того, разве машина не может выполнять нечто такое, что следовало бы характеризовать как мышление, но что было бы весьма отлично от того, что делает человек? Это возражение очень веское. Но в ответ на него мы, во всяком случае, можем сказать, что если можно все-таки создать такую машину, которая будет удовлетворительно играть в имитацию, то относительно него особенно беспокоиться не следует.

Можно было бы заметить, что при «игре в имитацию» не исключена возможность того, что простое подражание поведению человека не окажется для машины наилучшей стратегией. Такой случай возможен, но я не думаю, чтобы он привел нас к чему-нибудь существенно новому. Во всяком случае, никто не пытался исследовать теорию нашей игры в этом направлении, и мы будем считать, что наилучшая стратегия для машины состоит в том, чтобы давать ответы, которые в соответствующей обстановке дал бы человек.

III. Машины, привлекаемые к игре

Вопрос, поставленный в разделе I, не станет совершенно точным до тех пор, пока мы не укажем, что именно следует понимать под словом «машина». Разумеется, нам бы хотелось, чтобы в игре можно было применять любой вид инженерной техники. Мы склонны также допустить возможность, что инженер или группа инженеров могут построить машину, которая будет работать, но удовлетворительного описания работы которой они не смогут дать, поскольку метод, которым они пользовались, был в основном экспериментальным. Наконец, мы хотели бы исключить из категории машин людей, рожденных обычным образом. Трудно построить определение так, чтобы оно удовлетворяло этим трем условиям. Можно, например, потребовать, чтобы все конструкторы машины были одного пола; в действительности, однако, этого недостаточно, так как, по-видимому, можно вырастить законченный индивидуум из одной-единственной клетки, взятой (например) из кожи человека. Сделать это было бы подвигом биологической техники, заслуживающим самой высокой похвалы, но мы не склонны рассматривать этот случай как «построение мыслящей машины».

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

На первый взгляд, это ограничение кажется весьма сильным. Я постараюсь показать, что в действительности дело обстоит не так. Для этого мне придется дать краткий обзор природы и свойств этих вычислительных машин.

Можно также сказать, что отождествление машин с цифровыми вычислительными машинами – равно как и наш критерий «мышления» – должно быть признано совершенно неудовлетворительным, если (вопреки моему убеждению) окажется, что цифровые вычислительные машины не в состоянии хорошо играть в имитацию.

Целый ряд вычислительных машин уже находится в действии, и естественно возникает вопрос: «А почему бы нам, вместо того чтобы сомневаться в правильности наших рассуждений, не поставить эксперимент? Удовлетворить условиям игры было бы нетрудно. В качестве задающих вопросы можно было бы использовать много различных людей, и полученные статистические данные показали бы, как часто задающим вопросы удавалось прийти к правильному заключению».

Коротко на этот вопрос можно ответить так: нас интересует не то, будут ли все цифровые вычислительные машины хорошо играть в имитацию, и не то, будут ли хорошо играть в эту игру те вычислительные машины, которыми мы располагаем в настоящее время; вопрос заключается в том, существуют ли воображаемые вычислительные[4] машины, которые могли бы играть хорошо. Но это только краткий ответ. Ниже мы рассмотрим этот вопрос в несколько ином свете.

IV. Цифровые вычислительные машины

То, что мы имеем в виду, говоря о цифровых вычислительных машинах, можно пояснить следующим образом. Предполагается, что эти машины могут выполнять любую операцию, которую мог бы выполнить человек-вычислитель. Мы считаем, что вычислитель придерживается определенных, раз навсегда заданных правил и не имеет права ни в чем отступать от них. Мы можем также считать, что эти правила собраны в книге, которая заменяется другой, когда вычислитель приступает к новой работе. У человека-вычислителя имеется также неограниченный запас бумаги, на которой он производит вычисления. Кроме того, он может выполнять операции сложения и умножения с помощью арифмометра – это несущественно.

Если данное выше пояснение принять за определение, то возникает угроза того, что наше рассуждение окажется движущимся в замкнутом круге. Чтобы избежать этой опасности, мы приведем перечень тех средств, с помощью которых достигается требуемый эффект. Можно считать, что цифровая вычислительная машина состоит из трех частей:

1) запоминающего устройства;

2) исполнительного устройства;

3) контролирующего устройства.

Запоминающее устройство – это склад информации. Оно соответствует бумаге, имеющейся у человека-вычислителя, независимо от того, является ли эта бумага той, на которой производятся выкладки, или той, на которой напечатана книга правил. Поскольку человек-вычислитель некоторые расчеты проводит в уме, часть запоминающего устройства машины будет соответствовать памяти вычислителя.

Исполнительное устройство – это часть машины, выполняющая разнообразные индивидуальные операции, из которых состоит вычисление. Характер этих операций изменяется от машины к машине. Обычно можно проделывать весьма громоздкие операции, например: «Умножить 3 540 675 445 на 7 076 345 687», однако на некоторых машинах можно выполнять только очень простые операции, вроде таких: «написать 0».

Мы уже упоминали, что имеющаяся у вычислителя «книга правил» заменяется в машине некоторой частью запоминающего устройства, которая в этом случае называется «таблицей команд». Обязанность контролирующего устройства – следить за тем, чтобы эти команды выполнялись безошибочно и в правильном порядке. Контролирующее устройство сконструировано так, что это происходит непременно.

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

«Число, хранящееся в ячейке 6809, прибавить к числу, хранящемуся в ячейке 4302, а результат поместить в ту ячейку, где хранилось последнее из чисел».

Нет необходимости говорить о том, что если все это выразить на русском языке, то машина не выполнит такую команду. Более удобно было бы закодировать эту команду в виде, например, числа 6809430217. Здесь 17 говорит о том, какую из различных операций, которые можно выполнять с помощью данной машины, следует проделать с числами, хранящимися в указанных ячейках. В данном случае имеется в виду описанная выше операция, т. е. операция «число… прибавить к числу…». Следует заметить, что сама команда занимает 10 цифр и, таким образом, заполняет одну ячейку памяти, что весьма удобно. Обычно контролирующее устройство выбирает необходимые команды в том порядке, в котором они расположены, но иногда могут встречаться и такие команды:

«Теперь выполнить команду, хранящуюся в ячейке 5606, и продолжать оттуда»

или же:

«Если ячейка 4505 содержит 0, выполнить команду, хранящуюся в ячейке 6707, в противном случае продолжать идти по порядку».

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

Читатель должен считать твердо установленным, что цифровые вычислительные машины можно строить на основе тех принципов, о которых мы рассказали выше, и что их действительно строят, придерживаясь этих принципов. Ему должно быть ясно, что цифровые вычислительные машины могут в действительности весьма точно подражать действиям человека-вычислителя.

Разумеется, описанная нами книга правил, которой пользуется вычислитель, является всего лишь удобной фикцией. На самом деле настоящие вычислители помнят, что они должны делать. Если мы хотим построить машину, подражающую действиям человека-вычислителя при выполнении некоторой сложной операции, то следует спросить последнего, как он выполняет эту операцию, и ответ представить в виде таблицы команд.

Составление таблицы команд обычно называют «программированием». «Запрограммировать выполнение машиной операции А» – значит ввести в машину подходящую таблицу команд, следуя которым, машина может выполнить операцию А.

Интересной разновидностью цифровых вычислительных машин являются «цифровые вычислительные машины со случайным элементом». Такие машины имеют команды, содержащие бросание игральной кости или какой-нибудь эквивалентный электронный процесс. Одной из таких команд может быть, например, следующая: «бросить кость и полученное при бросании число поместить в ячейку 1000». Иногда говорят, что такие машины обладают свободой воли (хотя лично я не стал бы употреблять такое выражение). Установить наличие «случайного элемента» в машине путем наблюдений за ее действием обычно оказывается невозможным, так как если сделать, например, выбор команды зависимым от последовательности цифр в десятичном разложении числа π, то результат получится совершенно аналогичный.

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

Сама идея цифровой вычислительной машины отнюдь не является новой. Чарлз Бэббедж[5], занимавший с 1828 по 1839 г. Люкасовскую кафедру по математике в Кембридже[6], разработал проект вычислительного устройства, названного им Аналитической машиной; создание ее, однако, так и не удалось завершить. Хотя у Бэббеджа были все основные идеи, существенные для создания такого механизма, его машина не имела перспектив. Скорость вычислений, которую позволила бы достичь машина Бэббеджа, оказалась бы, разумеется, выше скорости, достигаемой человеком, однако она была бы почти в 100 раз меньше, чем у той вычислительной машины, которая в настоящее время работает в Манчестере[7] и которая является одной из самых медленных современных машин. Запоминающее устройство в машине Бэббеджа было задумано как чисто механическое, с использованием карт и зубчатых колес.

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

V. Универсальность цифровых вычислительных машин

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

Например, если рассматривать выключатели осветительной сети, то удобно считать, отвлекаясь от действительного положения дела, что каждый выключатель может быть либо включен, либо выключен. То, что выключатель фактически имеет также и промежуточные состояния, несущественно для наших целей, и мы можем об этом забыть. Приведу пример машины с дискретными состояниями. Рассмотрим колесико, способное через каждую секунду совершать скачкообразный поворот (щелчок) на 120°, но которое можно застопоривать с помощью рычажка, управляемого извне. Пусть, кроме того, когда колесико принимает какое-нибудь определенное положение (одно из трех возможных для него), загорается лампочка. В абстрактном виде эта машина выглядит так. Внутреннее состояние машины (которое задается положением колесика) может быть qi q2 или q3. На вход машины подается либо сигнал i0, либо сигнал ii (положения рычажка). Внутреннее состояние в любой момент определено предыдущим состоянием и сигналом на входе согласно следующей таблице:

Сигналы на выходе, единственно видимые извне проявления внутреннего состояния (загорание лампочки), задаются таблицей:

Этот пример типичен для машин с дискретными состояниями. Такие машины можно описывать с помощью таблиц, при условии что они обладают конечным числом возможных состояний.

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

Как мы уже упоминали, цифровые вычислительные машины относятся к классу машин с дискретными состояниями. Но число состояний, в которых может находиться такая машина, обычно велико. Например, число состояний машины, работающей в настоящее время в Манчестере, равно приблизительно 2 165 000, т. е. почти 1 050 000. Сравните эту величину с числом состояний описанного выше «щелкающего» колесика. Нетрудно понять, почему число состояний вычислительной машины оказывается столь огромным. В вычислительной машине имеется запоминающее устройство, соответствующее бумаге, которой пользуется человек-вычислитель. Запоминающее устройство должно быть таково, чтобы в нем можно было записать любую комбинацию символов, которая может быть написана на бумаге. Для простоты допустим, что в качестве символов используются только цифры от 0 до 9. Различия в почерках не принимаются во внимание. Допустим, что человек-вычислитель располагает 100 листами бумаги, разграфленными на 50 строк каждый. Строка может вместить 30 цифр. Число состояний в этом случае равно 10 100 × 50 × 30, т. е. 10 150 000. Это приблизительно равно числу состояний трех Манчестерских машин, взятых вместе. Логарифм числа состояний по основанию 2 обычно называют «емкостью памяти» машины. Например, Манчестерская машина обладает емкостью памяти около 165 000, а машина с колесиком из нашего примера – около 1,6. Если две машины соединены вместе, то емкость памяти объединенной машины представляет собой сумму емкостей памяти составляющих машин. Это позволяет формулировать такие утверждения, как «Манчестерская машина содержит 64 магнитных трека (направляющих приспособлений) каждый емкостью по 2560, восемь электронно-лучевых трубок емкостью по 1280. Число различных запоминающих устройств доходит до 300, что в целом приводит к емкости памяти в 174 380 единиц».

Если задана таблица, соответствующая некоторой машине с дискретными состояниями, то можно предсказать на будущее, что будет делать эта машина. Нет причин, по которым эти вычисления не могли бы выполняться с помощью цифровой вычислительной машины. Если бы с помощью цифровой вычислительной машины можно было достаточно быстро производить вычисления, то ее можно было бы использовать для имитации поведения любой машины с дискретными состояниями. В «игре в имитацию» тогда могли бы участвовать: машина с дискретными состояниями (которая играла бы за В) и имитирующая ее цифровая вычислительная машина (в качестве A), и задающий вопросы не смог бы отличить их друг от друга. Разумеется, для этого необходимо, чтобы цифровая вычислительная машина имела надлежащую емкость памяти, а также работала достаточно быстро. Кроме того, ее пришлось бы снабжать новой программой для каждой новой машины, которую она должна была бы имитировать.

Именно это особое свойство цифровых вычислительных машин – то, что они могут имитировать любую машину с дискретными состояниями, и имеют в виду, когда говорят, что цифровые вычислительные машины являются универсальными машинами. Из того, что имеются машины, обладающие свойством универсальности, вытекает важное следствие: чтобы выполнять различные вычислительные процедуры, нам вовсе не нужно создавать все новые и новые разнообразные машины (если отвлечься от растущих требований к быстроте вычислений). Все вычисления могут быть выполнены с помощью одной-единственной цифровой вычислительной машины, если снабжать ее надлежащей программой для каждого случая. В дальнейшем мы увидим в качестве следствия из этого результата, что все цифровые вычислительные машины в каком-то смысле эквивалентны друг другу.

Теперь мы можем вернуться к вопросу, поднятому нами в конце раздела III. Там мы высказали предположение, что вопрос «Могут ли машины мыслить?» можно заменить вопросом «Существуют ли воображаемые цифровые вычислительные машины, которые могли бы хорошо играть в имитацию?». Если угодно, мы можем придать этому вопросу видимость еще большей общности и спросить: «Существуют ли машины с дискретными состояниями, которые могли бы хорошо играть в эту игру?» Но в свете того, что цифровые вычислительные машины универсальны, мы видим, что любой из этих вопросов эквивалентен следующему: «Если взять только одну конкретную цифровую вычислительную машину Ц, то спрашивается: справедливо ли утверждение о том, что, изменяя емкость памяти этой машины, увеличивая скорость ее действия и снабжая ее подходящей программой, можно заставить Ц удовлетворительно исполнять роль А в “игре в имитацию” (причем роль В будет исполнять человек)?»

VI. Противоположные точки зрения по основному вопросу

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

Читателю будет легче разобраться в этой дискуссии, если я сначала разъясню свои собственные убеждения. Рассмотрим сперва более точную форму вопроса. Я уверен, что лет через пятьдесят станет возможным программировать работу машин с емкостью памяти около 109, так чтобы они могли играть в имитацию настолько успешно, что шансы среднего человека установить присутствие машины через пять минут после того, как он начнет задавать вопросы, не поднимались бы выше 70 %. Первоначальный вопрос «Могут ли машины мыслить?» я считаю слишком неосмысленным, чтобы он заслуживал рассмотрения. Тем не менее я убежден, что к концу нашего века употребление слов и мнения, разделяемые большинством образованных людей, изменятся настолько, что можно будет говорить о мыслящих машинах, не боясь, что тебя поймут неправильно. Более того, я считаю вредным скрывать такие убеждения. Широко распространенное представление о том, что ученые с неуклонной последовательностью переходят от одного вполне установленного факта к другому, не менее хорошо установленному факту, не давая увлечь себя никакому непроверенному предположению, в корне ошибочно. Не будет никакого ущерба от того, что мы ясно осознаем, что является доказанным фактом, а что – предположением. Догадки очень важны, ибо они подсказывают направления, полезные для исследований.

Теперь я перехожу к рассмотрению мнений, противоположных моему собственному.

Теологическое возражение

«Мышление есть свойство бессмертной души человека. Бог дал бессмертную душу каждому мужчине и каждой женщине, но не дал души никакому другому животному или машинам. Следовательно, ни животное, ни машина не могут мыслить».

Я не могу согласиться ни с чем из того, что было только что сказано, и попробую возразить, пользуясь теологическими же терминами. Я счел бы данное возражение более убедительным, если бы животные были отнесены в один класс с людьми, ибо, на мой взгляд, между типичным одушевленным и типичным неодушевленным предметами имеется большее различие, чем между человеком и другими животными. Произвольный характер этой ортодоксальной точки зрения станет еще яснее, если мы рассмотрим, в каком свете она может представиться человеку, исповедующему какую-нибудь другую религию. Как, например, христиане отнесутся к точке зрения мусульман, считающих, что у женщин нет души? Но оставим этот вопрос и обратимся к основному возражению. Мне кажется, что из приведенного выше аргумента со ссылкой на душу у человека следует серьезное ограничение всесильности всемогущего. Пусть даже существуют определенные вещи, которые бог не может выполнить (например, сделать так, чтобы единица оказалась равной двум), но кто же из верующих не согласился бы с тем, что бог волен вселить душу в слона, если найдет, что слон этого заслуживает? Мы можем искать выход в предположении, что бог пользуется своей силой лишь в сочетании с мутациями, совершенствующими мозг настолько, что последний оказывается в состоянии удовлетворить требованиям души, которую бог желает вселить в слона. Но точно так же можно рассуждать и в случае машин. Это рассуждение может показаться отличным лишь потому, что в случае машин его труднее «переварить». По сути дела, это означает, что мы считаем весьма маловероятным, чтобы бог счел обстоятельства подходящими для того, чтобы дать душу машине, т. е. речь идет в действительности о других аргументах, которые обсуждаются в остальной части статьи. Пытаясь построить мыслящие машины, мы поступаем по отношению к богу не более непочтительно, узурпируя его способность создавать души, чем мы делаем это, производя потомство; в обоих случаях мы являемся лишь орудиями его воли и производим лишь убежища для душ, которые творит опять-таки бог. Все это, однако, пустые рассуждения. В пользу чего бы ни приводили такого рода теологические доводы, они не производят на меня особого впечатления. Однако в старину подобные аргументы находили весьма убедительными. Во времена Галилея полагали, что такие церковные тексты, как «Стояло солнце среди неба и не спешило к западу почти целый день» (Книга Иисуса Навина, глава X, стих XIII) и «Ты поставил землю на твердых основах: не поколеблется она в веки и веки» (псалмы Давида, псалом 103, стих 5), в достаточной мере опровергали теорию Коперника. В наше время такого рода доказательство представляется беспочвенным. Но когда современный уровень знаний еще не был достигнут, подобные доводы производили совсем другое впечатление.

Возражение со «страусовой» точки зрения

«Последствия машинного мышления были бы слишком ужасны. Будем надеяться и верить, что машины не могут мыслить».

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

Я не считаю, что это возражение является достаточно существенным, для того чтобы требовалось какое-либо опровержение. Утешение здесь было бы более подходящим; не предложить ли искать его в учении о переселении душ?

Математическое возражение

Имеется ряд результатов математической логики, которые можно использовать для того, чтобы показать наличие определенных ограничений возможностей машин с дискретными состояниями. Наиболее известный из этих результатов – теорема Геделя[8] – показывает, что в любой достаточно мощной логической системе можно сформулировать такие утверждения, которые внутри этой системы нельзя ни доказать, ни опровергнуть, если только сама система непротиворечива. Имеются и другие, в некотором отношении аналогичные, результаты, принадлежащие Черчу, Клини, Россеру и Тьюрингу. Результат последнего особенно удобен для нас, так как относится непосредственно к машинам, в то время как другие результаты можно использовать лишь как сравнительно косвенный аргумент (например, если бы мы стали опираться на теорему Геделя, нам понадобились бы еще и некоторые средства описания логических систем в терминах машин и машин в терминах логических систем). Результат Тьюринга относится к такой машине, которая, в сущности, является цифровой вычислительной машиной с неограниченной емкостью памяти. Он устанавливает, что существуют определенные вещи, которые эта машина не может выполнить. Если она устроена так, чтобы давать ответы на вопросы, как в «игре в имитацию», то будут вопросы, на которые она или даст неверный ответ, или не сможет дать ответа вообще, сколько бы ни было ей предоставлено для этого времени. Таких вопросов, конечно, может быть много, и на вопросы, на которые нельзя получить ответ от одной машины, можно получить удовлетворительный ответ от другой. Мы здесь, разумеется, предполагаем, что вопросы принадлежат скорее к таким, которые допускают ответ «Да» или «Нет», чем к таким, как «Что вы думаете о Пикассо?». Следующего типа вопросы относятся к числу таких, на которые, как нам известно, машина не может дать ответ: «Рассмотрим машину, характеризующуюся следующим:… Будет ли эта машина всегда отвечать “Да” на любой вопрос?» Если на место точек подставить описание (в какой-либо стандартной форме, например подобной той, которая была использована нами в разделе V) такой машины, которая находится в некотором сравнительно простом отношении к машине, к которой мы обращаемся с нашим вопросом, то можно показать, что ответ на этот вопрос окажется либо неверным, либо его вовсе не будет. В этом и состоит математический результат; утверждают, будто он доказывает ограниченность возможностей машин, которая не присуща разуму человека. Ответ на это возражение вкратце состоит в следующем. Установлено, что возможности любой конкретной машины ограничены, однако в разбираемом возражении содержится голословное, без какого бы то ни было доказательства, утверждение, что подобные ограничения не применимы к разуму человека. Я не думаю, чтобы можно было так легко игнорировать эту сторону дела. Когда какой-либо из такого рода машин задают соответствующий критический вопрос и она дает определенный ответ, мы заранее знаем, что ответ будет неверным, и это дает нам чувство известного превосходства. Не является ли это чувство иллюзорным? Несомненно, оно бывает довольно искренним, но я не думаю, чтобы ему следовало придавать слишком большое значение. Мы сами слишком часто даем неверные ответы на вопросы, чтобы то чувство удовлетворения, которое возникает у нас при виде погрешности машин, имело оправдание. Кроме того, чувство превосходства может относиться лишь к той машине, над которой мы одержали свою – в сущности, весьма скромную – победу. Не может быть и речи об одновременном торжестве над всеми машинами. Значит, короче говоря, для любой отдельной машины могут найтись люди, которые умнее ее, однако в этом случае снова могут найтись другие, еще более умные машины, и т. д.

Я думаю, что те, кто разделяет точку зрения, выраженную в математическом возражении, как правило, охотно примут «игру в имитацию» в качестве основы дальнейшего рассмотрения. Те же, кто убежден в справедливости двух предыдущих возражений, будут, вероятно, вообще не заинтересованы ни в каком критерии.

Возражение с точки зрения сознания

Это возражение особенно ярко выражено в выступлении профессора Джефферсона[9] на Листеровских чтениях[10] за 1949 год, откуда я и привожу цитату. «До тех пор, пока машина не сможет написать сонет или сочинить музыкальное произведение, побуждаемая к тому собственными мыслями и эмоциями, а не за счет случайного совпадения символов, мы не можем согласиться с тем, что она равносильна мозгу, т. е. что она может не только написать эти вещи, но и понять то, что ею написано. Ни один механизм не может чувствовать (а не просто искусственно сигналить, для чего требуется достаточно несложное устройство) радость от своих успехов, горе от постигших неудач, удовольствие от лести, огорчение из-за совершенной ошибки, не может быть очарованным противоположным полом, не может сердиться или быть удрученным, если ему не удается добиться желаемого».

Это рассуждение, по-видимому, означает отрицание нашего критерия. Согласно самой крайней форме этого взгляда, единственный способ, с помощью которого можно удостовериться в том, что машина может мыслить, состоит в том, чтобы стать машиной и осознавать процесс собственного мышления. Свои переживания можно было бы потом описать другим, но, конечно, подобное сообщение никого бы не удовлетворило. Точно так же если следовать этому взгляду, то окажется, что единственный способ убедиться в том, что данный человек действительно мыслит, состоит в том, чтобы стать именно этим человеком. Фактически эта точка зрения является солипсистской[11]. Быть может, подобные воззрения весьма логичны, но если исходить из них, то обмен идеями становится весьма затруднительным. Согласно этой точке зрения, А обязан думать, что «А мыслит, а В нет», в то время как В убежден в том, что «В мыслит, а А нет». Вместо того чтобы постоянно спорить по этому вопросу, обычно принимают вежливое соглашение о том, что мыслят все.

Я уверен, что профессор Джефферсон отнюдь не желает стоять на этой крайней солипсистской точке зрения. Вероятно, он весьма охотно принял бы в качестве критерия «игру в имитацию». Эта игра (если игрок В не участвует) нередко применяется на практике под названием viva voce[12], для того чтобы установить, понял ли действительно данный человек некоторую вещь или он заучил нечто «как попугай».

Вот отрывок из такой игры.

Задающий вопросы. Не находите ли Вы, что в первой строке Вашего сонета «Сравню ль тебя я с летним днем» выражение «с весенним днем» звучало бы лучше?

Отвечающий. Оно нарушало бы размер стиха.

Задающий вопросы. А если сказать «с зимним днем»? С размером здесь все обстоит благополучно.

Отвечающий. Это так, но никто не захочет, чтобы его сравнивали с зимним днем.

Задающий вопросы. А разве мистер Пиквик не напоминает Вам рождество?

Отвечающий. Некоторым образом, да.

Задающий вопросы. Но рождество – зимний день, и я не думаю, чтобы мистер Пиквик имел что-нибудь против этого сравнения.

Отвечающий. Я не думаю, что Вы говорите все это всерьез. Когда говорят о зимнем дне, имеют в виду обычный зимний день, а не какой-то особенный, вроде рождества.

И так далее. Что бы сказал профессор Джефферсон, если бы машина, пишущая сонеты, могла отвечать примерно так, как это было в приведенном выше отрывке из viva voce? Не знаю, стал ли бы он рассматривать ответы машины лишь как «просто искусственную сигнализацию». Если бы ее ответы были столь же связными и удовлетворительными по содержанию, как в приведенном выше отрывке, я не думаю, чтобы профессор Джефферсон охарактеризовал это как дело, выполнить которое может «достаточно несложное устройство». Эту фразу из его выступления следует, по-видимому, относить к таким случаям, когда в машине имеется, скажем, граммофонная пластинка с записью сонета в чьем-либо исполнении, а также механизм, с помощью которого эту запись можно время от времени включать.

Короче говоря, я считаю, что большинство из тех, кто поддерживает возражение с точки зрения сознания (consciousness), скорее откажутся от своих взглядов, чем признают солипсистскую точку зрения. В таком случае они, по-видимому, охотно примут наш критерий.

Мне не хотелось бы создавать впечатление, будто я считаю, что в сознании нет ничего загадочного. Например, неудача наших попыток локализовать сознание похожа на парадокс. Но я вовсе не думаю, что загадки, связанные с сознанием, непременно должны быть разъяснены прежде, чем мы окажемся в состоянии ответить на вопрос, рассматриваемый в настоящей статье.

Возражения, исходящие из того, что машина не все может выполнить

Обычно эти возражения выражают в такой форме: «Я согласен с тем, что вы можете заставить машины делать все, о чем Вы упоминали, но Вам никогда не удастся заставить их делать А». При этом перечисляют довольно длинный список значений этого X. Я предлагаю читателю выбирать:

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

Обычно в подтверждение подобных высказываний не приводят никаких доводов. Я убежден, что эти высказывания основываются главным образом на принципе неполной индукции[13]. Человек в течение своей жизни видел тысячи машин. Из того, что он видел, он делает ряд общих заключений. Машины безобразны, каждая из них создана для того, чтобы выполнять весьма ограниченные задачи, и если необходимо сделать нечто иное, они бесполезны, вариации их поведения крайне незначительны и т. д. и т. п. Естественно, человек делает вывод, что все это является необходимыми особенностями всех машин в целом. Многие из этих ограничений связаны с очень маленькой емкостью памяти большинства машин. (При этом я предполагаю, что понятие емкости памяти машины несколько обобщено таким образом, что охватывает и машины, отличные от машин с дискретными состояниями. Точное определение не играет здесь никакой роли, так как в настоящем рассмотрении мы не претендуем на математическую строгость.) Несколько лет назад, когда очень немногие знали о цифровых вычислительных машинах, часто приходилось встречаться с недоверчивым отношением к тому, что о них рассказывали, если об их замечательных свойствах говорили, не объясняя, как такие машины устроены. Это, вероятно, происходило из-за того, что слушавшие шаблонно применяли принцип неполной индукции. Разумеется, применение этого принципа происходило в основном бессознательно. Если ребенок, обжегшись один раз, боится огня и выражает страх перед огнем тем, что избегает его, то я бы сказал, что он применяет неполную индукцию (само собой разумеется, поведение ребенка можно описать и по-другому). Я не думаю, чтобы трудовая деятельность и обычаи человечества были особенно удачным материалом для применения неполной индукции. Большую часть пространственно-временного континуума (space-time) необходимо пытливо исследовать, если мы хотим получить надежные результаты. В противном случае мы можем прийти, скажем, к выводу (к которому приходит большинство английских детей), что все говорят по-английски и что глупо изучать французский язык. Однако относительно многого из того, что было названо в числе вещей, недоступных машине, следует сделать особые оговорки. Неспособность машины получать удовольствие от клубники со сливками может показаться читателю пустяком. Весьма возможно даже, что мы могли бы сделать так, чтобы машина получала удовольствие от этого изысканного блюда, но любая попытка в этом направлении была бы идиотизмом. Эта неспособность машины приобретает значение лишь в сочетании с другими труднодоступными для нее вещами, например в сочетании с трудностью установления между нею и человеком такого же отношения дружелюбия, какое бывает между двумя людьми.

Утверждение «Машины не могут совершать ошибок» кажется мне курьезным. Его пытаются парировать: «А разве от этого они хуже?» Отнесемся к этому утверждению не столь враждебно и попытаемся понять, что имеют в виду в действительности. Я думаю, что возражение, содержащееся в утверждении «Машины не могут совершать ошибок», можно пояснить с помощью «игры в имитацию». Требуется, чтобы задающий вопросы отличил машину от человека, просто задавая им ряд арифметических задач; машина должна разоблачить себя вследствие своей высокой точности. Ответ на эту аргументацию очень прост. Можно сделать так, чтобы машина (запрограммированная для участия в игре) не стремилась давать правильные ответы на арифметические задачи. Она может в известной мере специально вводить ошибки в вычисления, для того чтобы сбить с толку задающего вопросы. Что касается ошибок, связанных с механическими неисправностями, то такие ошибки обнаружат себя, по-видимому, тем, что ошибочный результат в этом случае окажется трудно подвести под некоторый общий род типичных арифметических ошибок. Однако даже такая интерпретация данного возражения не является приемлемой. Размеры настоящей статьи не позволяют нам остановиться на этом более подробно. Мне кажется, что это возражение возникает потому, что смешивают ошибки двух видов. Их можно называть «ошибками функционирования» и «ошибками вывода». Ошибки функционирования происходят вследствие некоторых механических или электрических неисправностей, в результате которых машина ведет себя не так, как это было намечено. В философских дискуссиях обычно отвлекаются от возможности ошибок такого рода; поэтому подвергают рассмотрению «абстрактные машины». Эти абстрактные машины – математические фикции, а не реально существующие объекты. По определению, они не могут иметь ошибок функционирования. В этом смысле мы действительно можем сказать, что «машины никогда не могут ошибаться». Ошибки вывода могут возникать лишь тогда, когда сигналу на выходе машины придан определенный смысл. Например, машина может выдавать в печатном виде математические уравнения или какие-нибудь высказывания на русском языке. Если при этом печатается ложное предложение, мы говорим, что машина совершила ошибку вывода. У нас, очевидно, вовсе нет оснований для утверждения, что машина не может совершать ошибок этого рода. Например, она может только и делать, что печатать «0 = 1». В качестве более естественного примера рассмотрим машину, располагающую каким-то методом для того, чтобы делать заключения на основе неполной индукции. Мы должны ожидать, что такой метод в отдельных случаях будет давать ошибочные результаты.

На утверждение о том, что машина не может иметь предметом своей мысли самое себя, можно, конечно, дать ответ лишь в том случае, если бы было возможно показать, что машина вообще имеет какие-либо мысли, выражающие какое-либо предметное содержание. Все же выражение «предметное содержание машинных операций» имеет некоторый смысл, по крайней мере для тех, кто имеет дело с машинными вычислениями. Если, например, машина решает уравнение х2 – 40х – 11 = 0, то уравнение можно считать частью предметного содержания операций машины в данный момент. В этом смысле содержанием операций машины, безусловно, может быть она сама. Ее можно использовать при составлении своей собственной программы или для предсказания последствий, вызываемых изменениями в ее устройстве. Наблюдая результаты своего поведения, машина сможет изменять свои собственные программы, с тем чтобы быть более эффективной в достижении некоторой цели. Все это станет возможно в ближайшем будущем; это не утопические мечты.

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

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

Возражение леди Лавлейс

Наиболее подробные сведения, которыми мы располагаем об Аналитической машине Бэббеджа, берутся из воспоминаний леди Лавлейс[14]. В них она высказывает такую мысль: «Аналитическая машина не претендует на то, чтобы создавать что-то действительно новое. Машина может выполнить все то, что мы умеем ей предписать» (курсив леди Лавлейс). Это высказывание цитируется Хартри[15], который добавляет: «Отсюда не следует, что невозможно сконструировать электронное устройство, которое “мыслит” или в котором, пользуясь биологическими терминами, можно вырабатывать условные рефлексы, на основе которых становится возможным “обучение”. Увлекательный и будоражащий вопрос, подсказанный некоторыми из последних достижений, состоит в том, осуществимо это принципиально или нет. Однако не видно, чтобы машины, построенные или запроектированные до настоящего времени, обладали этим свойством».

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

Весь этот вопрос будет рассмотрен еще раз в разделе, посвященном обучающимся машинам.

Один из вариантов аргумента госпожи Лавлейс – это утверждение, гласящее, что машина «никогда не может создать ничего подлинно нового». На секунду возразим поговоркой, что вообще «ничто не ново под луной». Кто может быть уверенным в том, что выполненная им «оригинальная работа» не была ростком из зерна, посеянного образованием, или просто результатом применения хорошо известных общих принципов? Более удачный вариант этого возражения состоит в утверждении, что машина никогда «не может ничем поразить человека». Это утверждение представляет собой прямой вызов, который, однако, мы можем принять, не уклоняясь. Лично меня машины удивляют очень часто. В основном это происходит потому, что я не могу точно рассчитать, чего можно, а чего нельзя ожидать от них, или (это бывает чаще) потому, что хотя я и провожу необходимые расчеты, однако делаю это в спешке, неряшливо, рискуя ошибиться. Вот я говорю себе: «По-видимому, электрическое напряжение здесь должно быть таким же, как там: во всяком случае, будем исходить из этого предположения». Само собой разумеется, что в таких случаях я часто ошибаюсь, и получающийся результат оказывается для меня неожиданностью, так как к тому времени, когда эксперимент заканчивается, сделанное допущение уже забыто мною. Эти предположения и натяжки я оставляю открытыми до лекции на тему о моих порочных методах работы. Однако я нисколько не сомневаюсь в том, что действительно испытываю удивление перед машинами.

Я не жду, что этот ответ заставит замолчать моего противника. Вероятно, он скажет, что это удивление происходит вследствие некоторого творческого умственного акта с моей стороны и отражает мое недоверие к машине. Но такая аргументация уводит от вопроса о том, может ли машина чем-либо удивить человека, и возвращает снова к возражению с точки зрения сознания. Этот способ аргументации должен, таким образом, считаться исчерпанным, хотя, быть может, стоит все же отметить то обстоятельство, что если нечто поражает нас своей неожиданностью, то удивление, которое мы испытываем, – независимо от того, что является его источником: человек, книга, машина или еще что-нибудь, – требует «творческого умственного акта».

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

Возражение, основанное на непрерывности действия нервной системы

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

То, что машина с дискретными состояниями должна отличаться от машины непрерывного действия, это, конечно, справедливо. Однако если мы будем придерживаться условий «игры в имитацию», то задающий вопросы не сможет использовать это различие. Данную ситуацию можно сделать яснее, рассмотрев другую, более простую машину непрерывного действия. Для этого особенно хорошо подходит дифференциальный анализатор. (Дифференциальный анализатор – это машина определенного рода, не относящаяся к типу машин с дискретными состояниями, применяемая для вычислений некоторых видов[16]. Некоторые из дифференциальных анализаторов выдают ответы в напечатанном виде и поэтому пригодны для игры в имитацию. Цифровая вычислительная машина не может предсказать, какие в точности ответы даст дифференциальный анализатор, решая некоторую задачу, но зато она может сама находить ответы правильного характера на ту же задачу. Например, если требуется найти значение числа π(в действительности приблизительно равное 3,1416), то цифровая вычислительная машина могла бы осуществлять случайный выбор его значения из множества чисел 3,12; 3,13; 3,14; 3,15; 3,16, имеющих соответственно такие (например) вероятности выбора: 0,05; 0,15; 055; 0,18; 0,06. При этих условиях задающему вопросы будет очень трудно отличить дифференциальный анализатор от цифровой вычислительной машины.

Возражение с точки зрения неформальности поведения человека

Невозможно выработать правила, предписывающие, что именно должен делать человек во всех случаях, при всех возможных обстоятельствах. Например, пусть имеется правило, согласно которому человеку следует остановиться, если включен красный свет светофора, и продолжать движение, если свет зеленый; но как быть, если по ошибке оба световых сигнала появятся одновременно? По-видимому, безопаснее всего остановиться. Однако это решение в дальнейшем может быть источником каких-либо новых затруднений. Рассуждая так, мы приходим к заключению, что любая попытка сформулировать правила действия, предусматривающие любой возможный случай, обречена на провал, даже если ограничиться областью транспортной сигнализации. Со всем этим я согласен.

Основываясь на сказанном, доказывают, что мы не можем быть машинами. Я попытаюсь воспроизвести это доказательство, хотя боюсь, что вряд ли сумею сделать это хорошо. Выглядит оно приблизительно так: «Если бы каждый человек обладал определенной совокупностью правил действия, следуя которым, он живет, он был бы не чем иным, как машиной. Однако таких правил не существует. Следовательно, человек не может быть машиной». В этом рассуждении бросается в глаза ошибка, связанная с нераспределенностью термина. Я не думаю, чтобы когда-нибудь это возражение излагали именно в такой форме, однако я убежден, что рассуждение этого рода все же находит применение. Однако оно основано на смешении терминов «правила действия» (rules of conduct) и «законы поведения» (laws of behaviour), что затемняет вопрос. Под «правилами действия» я понимаю такие предписания, как «остановитесь, если увидите красный свет»; такие предписания могут определять наши действия и осознаваться нами. Под «законами поведения» я понимаю управляющие человеком естественные законы, например «если человека ущипнуть, он вскрикнет». Если в приведенном выше рассуждении вместо «правил действия, которыми человек руководствуется в своей жизни» подставить «законы поведения, управляющие жизнью человека», то ошибка, связанная с нераспределенностью термина, оказывается вполне устранимой[17]. Ибо мы убеждены не только в том, что быть управляемым законами поведения – значит, быть некоторым родом машины (не обязательно машиной с дискретными состояниями), но что и, наоборот, быть такой машиной означает быть управляемым законами поведения[18]. Однако в отсутствии законов поведения, которые в своей совокупности полностью определяли бы нашу жизнь, нельзя убедиться столь же легко, как в отсутствии законченного списка правил действия. Единственно известный нам способ отыскания таких законов есть научное наблюдение, и, конечно, мы никогда и ни при каких обстоятельствах не можем сказать: «Мы уже достаточно исследовали. Законов, которые полностью бы определяли нашу жизнь и поведение, не существует».

Мы можем с большей убедительностью показать, что любое утверждение такого рода является неоправданным. Действительно, допустим, что мы были бы в состоянии отыскать такие законы (если они существуют). Тогда, если нам будет дана некоторая машина с дискретными состояниями, становится возможным получить посредством наблюдения над ней достаточно данных, чтобы предсказать ее поведение в будущем, причем сделать это можно будет в приемлемый срок, скажем в 1000 лет. Но, по-видимому, дело обстоит не так. Я вводил в Манчестерскую вычислительную машину небольшую программу, занимающую 1000 ячеек памяти, используя которую, машина в ответ на введенное в нее 16-значное число выдает в течение двух секунд другое 16-значное число. Попытайтесь-ка извлечь из этих ответов такую информацию о программе машины, которая была бы достаточна для предсказания ее ответа на любое, еще не испробованное число. Держу пари, что вам это не удастся.

Возражение с точки зрения сверхчувственного восприятия

Я предполагаю, что читателю знакомо понятие о сверхчувственном восприятии и его четырех разновидностях, именно о телепатии, ясновидении, способности к прорицанию и психокинезисе[19]. Эти поразительные явления, по-видимому, опровергают все наши обычные научные представления. Как бы нам хотелось доказать их несостоятельность! К несчастью, статистические данные, по крайней мере в случае телепатии, на их стороне. Очень трудно перестроить наши представления так, чтобы охватить и эти новые факты, ибо тот, кто верит в сверхчувственное восприятие, по-видимому, не так уже далек от веры в чертей и духов. Ведь взгляд, что жизнь и деятельность человека подчиняются только естественным законам (laws of physics) – как тем, которые уже известны нам, так и тем, которые еще не открыты, но которые предполагаются в некотором смысле аналогичными уже открытым, – напрашивается прежде всего[20].

Возражение с точки зрения сверхчувственного восприятия, по моему мнению, является достаточно серьезным. На него можно было бы возразить, сказав, что многие научные теории, несмотря на весь шум вокруг сверхчувственного восприятия, остаются применимыми на практике, так что в действительности можно прекрасно обойтись и без него, попросту забыв о его существовании. Это, пожалуй, слабое утешение; есть опасение, что мышление относится как раз к одному из тех явлений, к которым сверхчувственное восприятие имеет, быть может, непосредственное отношение.

Не в столь общей форме возражение, основанное на сверхчувственном восприятии, может быть выражено так: «Будем играть в имитацию, используя в качестве отвечающих на вопросы человека, способного воспринимать телепатические воздействия, и цифровую вычислительную машину. Задающий вопросы может сформулировать, например, такой вопрос: “Какой масти карта в моей правой руке?” Человек с помощью телепатии или ясновидения дает правильные ответы в 130 случаях из 400. Ответы же машины могут только случайно оказаться правильными, и она сможет угадать масть, скажем, лишь в 104 случаях. Это позволит задающему вопросы отличить человека от машины».

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

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

VII. Обучающиеся машины

Читатель, вероятно, уже почувствовал, что у меня нет особенно убедительных аргументов позитивного характера в пользу своей собственной точки зрения. Если бы у меня были такие аргументы, я не стал бы так мучиться, разбирая ошибки, содержащиеся во мнениях, противоположных моему собственному. Сейчас я изложу те доводы, которыми я располагаю.

Вернемся на секунду к возражению графини Лавлейс, согласно которому машина может выполнять лишь то, что мы ей приказываем. Можно сказать, что человек «вставляет» в машину ту или иную идею, и машина, прореагировав на нее некоторым образом, возвращается затем к состоянию покоя, подобно фортепианной струне, по которой ударил молоточек. Другое сравнение: атомный реактор, размеры которого не превышают критических. Идея, вводимая человеком в машину, соответствует здесь нейтрону, влетающему в реактор извне. Каждый такой нейтрон вызывает некоторое возмущение, которое в конце концов замирает. Но если величина реактора превосходит критические размеры, то весьма вероятно, что возмущение, вызванное влетевшим нейтроном, будет нарастать и приведет в конце концов к разрушению реактора. Имеют ли место аналогичные явления в случае человеческого разума, и существует ли нечто подобное в случае машин? В первом случае, кажется, следует дать утвердительный ответ. Большинство умов, по-видимому, являются «подкритическими», т. е. соответствуют, если пользоваться проведенным выше сравнением, подкритическим размерам атомного реактора. Идея, ставшая достоянием такого ума, в среднем порождает менее одной идеи в ответ. Несравненно меньшую часть умов составляют умы надкритические. Идея, ставшая достоянием такого ума, может породить целую «теорию», состоящую из вторичных, третичных и еще более отдаленных идей. Ум (mind) животных, по-видимому, явным образом подкритичен. Развивая нашу аналогию, мы ставим вопрос: «Можно ли сделать машину надкритической?»

Для уяснения поставленного вопроса имеет смысл прибегнуть еще к одной аналогии, именно уподобить человеческий разум луковице. Рассматривая функции ума или мозга, мы обнаруживаем определенные операции, которые возможно полностью объяснить в терминах чисто механического процесса. Можно сказать, что они не соответствуют подлинному разуму: это своего рода «кожица», которую следует удалить, для того чтобы обнаружить настоящий разум. Однако, рассматривая оставшуюся часть, мы снова найдем «кожицу», которую следует удалить, и т. д. Возникает вопрос: если мы будем продолжать этот процесс, удастся ли нам прийти когда-нибудь к «настоящему» разуму или же, в конце концов, мы снимем кожицу, под которой ничего не останется? В последнем случае мы считаем, что разум имеет механический характер. (Правда, он не может быть машиной с дискретными состояниями. Этот вопрос мы уже рассматривали.)

Два последних абзаца вовсе не претендуют на роль убедительных доказательств. Их скорее следовало бы считать аргументами риторического характера.

Единственно убедительное доказательство, которое могло бы подтвердить правильность нашей точки зрения, приведено в начале раздела VI и состоит в том, чтобы подождать до конца нашего столетия и провести описанный эксперимент. А что же можно сказать в настоящее время? И что можно было бы предпринять уже сейчас, если исходить из предположения, что эксперимент окажется успешным?

Как я уже объяснял, проблема заключается главным образом в программировании. Прогресс в инженерном деле также необходим, однако маловероятно, чтобы затруднение возникло с этой стороны. Оценки емкости памяти человеческого мозга колеблются от 1010 до 1015 двоичных единиц. Я склоняюсь к нижней границе и убежден, что лишь очень небольшая доля емкости памяти человека используется в высших типах мышления, причем из того, что используется, большая часть служит сохранению зрительных восприятий. Для меня было бы неожиданностью, если бы оказалось, что для игры в имитацию на удовлетворительном уровне требуется емкость памяти, превышающая 109, во всяком случае, если бы игра велась против слепого человека. (Заметьте: емкость Британской энциклопедии, 11-е изд., составляет 2*109.) Емкость памяти, равная 107, практически представляется вполне осуществимой, даже при современном состоянии техники. Вероятно, нет необходимости вообще далее увеличивать скорость машинных операций. Те части современных машин, которые можно рассматривать как аналоги[21] нервных клеток, работают примерно в тысячу раз быстрее последних. Это создает «запас надежности», могущий компенсировать потери в быстроте, возникающие во многих случаях. Перед нами стоит задача составить машинную программу для игры в имитацию. В настоящее время скорость моей работы как программиста составляет примерно тысячу знаков в день; если исходить из такой скорости программирования, то получится, что шестьдесят работников могли бы полностью закончить работу, о которой идет речь, если бы они работали непрерывно в течение пятидесяти лет, при условии, конечно, что ничего не пойдет в корзину для бумаг. Желателен, по-видимому, какой-нибудь более производительный метод[22].

Пытаясь имитировать ум (mind) взрослого человека, мы вынуждены много размышлять о том процессе, в результате которого человеческий интеллект достиг своего нынешнего состояния. Мы можем выделить три компоненты:

1) первоначальное состояние ума, скажем, в момент рождения;

2) воспитание, объектом которого он был;

3) другого рода опыт, воздействовавший на ум, – опыт, который нельзя назвать воспитанием.

Почему бы нам, вместо того чтобы пытаться создать программу, имитирующую ум взрослого, не попытаться создать программу, которая бы имитировала ум ребенка? Ведь если ум ребенка получает соответствующее воспитание, он становится умом взрослого человека. Как можно предположить, мозг ребенка в некотором отношении подобен блокноту, который мы покупаем в киоске: совсем небольшой механизм и очень много чистой бумаги. Наш расчет состоит в том, что механизм в мозгу ребенка настолько несложен, что устройство, ему подобное, может быть легко спрограммировано. В качестве первого приближения можно предположить, что количество труда, необходимое для воспитания такой машины, почти совпадает с тем, которое необходимо для воспитания ребенка.

Таким образом, мы расчленили нашу проблему на две части: на задачу построить «программу-ребенка» и задачу осуществить процесс воспитания. Обе эти части тесно связаны друг с другом. Вряд ли нам удастся получить хорошую «машину-ребенка» с первой же попытки. Надо провести эксперимент по обучению какой-либо из машин такого рода и выяснить, как она поддается научению. Затем провести тот же эксперимент с другой машиной и установить, какая из двух машин лучше. Существует очевидная связь между этим процессом и эволюцией в живой природе, которая обнаруживается, когда мы отождествляем: структуру «машины-ребенка» – с наследственным материалом, изменения, происходящие в «машине-ребенке», – с мутациями, решение экспериментатора – с естественным отбором.

Тем не менее можно надеяться, что этот процесс будет протекать быстрее, чем эволюция. Выживание наиболее приспособленных является слишком медленным способом оценки преимуществ. Экспериментатор, применяя силу интеллекта (intelligence), может ускорить процесс оценки. В равной степени важно и то, что он не ограничен использованием только случайных мутаций. Если экспериментатор может проследить причину некоторого недостатка, он, вероятно, в состоянии придумать и такого рода мутацию, которая приведет к необходимому улучшению.

Невозможно применять в точности один и тот же процесс обучения как к машине, так и к нормально развитому ребенку. Например, машину нельзя снабдить ногами; поэтому ее нельзя попросить выйти и принести ведро угля. Машина, по-видимому, не будет обладать глазами. И как бы хорошо ни удалось восполнить эти недостатки с помощью различных остроумных приспособлений, такое существо нельзя будет послать в школу без того, чтобы другие дети не потешались над ним. И вот такое существо мы должны чему-то научить. Отметим, что не стоит особенно беспокоиться относительно ног, глаз и т. д. Пример мисс Елены Келлер[23] показывает, что воспитание возможно, если только удается тем или иным способом установить двустороннюю связь между учителем и учеником.

Обычно процесс обучения в нашем представлении связан с наказаниями и поощрениями. Идея применения какой-либо формы этого принципа обучения может лежать в основе конструирования и программирования некоторых простых «машин-детей». В этом случае машину следует устроить таким образом, чтобы поступление в нее сигнала-«наказания» приводило к резкому уменьшению вероятности повторения тех реакций машины, которые непосредственно предшествовали этому сигналу, в то время как сигнал-«поощрение», наоборот, увеличивал бы вероятность тех реакций, которые ему предшествовали (которые его «вызвали»). Все это не предполагает со стороны машины никаких чувств. Я проделал несколько экспериментов с одной такой «машиной-ребенком» и достиг кое-какого успеха в обучении ее некоторым вещам, но метод обучения был слишком необычен, чтобы эксперимент можно было считать действительно успешным.

Применение поощрений и наказаний в лучшем случае может быть лишь частью процесса обучения. Проще говоря, если у учителя нет других средств общения со своими учениками, то количество информации, которую может получить ученик, не превышает общего числа примененных к нему поощрений и наказаний. Вероятно, к тому времени, когда ребенок выучит наизусть стихотворение «Касабьянка»[24], он будет до крайности измучен, если процесс обучения будет идти по методу игры в «20 вопросов»[25], причем каждое «нет» учителя будет принимать для ученика форму подзатыльника. В силу этого необходимо иметь какие-то другие, «неэмоциональные» каналы связи. Если такие каналы имеются, то, применяя поощрения и наказания, машину можно было бы научить выполнять команды, отдаваемые на каком-либо – например, символическом – языке. Эти команды следует передавать по «неэмоциональным каналам». Применение такого символического языка значительно снизит число требуемых поощрений и наказаний. О том, какая степень сложности является наиболее пригодной для «машины-ребенка», могут быть различные мнения. Можно стремиться к тому, чтобы «машина-ребенок» была настолько простой, насколько этого возможно добиться, не нарушая общих принципов. Можно идти противоположным путем: «встраивать»[26] сложную систему логического вывода. В последнем случае значительную часть запоминающего устройства заняли бы определения и суждения (propositions). Суждения по своему характеру должны быть различного рода, например: утверждения о хорошо известных фактах, предположения, математически доказанные теоремы, высказывания авторитетных лиц, выражения, по своей логической форме являющиеся суждениями, но не претендующие на верность. Некоторые из этих суждений могут быть охарактеризованы как «приказания». Машину следует устроить так, чтобы, как только некоторое приказание будет оценено ею как «вполне достоверное» (well-established), автоматически выполнялась соответствующая операция. Чтобы пояснить это, предположим, что учитель говорит машине: «Теперь выполняй домашнее задание», а машина реагирует на это тем, что ситуация «Учитель говорит машине: “Теперь выполняй домашнее задание”» включается в число вполне достоверных фактов. Другим фактом такого же рода в ней может быть: «Все, что говорит учитель, истинно». Комбинация этих фактов может[27], в заключение, вести к тому, что приказание «Теперь выполняй домашнее задание» тоже будет включено в разряд вполне надежных фактов, а это, в свою очередь, будет значить, в силу устройства нашей машины, что последняя действительно начнет выполнять домашнее задание, – что нам и было нужно. Процесс логического вывода, применяемый машиной, вовсе не обязательно должен быть таков, чтобы он удовлетворял требованиям самых строгих логиков. Например, может отсутствовать иерархия типов[28]. Но это отнюдь не означает, что вероятность связанной с этим ошибки, которую может сделать машина, больше вероятности того, что человек может упасть в пропасть, если ее край не будет огорожен. В рассматриваемом случае подходящие приказания (выраженные внутри системы формального вывода, а не составляющие часть ее правил), например такие, как «Не используйте некоторый класс, если он не является подклассом класса, который ранее упоминался учителем», могут иметь эффект, аналогичный тому, какой имеет предупреждение: «Не подходите слишком близко к краю обрыва».

Приказания, которые может выполнять машина, не имеющая ни рук, ни ног, должны касаться преимущественно интеллектуальных сторон деятельности, как это было в приведенном выше примере (с домашним заданием). Из такого рода приказов наиболее важными будут приказания, определяющие порядок, в котором следует применять правила рассматриваемой логической системы. Ибо на каждой стадии применения логической системы перед нами открывается большое число возможных шагов, которые исключают друг друга и любой из которых мы можем осуществить, следуя правилам рассматриваемой системы. Как производится такой выбор – в этом и выражается различие между глубоким и посредственным умом, но это не имеет отношения к правильности или неправильности рассуждений. Суждения, которые порождают приказания такого рода[29], могут быть, например, такими: «Если упоминается Сократ, то применяй силлогизм модуса Вагвага» или: «Если один метод приводит к результату быстрее, чем второй, не применяй более медленный». Одни из них могут исходить от «авторитетного лица», другие же могут вырабатываться самой машиной, например с помощью неполной индукции.

Некоторым читателям мысль об обучающейся машине может показаться парадоксальной. Как могут меняться правила, по которым машина производит операции? Ведь правила должны полностью описывать поведение машины независимо от того, какова была ее предыстория и какие изменения она претерпела. Таким образом, правила должны быть абсолютно инвариантными относительно времени. Все это, конечно, верно. Объяснение этого парадокса состоит в том, что правила, которые меняются в процессе научения, не претендуют на это, ибо их применимость носит преходящий характер. Читатель может провести параллель с Конституцией Соединенных Штатов[30].

Важная особенность обучающейся машины состоит в том, что ее учитель в значительной мере не осведомлен о многом из того, что происходит внутри нее, хотя он все же в состоянии в известных пределах предсказывать поведение своей ученицы. Сказанное особенно применимо к дальнейшему воспитанию машины, прошедшей уже хорошую подготовку и вышедшей из начальной стадии «машины-ребенка». Такое положение, очевидно, в корне отличается от обычного подхода, связанного с применением машин для вычислений, когда мы стремимся к тому, чтобы иметь ясное представление о состоянии машины в любой момент вычисления, достичь чего можно лишь с трудом. В свете сказанного взгляд, что «машина может выполнить только то, что мы умеем ей предписать», кажется странным. Большинство программ, которые мы можем ввести в машину, вызывают в ее работе кое-что такое, что мы вообще не в состоянии осмыслить или рассматриваем как чисто случайное поведение. Интеллектуальное (intelligent) поведение предполагает, по-видимому, некоторое отступление от абсолютно детерминированного (desciplinedy) поведения в процессе вычисления; это отступление, однако, должно быть очень незначительным, чтобы не вызвать полностью беспорядочного поведения или бессмысленных повторений отдельных циклов. Другой важный результат обучения как способа подготовки нашей машины для участия в игре в имитацию состоит в том, что «присущая человеку склонность к ошибкам» будет, по-видимому, обойдена естественным образом, т. е. без специального «натаскивания». Процесс обучения не обязательно должен быть успешным во всех случаях; если бы это было так, то не встречались бы случаи неудачи в обучении.

Вероятно, в обучающуюся машину имеет смысл ввести случайный элемент. Случайный элемент довольно полезен, когда мы ищем решение какой-нибудь задачи. Пусть, например, требуется найти число, расположенное между 50 и 200 и равное квадрату суммы своих цифр; мы можем сначала проверить число 51, затем 52 и продолжать до тех пор, пока не найдем то, которое удовлетворяет условию задачи. Но мы можем поступить иначе: выбирать числа наугад до тех пор, пока не получим то, которое нам нужно. Этот метод имеет то преимущество, что не требует хранения в памяти уже проверенных значений; однако он имеет и отрицательную сторону, состоящую в том, что одно и то же число может быть подвергнуто проверке повторно, но это не так уж существенно, если задача имеет несколько решений. Систематический метод имеет другой недостаток: именно, может случиться, что придется проверять массу значений, не содержащих ни одного решения, прежде чем будет найдено первое число, обладающее нужным свойством.

В нашем случае процесс обучения можно рассматривать как поиски такой формы поведения, которая бы удовлетворяла требованиям учителя (или какому-нибудь другому критерию). Поскольку в этом случае, по-видимому, имеется весьма большое число решений, отвечающих предъявленным требованиям, постольку метод случайного выбора представляется нам предпочтительнее систематического. Следует отметить, что метод случайного выбора применяется и в другом аналогичном процессе – в эволюции. Но там систематический метод невозможен вообще. Не ясно, каким образом было бы возможно в процессе эволюции сохранять информацию о тех разнообразных генетических комбинациях, которые были испробованы, с тем чтобы предупредить возможность их повторного применения.

Мы можем надеяться, что машины в конце концов будут успешно соперничать с людьми во всех чисто интеллектуальных областях. Но какие из этих областей наиболее пригодны для того, чтобы начать именно с них? Решение даже этого вопроса наталкивается на затруднения. Многие считают, что начать лучше всего с какой-нибудь очень абстрактной деятельности, например с игры в шахматы. Другие предлагают снабдить машину хорошими органами чувств, а затем научить ее понимать и говорить по-английски. В этом случае машину можно будет обучать, как ребенка: указывать на предметы и называть их и т. д. В чем состоит правильный ответ на этот вопрос, я не знаю, но думаю, что следует испытать оба подхода.

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

Перевод Ю. В. Данилова

Дж. фон Нейман

Общая и логическая теория автоматов[31]

В естественных науках автоматы играли роль, значение которой непрерывно возрастало и которая к настоящему времени стала весьма значительной. Этот процесс развивался в течение нескольких десятилетий. В конце данного периода автоматы стали захватывать и некоторые области математики, в частности (но не только) математическую физику и прикладную математику. Их роль в математике представляет интересный аналог некоторых сторон жизнедеятельности организмов в природе. Как правило, живые организмы гораздо более сложны и тоньше устроены и, следовательно, значительно менее понятны в деталях, чем искусственные автоматы. Тем не менее рассмотрение некоторых закономерностей устройства живых организмов может быть весьма полезно при изучении и проектировании автоматов. И наоборот, многое из опыта нашей работы с искусственными автоматами может быть до некоторой степени перенесено на наше понимание естественных организмов.

I. Предварительные соображения

Подразделение проблемы, природа элементов, аксиоматический подход к их синтезу

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

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

Работа впервые опубликована в книге: Cerebral Mechanisms in Behavior. The Hixon Symposium. Edited by Lloyd A. Jeffress, New York;London, 1951, p. 2070–2098. Книга представляет собой отчет о симпозиуме на тему «Механизмы мозга в поведении», состоявшемся в Калифорнийском технологическом институте в сентябре 1948 г. Симпозиум был организован комитетом так называемого Хиксоновского фонда (основан в 1938 г. на средства Ф.П. Хиксона с целью поощрения исследовательских работ в области изучения поведения человека). Группа участников симпозиума состояла главным образом из специалистов в области психологии, неврологии и психиатрии. Нейман выступил на симпозиуме с докладом «Общая и логическая теория автоматов» (The General and Logical Theory of Automata). Кроме доклада Неймана, на симпозиуме было заслушано и обсуждено еще шесть докладов, в том числе доклад У. Маккаллока (W.S. McCulloch), профессора психиатрии Иллинойского медицинского колледжа и Иллинойского невропсихиатрического института, на тему «Почему разум сосредоточен в голове» и доклад У. Хальстеда (W.С. Halstead), профессора экспериментальной психологии Чикагского университета, на тему «Мозг и ум». Все доклады и дискуссии, имевшие место на симпозиуме, были опубликованы в названной выше книге, изданной под редакцией проф. Джефриса, организатора симпозиума.

Доклад Неймана на симпозиуме был перепечатан (с незначительным сокращением) в упомянутом выше томе «Мира математики». Перевод работы Неймана для настоящего издания сделан с текста издания Ньюмана.

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

Аксиоматическая процедура

Аксиоматизация поведения элементов означает следующее. Мы принимаем, что элементы имеют некоторые вполне определенные внешние функциональные характеристики, т. е. что их следует считать «черными ящиками». Это означает, что их рассматривают как автоматы, внутреннюю структуру которых нет необходимости раскрывать и которые, по предположению, реагируют на некоторые точно определенные раздражители (стимулы) посредством некоторых точно определенных реакций.

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

Нет необходимости подчеркивать ограниченность этой процедуры. С помощью исследований этого типа можно показать, что применяемая система аксиом удобна и, по крайней мере в отношении тех результатов, которые она дает, соответствует действительности. Однако такой подход не дает идеального, а возможно даже, и достаточно эффективного метода проверки правильности этих аксиом. Установление верности аксиом относится главным образом к первой части проблемы. В действительности оно предполагает определение – с помощью соответствующих физиологических (или химических, или физико-химических) средств – природы и свойств элементов организма.

Значимые порядки величин

И все-таки, несмотря на эту ограниченность, «вторая часть» нашей проблемы, как указывалось выше, является важной и трудной. При любом разумном определении того, что следует считать элементом, естественные организмы предстанут перед нами как весьма сложные агрегаты таких элементов. Число клеток в человеческом теле имеет порядок 1015 или 1016. Число нейронов в центральной нервной системе приблизительно равно 1010. У нас нет совершенно никакого предшествующего опыта относительно систем такой степени сложности. Все искусственные автоматы, созданные человеком, состоят из частей, число которых при любом сравнительно схематическом подсчете имеет порядок от 108 до 106. К тому же те искусственные системы, которые работают с той степенью логической гибкости и автономии, какую мы обнаруживаем в естественных организмах, находятся отнюдь не на вершине этой шкалы. Прототипами таких систем служат современные вычислительные машины, и в этом случае любое разумное определение того, что следует рассматривать в качестве элемента, приводит к величине, лишь в несколько раз большей, чем 108 или 104.

II. Некоторые черты вычислительных машин

Вычислительные машины. Типичные операции

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

Начну с некоторых утверждений относительно вычислительных машин как таковых.

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

В настоящее время имеются вполне определенные и обоснованные соображения относительно того, когда имеет смысл применять быстродействующие вычислительные машины, а когда нет. Этот критерий обычно выражается через число умножений, входящих в математическую проблему. Считают, что применение быстродействующей вычислительной машины в общем оправдывает себя, если вычислительная задача содержит миллион или более последовательных умножений.

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

Одно умножение представляется поэтому требующим, по меньшей мере, 10×10 шагов (цифровых умножений), откуда следует, что миллион умножений требует, по меньшей мере, 108 операций. В действительности, однако, умножение двух десятичных знаков не является элементарной операцией. Существуют различные способы разбиения его на элементарные операции, и все эти способы имеют приблизительно одинаковую степень сложности. Наиболее простой способ оценки степени сложности умножения двух чисел в десятичной системе счисления состоит в следующем: вместо того чтобы учитывать число десятичных разрядов, рассматривают число разрядов, которое требуется в двоичной системе счисления (с основанием 2 вместо 10) при той же точности вычислений. Одна десятичная цифра соответствует приблизительно трем двоичным, следовательно, десять десятичных знаков соответствуют приблизительно тридцати двоичным. В силу этого умножение, о котором говорилось выше, состоит не из 10×10, а из 30×30 элементарных шагов, т. е. не из 102, а из 103 шагов. (Двоичные цифры подчиняются принципу «да или нет», «все или ничего», так как имеют только значения 0 или 1. Поэтому их умножение является действительно элементарной операцией. Заметим, кстати, что эквивалентом 10 десятичных знаков является, более точно, не 30, а 33 двоичных знака, но 33×33 приблизительно равно 103.) Отсюда, следовательно, вытекает, что имеется больше оснований считать, что миллиону умножений (в указанном выше смысле) соответствует 109 элементарных операций.

Требования точности и надежности

Я не знаю никакой другой области человеческой деятельности, где результат действительно зависит от последовательности, состоящей из миллиарда (109) шагов в каком бы то ни было искусственном устройстве и где к тому же каждая операция на самом деле имела бы значение для результата (или, по крайней мере, могла бы иметь для него значение со значительной вероятностью). А именно эта ситуация имеет место в области вычислительных машин, именно это является их наиболее характерной чертой, вызывающей наибольшие затруднения.

Действительно, за последние два десятилетия созданы автоматы, которые выполняют сотни миллионов или даже миллиарды операций, прежде чем выдают результат. Однако действие этих автоматов не последовательное. Такое большое количество операций является следствием того, что по разным соображениям желательно проделать один и тот же эксперимент несколько раз. Такие кумулятивные, повторяющиеся, накапливающиеся процедуры могут, например, повышать «вес» результата, т. е. (и это существенный аспект) увеличивать значимый результат – «сигнал» – по сравнению с искажающим его «шумом». Так, например, при любом разумном методе подсчета числа реакций, происходящих в микрофоне до того, как будет произведен членораздельный звуковой сигнал, мы придем к величине, равной многим десяткам тысяч. Аналогичные оценки для телевидения приводят к величине, равной десяткам миллионов, а в случае радарной установки, возможно, даже многим миллиардам. Для любого из автоматов такого рода справедливо, однако, следующее: влияние ошибок, которые автомат совершает в своей работе, на окончательный результат обычно соответствует той доле, которую ошибочные шаги составляют в общем числе шагов, осуществленных автоматом. (Для всех примеров, которые приведены выше, это не совсем верно, однако это утверждение достаточно для качественной характеристики ситуации.) Таким образом, чем большее число операций требуется для того, чтобы получить результат, тем меньше оказывается значимость каждой операции в отдельности.

К вычислительным машинам это правило не применимо. Каждая операция в них является (или может оказаться) столь же существенной, что и результат в целом; любая ошибка может сделать полностью недействительным весь результат. (Справедливость этого утверждения не абсолютна; однако, по-видимому, почти 30 % всех операций, которые обычно применяются в вычислительных машинах, – такого типа.) Таким образом, вычислительные машины занимают исключительное место среди продуктов человеческой деятельности. Помимо того что они должны быстро выполнять миллиарды и более операций, от них требуется, чтобы в значительной части вычислительной процедуры (часть эта строго определяется заранее) не было ни одной погрешности.

Действительно, для того чтобы быть уверенным в том, что машина в целом исправна и не имеет дефектов, могущих расстроить всю ее работу, существующая практика обычно требует, чтобы во всей процедуре не встречалось ни единой погрешности.

В силу этого требования большие, высокосложные вычислительные машины предстают перед нами в совершенно новом свете. Это делает, в частности, сравнение вычислительных машин с деятельностью живых организмов не лишенным определенного смысла.

Принцип моделирования

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

Рассмотрим сначала принцип моделирования. Действие вычислительной машины может основываться на представлении чисел посредством определенных физических величин. В качестве таких величин мы можем, например, использовать силу электрического тока, величину электрического потенциала или число градусов угла поворота диска (возможно, с учетом числа полных оборотов, сделанных диском) и т. д. Тогда такие операции, как сложение, умножение и интегрирование, можно производить, подбирая различные физические процессы, воздействующие на эти величины нужным образом. Токи можно перемножать, пропуская их по обмоткам обычного ваттметра; если якорь ваттметра связать с реостатом, то за счет поворота якоря (возникающего в результате прохождения перемножаемых токов по его обмоткам) можно получить изменение сопротивления реостата; наконец, включив этот реостат в цепь, в которой некоторый независимый источник тока поддерживает постоянную разность потенциалов, можно изменение сопротивления преобразовать в изменение тока в этой цепи. Весь агрегат представляет собой «черный ящик», в который вводятся два тока и который выдает ток, равный их произведению. Разумеется, вам известны и многие другие способы, с помощью которых разнообразные естественные процессы можно использовать для выполнения умножения и многих других математических операций.

Первой хорошо смонтированной большой вычислительной машиной, которая когда-либо была сделана, явилась моделирующая машина – дифференциальный анализатор В. Буша. Кстати сказать, эта машина производила вычисления не с помощью электрических токов, а с помощью вращающихся дисков. Я не буду рассматривать остроумные приемы, позволявшие различным образом сочетать углы поворота дисков машины в соответствии с характером выполняемых математических операций.

Я не буду пытаться перечислять, классифицировать или систематизировать все многообразие принципов моделирования и механизмов, которые можно использовать для вычислений. Их чрезвычайно много. Руководящим принципом, без которого невозможно понять ситуацию, является классический принцип всей теории передачи сообщений Communication theory – принцип увеличения отношения «сигнал/шум». Это означает, что во всякой процедуре моделирования критическим является вопрос, как велики неконтролируемые флуктуации механизма, составляющие «шум», по сравнению со значимыми «сигналами», выражающими числа, над которыми оперирует машина. Пригодность любого принципа моделирования зависит от того, насколько малой можно сделать относительную величину неконтролируемых флуктуаций – «уровень шума», применяя данный принцип.

Выразим это иначе. Не существует ни одной моделирующей машины, которая действительно давала бы произведение двух чисел. То, что она дает, – это произведение плюс небольшая, но неизвестная величина, которая выражает случайный шум механизма и протекающих в нем физических процессов. Вся проблема заключается в том, чтобы понизить эту величину. Вся техника, связанная с переработкой информации, подчиняется этому принципу. Например, наличие этого принципа привело к тому, что получили распространение сложные и неуклюжие на вид механические устройства вместо более простых и изящных электрических. (Такое положение существовало, по крайней мере, на протяжении большей части последних 20 лет. Сравнительно недавно в некоторых приложениях, где требуется лишь весьма ограниченная точность, электрические устройства вновь вышли на первый план.) Если сравнивать механические и электрические моделирующие процессы, то в общих чертах справедливо следующее. Механические устройства могут доводить отношение уровня шума к «максимальному уровню сигнала» до величины порядка 1:104 или 1:105. В электрических устройствах это отношение редко бывает лучше, чем 1:102. Разумеется, эти отношения характеризуют ошибки в элементарных операциях вычисления, а не конечные результаты. Очевидно, что в последних ошибки будут существенным образом больше.

Цифровой принцип

Цифровая машина работает по хорошо известному методу представления чисел как совокупностей цифр. Это, кстати, та же процедура, которую все мы применяем в наших индивидуальных механических вычислениях, когда мы выражаем числа в десятичной системе счисления. Строго говоря, нет необходимости проводить вычисление непременно в десятичной системе. В качестве основания для цифрового обозначения чисел можно использовать любое целое число, большее единицы. Десятичная система с основанием является наиболее употребительной, и все цифровые машины, построенные до настоящего времени, работают на основе этой системы. Однако кажется вероятным, что в конце концов будут доказаны преимущества двоичной системы (с основанием 2). В настоящее время строится ряд цифровых машин, в которых используется двоичная система[32]. Основными операциями в цифровой машине обычно являются четыре действия арифметики: сложение, вычитание, умножение и деление. На первый взгляд может показаться, что цифровая машина выполняет эти действия с абсолютной точностью (в отличие от моделирующих машин, о которых говорилось выше). Однако, как мы увидим ниже, это неверно.

Возьмем умножение. Цифровая машина, производя умножение одного десятизначного числа на другое десятизначное число, даст двадцатизначное число – их произведение – без какой бы то ни было ошибки. На этом этапе ее точность абсолютна, даже несмотря на то, что электрические и механические компоненты арифметического органа машины как таковые обладают ограниченной точностью. До тех пор, пока не вышла из строя какая-нибудь компонента, т. е. до тех пор, пока действие каждой компоненты сопровождается лишь флуктуациями в допустимых пределах, результат будет абсолютно точным. В этом, разумеется, состоит значительное и характерное преимущество цифровой процедуры. Ошибка как явление, сопровождающее нормальную операцию, а не только лишь (как указывалось выше) в виде случайности, происходящей вследствие какой-то конкретной неисправности, тем не менее вкрадывается; это происходит следующим образом. Абсолютно точным произведением двух 10-значных чисел является 20-значное число. Если машина построена для того, чтобы работать только с 10-значными числами, ей приходится отбрасывать последние 10 цифр этого 20-значного числа и оперировать только с первыми десятью знаками. Здесь можно не рассматривать то небольшое, хотя и распространенное в практике уточнение, которое дает так называемое «округление» числа. Если же машина может оперировать с 20-значными числами, то умножение двух таких чисел даст 40 знаков, и снова 20 цифр придется отбросить и т. д. Это означает, что, каково бы ни было максимальное число знаков, на которое рассчитана машина, в процессе последовательных умножений этот максимум рано или поздно будет достигнут. И как только он будет достигнут, следующее умножение даст число цифр, которое превосходит этот максимум, и в произведении будет сохранена лишь половина его цифр (первая половина цифр, соответствующим образом округленная). Поэтому ясно, что ситуация с максимальным числом знаков, равным 10, типична, и мы с полным основанием можем воспользоваться ею для того, чтобы разъяснить суть дела.

Таким образом, необходимость округления (точного) 20-значного произведения до установленного (максимального) числа из десяти цифр приводит в случае цифровых машин к качественно той же ситуации, какая была обнаружена выше в случае моделирующих машин. То, что выдает машина в качестве результата, когда требуется найти произведение, есть не само произведение, а произведение плюс малый добавочный член – ошибка округления. Понятно, что эта ошибка не является случайной величиной, подобной, например, «шуму» в моделирующей машине. Арифметически она полностью определена в каждом отдельном случае. Тем не менее способ определения этой ошибки настолько сложен, а ее варьирование в ряде случаев столь незакономерно, что обычно можно с высокой степенью приближения рассматривать ее как случайную величину.

Эти рассуждения относятся к умножению. В случае деления ситуация оказывается даже немного хуже, так как частное – в общем случае – нельзя выразить с абсолютной точностью, какое бы конечное число цифр ни брать. Следовательно, в случае деления округление обычно оказывается необходимым уже после первой операции. С другой стороны, для сложения и вычитания эта трудность не возникает. Сумма или разность имеет (если величины не превышают установленного максимума) то же число цифр, что и сами слагаемые. Переполнение разрядной сетки может создавать трудности, которые добавляются к рассмотренным выше, но здесь я не буду их рассматривать.

Роль цифрового метода в понижении уровня шума

Существенное различие между уровнем шума цифровой машины и уровнем шума моделирующей машины вовсе не является качественным. Оно носит количественный характер. Как отмечалось выше, относительный уровень шума в моделирующей машине никогда не бывает ниже 1:105, а во многих случаях доходит до 1:102. В 10-разрядной цифровой машине, о которой речь шла выше, относительный уровень шума (являющийся результатом округления) равен 1:1010. Таким образом, практическое значение цифрового метода состоит в том, что он уменьшает уровень вычислительного шума до такого предела, который недостижим ни при какой другой (моделирующей) процедуре. Кроме того, дальнейшее понижение уровня шума сопряжено в случае моделирующего механизма с увеличением трудностей, между тем как в случае цифровой машины оно достигается со все возрастающей легкостью. В моделирующей машине легко достигнуть точности 1:103. Точность 1:104 достигается с некоторым трудом, точность же 1:105 получить уже очень трудно, а 1:106 – при современном состоянии техники – невозможно. В случае цифровой машины такое же уменьшение уровня шума достигается всего лишь за счет того, что строят машину, рассчитанную на 3, 4, 5 и 6 десятичных разрядов соответственно. В этом случае переход от одной ступени к следующей действительно становится все более легким. Переход от машины, рассчитанной на 3 разряда (если бы кто-нибудь захотел построить такую машину), к 4-разрядной машине означает возрастание сложности на 33 %, переход от 4-разрядной машины к машине, рассчитанной на 5 разрядов, означает увеличение еще на 25 %, а переход от 5-разрядной машины к 6разрядной – на 20 %. Переход от 10 разрядов к 11 разрядам означает увеличение сложности всего лишь на 10 %. Ясно, что с точки зрения уменьшения «случайного шума» здесь обстановка совершенно иная, чем в случае моделирующей процедуры, основанной на применении физических процессов. Именно в этом – а не в его абсолютной надежности, которая практически недостижима, – кроется важность цифрового метода.

III. Сравнение вычислительных машин с живыми организмами

Смешанный (моделирующе-цифровой) характер у живых организмов

Изучение центральной нервной системы обнаруживает в ней наличие элементов обеих процедур – цифровой и моделирующей.

Нейрон передает импульс. По-видимому, в этом состоит основная его функция, хотя последнее слово относительно этой функции и о том, ограничивается ли ею роль нейрона в центральной нервной системе, еще далеко не сказано. Нервный импульс в основном подчиняется принципу «включено – выключено», «все или ничего», и его можно сравнивать с двоичной цифрой. Таким образом, наличие цифрового элемента очевидно, но также очевидно, что это еще не все. Многое из того, что происходит в организме, обусловлено не явлениями этого рода, а зависит от общего химического состава крови и других гуморальных сред. Хорошо известно, что в организме имеется множество сложных функциональных цепей, в которых переход от первоначального раздражения к конечному эффекту осуществляется через целый ряд этапов; некоторые из этих этапов являются нейронными, т. е. цифровыми, другие – гуморальными, т. е. моделирующими. Цифровые и моделирующие участки такого рода цепи могут различным образом чередоваться. В некоторых случаях этого типа цепь может фактически иметь обратную связь «на себя», т. е. стимул на ее выходе может, в свою очередь, оказывать воздействие на ее начальный вход.

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

Смешанный характер каждого элемента

В добавление к сказанному можно привести аргументы в пользу того, что даже нейрон не является строго цифровым органом. Такие соображения высказывались неоднократно и с большой настойчивостью. Тщательный анализ фактов показывает, что в них, несомненно, содержится большая доля истины. Соображения, о которых идет речь, заключаются в том, что полностью развитый нервный импульс, которому можно приписать характер процесса, протекающего по принципу «все или ничего», является не элементарным, а весьма сложным явлением. Такой импульс представляет собой вырожденное состояние сложного электрохимического комплекса, каковым является нейрон, который – если провести полный анализ его функционирования – следует рассматривать как моделирующую машину. Действительно, можно возбудить нейрон так, чтобы не произошло скачка, вызывающего возникновение нервного импульса. Рассматривая эту область «подпорогового возбуждения», мы видим, что вначале (т. е. для самых слабых раздражений) реакции пропорциональны раздражениям, а затем (при более сильных, но все еще подпороговых уровнях раздражения) реакции начинают подчиняться более сложному нелинейному закону, оставаясь тем не менее непрерывными переменными и не приобретая скачкообразного характера. Кроме того, следует учесть, что имеются и другие сложные явления как внутри подпороговой области, так и вне ее: усталость, суммация, некоторые виды автоколебаний.

Несмотря на правильность этих замечаний, следует учитывать, что они, быть может, предъявляют чрезмерно строгие требования к органу, работающему по принципу «все или ничего». Электромагнитное реле и электронная лампа при правильном их использовании являются, несомненно, органами, работающими по принципу «все или ничего». В самом деле, электромагнитное реле и электронная лампа служат прототипом такого рода органов. И тем не менее в действительности оба являются сложными моделирующими механизмами, которые при надлежаще подобранном возбуждении реагируют непрерывно (линейно или нелинейно), обнаруживая явления типа «скачка», или «все или ничего», лишь при весьма частных условиях работы. Различие между действием этих механизмов и описанным выше поведением нейронов невелико. Выразим это несколько иначе. Ни один из этих механизмов не является органом, действующим исключительно по принципу «все или ничего» (наш опыт в технике и физиологии недостаточен для того, чтобы утверждать, что существуют органы, работающие исключительно по этому принципу), однако это несущественно. Под органом типа «все или ничего» мы понимаем орган, который удовлетворяет двум следующим условиям. Во-первых, он является механизмом, который при некоторых подходящих условиях действует по принципу «все или ничего». Во-вторых, эти условия являются условиями его нормального использования; в функциональном отношении они представляют собой нормальное состояние того большого организма, частью которого является этот орган. Таким образом, важно не то, удовлетворяет ли орган обязательно и при всех условиях принципу «все или ничего» – вероятно, так никогда и не бывает, – а то, являются ли его функции в надлежащей обстановке в основном функциями типа «все или ничего» и выступает ли он в качестве органа, предназначенного в основном для работы в этом режиме. Я отдаю себе отчет в том, что это определение привносит весьма нежелательные критерии «надлежащей» обстановки и «предназначения». Однако я не вижу, каким образом можно избежать их употребления или не учитывать того, что их применение основано просто на здравом смысле. В соответствии со сказанным выше я в дальнейшем буду пользоваться в качестве рабочей гипотезы допущением, что нейрон является цифровым органом типа «все или ничего». Я сознаю, что последнее слово в этом вопросе еще не сказано; однако надеюсь, что приведенные выше соображения, касающиеся ограниченности этой рабочей гипотезы, а также оснований ее применения, успокоят вас. Моя цель – лишь упростить рассуждения, и я не пытаюсь предрешать ни один из существенно важных вопросов, решение которых еще не найдено.

В том же смысле я полагаю, что нейроны допустимо рассматривать как электрические органы. Раздражение нейрона, развитие и протекание его импульса, а также воздействие этого импульса на синапс[33] – все это может быть описано электрически. Что же касается химических реакций и других явлений, сопутствующих этому процессу, то они важны, для того чтобы понять внутренний механизм функционирования нервной клетки. Быть может, они даже более важны, чем электрические явления. Однако вряд ли они необходимы для описания нейрона как «черного ящика» – органа типа «все или ничего». Кроме того, в этом случае ситуация ничуть не хуже, чем, скажем, в случае электронной лампы. В электронной лампе чисто электрические явления тоже сопровождаются многочисленными другими явлениями, относящимися к области физики твердого тела, термодинамики, механики. Все они важны для понимания устройства электронной лампы, но их лучше исключить из рассмотрения, если последнюю рассматривать как «черный ящик», задаваемый схематическим описанием.

Понятие о переключательном, или релейном, органе

Нейрон и электронная лампа, рассматриваемые с изложенных выше точек зрения, служат двумя примерами того, что принято обозначать терминами «переключательный орган» или «релейное устройство». (Разумеется, электромеханическое реле является другим примером.) Такое устройство определяют как «черный ящик», который в ответ на определенные стимулы или комбинацию стимулов дает энергетически независимую от них реакцию. Это означает, что энергия реакции предполагается достаточной для того, чтобы вызвать несколько стимулов того же рода, что и тот стимул, который вызвал ее. Следовательно, энергия реакции не может быть получена от первоначального стимула. Она должна исходить от иного, независимого источника энергии. Стимул лишь направляет и регулирует поток энергии от этого источника.

Таким источником в случае нейрона является его общий метаболизм[34]. В случае электронной лампы это энергия, которая поддерживает разность потенциалов между катодом и анодом (независимо от того, находится ли лампа в состоянии проводимости или заперта), и в меньшей степени тепловая энергия, удерживающая «горячие электроны» вне катода. В случае электромеханического реле это генератор, создающий ток в той цепи, которая замыкается и размыкается с помощью реле.

Основными переключательными органами живых организмов являются – по крайней мере, в той степени, в которой они здесь рассматриваются, – нервные клетки, нейроны. Основными переключательными органами вычислительных машин современного типа служат электронные лампы; в более старых машинах переключательные органы – полностью или частично – представляли собой электромеханические реле. Весьма возможно, что вычислительные машины не всегда будут агрегатами, состоящими преимущественно из переключательных органов, однако новый этап развития в этой области пока принадлежит далекому будущему. Шаг вперед, которого можно ожидать в более близкое время, будет состоять, по-видимому, в том, что электронные лампы перестанут использоваться в качестве переключательных органов в вычислительных машинах и будут заменены какими-либо другими элементами. Но и это, вероятно, произойдет не ранее, чем через несколько лет[35]. Поэтому я буду рассматривать эти машины исключительно как агрегаты электронных ламп, играющих роль переключательных органов.

Сравнение размеров больших вычислительных машин и живых организмов

Известны две очень большие действующие электронно-ламповые вычислительные машины. Каждая из них содержит около 20 000 переключательных органов. Одна из них – чисто электронно-ламповая (она принадлежит Баллистической научно-исследовательской лаборатории Управления артиллерийско-технического снабжения армии США и находится в Абердине, штат Мэриленд, обозначение ЭНИАК), другая машина – смешанного типа: она содержит и электронные лампы, и электромеханические реле (она принадлежит компании ИБМ и находится в Нью-Йорке; обозначение ССЭК)[36].

По своим размерам эти машины, вероятно, намного больше электронно-ламповых вычислительных машин, которые появятся в ближайшие годы. По-видимому, машины, которые будут строиться в ближайшее время, будут иметь от 2000 до 6000 переключательных органов каждая. (Такое уменьшение размеров объясняется изменением в нашем подходе к устройству машинной «памяти», которое я здесь не рассматриваю.) Возможно, что в дальнейшем размеры машин снова возрастут, однако на современном уровне техники и теоретического знания (philosophy) количество переключательных органов вряд ли превзойдет 10 000 (или, может быть, величину порядка 10 000). Таким образом, величина 104 дает правильное представление о порядке числа переключательных органов вычислительной машины.

В противоположность этому – как это следует из данных, полученных различными путями, – число нейронов центральной нервной системы имеет порядок 1010. Я не знаю, насколько правильна эта цифра, но, по-видимому, величина показателя степени отклоняется от действительной в ту или иную сторону не более, чем на единицу. Таким образом, бросается в глаза то обстоятельство, что центральная нервная система, по меньшей мере, в миллион раз сложнее (larger), чем самый сложный искусственный автомат, о котором мы можем говорить в настоящее время. Весьма интересно выяснить, чем это объясняется и какие вопросы принципиального характера с этим связаны. Мне кажется, что здесь действительно имеется ряд четких принципиальных проблем.

Существенно важные отношения

размеров элементов

Совершенно очевидно, что электронная лампа является гигантом, по сравнению с нервной клеткой. Ее физический объем и потребляемая ею энергия приблизительно в миллиард раз больше, чем у нервной клетки. (Разумеется, тут невозможно привести вполне определенные цифры, однако те, которые приведены выше, достаточно хорошо обрисовывают ситуацию.) Это компенсируется другими факторами. В областях техники, отличных от области вычислительных машин, электронные лампы можно заставить работать на чрезвычайно высоких скоростях, однако здесь мы не будем касаться этих областей их применения. В вычислительных машинах максимум скорости гораздо ниже, но все же заслуживает уважения. При современном состоянии техники его можно считать равным в среднем одному миллиону реакций (actuations) в секунду. Реакция (response) нервной клетки развивается гораздо медленнее, вероятно, она длится 1/2000 секунды, и – что действительно существенно – минимальное время, необходимое для перехода от возбужденного состояния к полному восстановлению, когда клетка может испытывать повторное возбуждение, еще больше – в лучшем случае оно приблизительно равно 1/200 секунды. Это приводит к отношению 1:5000, которое, возможно, в какой-то мере завышено в пользу электронной лампы, так как электронная лампа при ее использовании в качестве переключательного органа, рассчитанного на 1 000 000 операций в секунду, практически не работает на все 100 % в этом режиме. Поэтому такое отношение, как 1:2000, вероятно, будет более подходящим. Таким образом, электронная лампа, обладая размерами, приблизительно в миллиард раз большими, чем нейрон, превосходит последний в работе в 1000 раз (или несколько более). В силу этого с известным основанием можно говорить о том, что ее эффективность меньше эффективности нейрона примерно в миллион раз.

Важным во всех отношениях является тот факт, что нейрон по своим размерам гораздо меньше электронной лампы. Как указывалось выше, электронная лампа приблизительно в миллиард раз больше. Чем это обусловлено?

Причины различия в размерах электронной лампы и нейрона

Источник этого расхождения лежит в основном органе управления, или, точнее, в различии между управляющими устройствами электронной лампы и нейрона. В электронной лампе основной областью управления является пространство между катодом (где зарождаются активные агенты – электроны) и сеткой (которая управляет электронным потоком). Это пространство имеет приблизительно один миллиметр глубины. В нейроне ему соответствует стенка нервной клетки – «мембрана», толщина которой равна примерно одному микрону (71 000 мм) или несколько меньше. Следовательно, на этом этапе отношение линейных размеров управляющих устройств электронной лампы и нейрона составляет приблизительно 1:1000. В этом, между прочим, и заключается основное различие. Электрические поля, действующие в пространстве управления, почти одинаковы для электронной лампы и для нейрона. Разности потенциалов, обеспечивающие надежную работу этих органов, равны десяткам вольт в одном случае и десяткам милливольт в другом. Их отношение снова равно 1:1000, и, следовательно, градиенты разностей потенциалов (напряженности полей) примерно равны. Далее, отношение линейных размеров 1:1000 соответствует отношению объемов 1:1 000 000 000. Таким образом, коэффициент различия, равный 109 для объемов, соответствует, как и должно быть, коэффициенту различия, равному 103 для линейных размеров, т. е. различию между миллиметровой глубиной междуэлектродного пространства электронной лампы и микронной толщиной мембраны нейрона.

Стоит обратить внимание на то (хотя в этом и нет ничего удивительного), что это различие между объектами, каждый из которых является микроскопическим и расположен внутри элементарной компоненты, приводит к поразительному макроскопическому различию между организмами, которые построены на их основе. Это различие между миллиметровым объектом и микронным объектом и обусловливает то, что ЭНИАК весит 30 тонн и потребляет 150 киловатт, тогда как центральная нервная система человека, которая в функциональном отношении в миллион раз сложнее, имеет вес в несколько фунтов и умещается в человеческом черепе.

При оценке веса и размеров машины ЭНИАК мы должны также помнить, что, как указывалось выше, этот гигантский аппарат используется для обработки 20 чисел в 10 десятичных знаков каждое, то есть 200 десятичных цифр всего, что эквивалентно примерно 700 двоичным цифрам – всего-навсего семистам (одновременно обрабатываемым) элементам информации типа «да-нет»!

Связь этих причин с характером современной техники

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

По-видимому, эта слабая сторона нашей техники, по крайней мере отчасти, вызывается теми материалами, которые мы применяем. Современная техника использует металлические компоненты, находящиеся близко друг к другу и разделенные в определенных критических пунктах только вакуумом. Такая комбинация сред обладает особой механической неустойчивостью, что совершенно не свойственно живой природе. Говоря это, я имею в виду тот простой факт, что если живой организм получает механическое повреждение, он обнаруживает сильную тенденцию к самовосстановлению. Если же мы трахнем кувалдой по сделанному человеком механизму, то никакой такой восстановительной тенденции не проявится. Если два куска металла находятся рядом, то незначительные колебания и другие механические возмущения, всегда существующие в окружающей среде, создают опасность соприкосновения этих кусков металла. Если последние имеют различные электрические потенциалы, то в результате получающегося в этом случае короткого замыкания они могут спаяться, и контакт станет постоянным. Тогда произойдет полное и окончательное разрушение всей структуры. Когда же мы повреждаем мембрану нервной клетки, ничего подобного не случается. Напротив, мембрана, как правило, быстро восстанавливается.

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

IV. Будущая логическая теория автоматов

Мы подчеркивали, насколько ограничена возможность усложнения искусственных автоматов – усложнения, которого можно достигнуть без крайних трудностей и при котором тем не менее можно ожидать, что автомат будет работать надежно. Уже были названы две причины, ставящие предел усложнению в этом смысле: это большие габариты составных элементов и ограниченная надежность их работы; обе причины обусловлены тем, что мы используем материалы, которые, хотя и вполне удовлетворительны в более простых случаях, все же малопригодны и уступают по качеству естественным в такой сложной области, как автоматы. Существует и третий важный ограничивающий фактор, и теперь нам следует обратить на него внимание. Этот фактор – интеллектуального, а не физического порядка.

Ограничения, вытекающие из отсутствия логической теории автоматов

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

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

Возможные характеристики логической теории автоматов

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

Во всей современной логике единственно важным является вопрос, можно или нельзя получить результат в конечное число элементарных шагов. С другой стороны, число шагов, которое для этого требуется, в формальной логике почти никогда не рассматривается. Любая конечная последовательность правильных шагов принципиально так же хороша, как и любая другая. Не играет никакой роли, каково это число: мало оно или велико или, быть может, столь велико, что соответствующую последовательность шагов нельзя выполнить в течение человеческой жизни или в течение предположительного времени существования звезд. Но когда мы имеем дело с автоматами, этот подход должен быть значительно изменен. Суть дела в том, что в случае автомата играет роль не только то, может ли он вообще дать определенный результат в конечное число шагов, но и вопрос о том, сколько потребуется таких шагов. Это объясняется двумя причинами. Во-первых, мы строим автоматы для того, чтобы иметь возможность получать некоторые результаты в течение определенных, наперед указанных отрезков времени или, по крайней мере, в течение таких отрезков времени, порядок которых указан заранее. Во-вторых, вероятность ошибки в компонентах автомата, используемых в любой индивидуальной операции хотя и мала, но все же отлична от нуля. Если цепь операций достаточно длинна, то суммарный эффект вероятностей отдельных ошибок может (при отсутствии контроля) достигнуть порядка единицы, вследствие чего полученный результат становится практически полностью ненадежным. Хотя вероятности, которые мы встречаем в этом случае, очень малы, они все же не слишком далеки от того, что имеется в обычном техническом опыте. Нетрудно подсчитать, что быстродействующая вычислительная машина при решении типичной задачи в среднем должна выполнить около 1012 индивидуальных операций. Следовательно, вероятность ошибки в отдельной операции, которую можно еще допустить, должна быть достаточно малой, по сравнению с 10-12. Замечу, что в настоящее время признают удовлетворительными электромеханические (телефонные) реле, если вероятность ошибки в отдельной операции имеет порядок 108; они считаются просто превосходными, если этот порядок равен 10-9. Таким образом, степени надежности, которые требуются в быстродействующих вычислительных машинах, выше, но небезгранично выше степеней надежности, прочно вошедших уже в некоторые области технической практики. И тем не менее трудно ожидать, чтобы действительно достижимые степени надежности могли выйти далеко за пределы только что упомянутых минимальных требований. В силу этого несомненно потребуются исчерпывающие исследования и нетривиальная теория.

Таким образом, логика автоматов будет отличаться от существующей системы формальной логики в двух отношениях:

1) в ней должна учитываться действительная длина «цепей рассуждения», т. е. цепей операций;

2) операции логики (силлогизмы, конъюнкции, дизъюнкции, отрицания и т. д., то есть – в обычной для автоматов терминологии – различные формы вентильных схем, собирательных схем, схем совпадения, несовпадения и т. д.)[37] в этой теории должны рассматриваться как процедуры, допускающие погрешности хотя и с малыми, но все же отличными от нуля вероятностями. Все это должно привести к теориям, имеющим не столь явно выраженный характер теорий, основанных на принципе «все или ничего», какой являлась и является формальная логика. По своему характеру эти теории станут значительно менее комбинаторными и значительно более аналитическими. В самом деле, имеются многочисленные признаки, дающие основание полагать, что эта новая концепция формальной логики будет все более сближаться с другой дисциплиной, в прошлом мало связанной с логикой. Эта дисциплина – термодинамика, главным образом в том виде, который она приняла после Больцмана. Термодинамика является той частью теоретической физики, которая в некоторых из своих аспектов наиболее близка теории обработки и измерения информации. Ее средства, конечно, являются в гораздо большей степени аналитическими, нежели комбинаторными, что вновь подтверждает точку зрения, которую я пытался изложить выше. Однако более подробное рассмотрение этого вопроса завело бы меня слишком далеко.

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

Как влияет отсутствие логической теории автоматов на процедуру обращения с ошибками

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

Это отставание в области теории, несомненно, мешает нам продвинуться вперед существенно дальше того, где мы находимся сейчас.

Простым проявлением этого фактора является наш подход к предупреждению ошибок. В живых организмах случаются нарушения работы компонент. Очевидно, что организм располагает средствами, для того чтобы выявить и обезвредить эти нарушения. Легко подсчитать, что число действий нерва, происходящих в течение жизни нормальной продолжительности, имеет порядок 1020. Ясно, что в продолжение этой цепи событий не встречается таких нарушений, вредные последствия которых не могут быть компенсированы самим организмом без какого бы то ни было существенного вмешательства со стороны. Поэтому система организма должна содержать необходимые приспособления для диагностики ошибок, когда последние возникают, для перестройки организма, имеющей целью свести к минимуму эффект этих ошибок, и, наконец, для исправления или полного выключения вышедших из строя компонент. Наш modus procedendi в отношении нарушений в работе искусственных автоматов совершенно другой. Существующая практика, которой единодушно придерживаются все специалисты в этой области, состоит приблизительно в следующем. Мы используем все средства (математической или автоматической проверки), для того чтобы выявить каждую ошибку, поскольку она возникает в работе автомата. После того как ошибка выявлена, мы стараемся как можно быстрее изолировать компоненту, вызвавшую ошибку. Частично это можно сделать автоматически, но в любом случае значительную часть процедуры выявления ошибок приходится проводить посредством вмешательства извне. Как только неисправная компонента найдена, она немедленно или исправляется, или заменяется новой, исправной компонентой.

Отметим различие между этими двумя подходами. Основной принцип, которого придерживается природа в своем подходе к нарушениям в функционировании живых организмов, состоит в том, чтобы сделать эффект этих нарушений как можно менее заметным, с тем чтобы организм мог осуществлять необходимые коррективы без всякой спешки, так сказать «на досуге» (если в этом вообще возникает необходимость). Напротив, наш подход к искусственным автоматам предполагает немедленное выявление ошибок, как только они возникают. Поэтому мы стараемся так устроить автоматы, чтобы ошибки были как можно заметнее и чтобы необходимое в этих случаях вмешательство и коррективы можно было осуществлять без промедления. Иначе говоря, устройство живых организмов подчинено принципу: сделать ошибки настолько незаметными и безвредными, насколько это вообще возможно. Что же касается искусственных автоматов, то их проектируют так, чтобы ошибки в их работе как можно более резко проявляли себя своими нежелательными последствиями. Нетрудно найти естественное объяснение такого различия. Природа устроила организмы так, что они сохраняют способность функционирования даже после того, как в них возникли повреждения. Они могут действовать, несмотря на повреждения; при этом после появления повреждений в них проявляется тенденция к их самоустранению. Конечно, можно построить такой искусственный автомат, который мог бы нормально действовать, несмотря на некоторые неисправности (число которых, а также области, в которых они допустимы, было бы заранее ограничено). Однако даже и в этом случае каждая неисправность таила бы в себе известную опасность того, что в машине уже начался общий разрушительный процесс. Отсюда возникает необходимость немедленного вмешательства, ибо машина, начавшая работать неправильно, весьма редко обнаруживает тенденцию к самовосстановлению и более вероятно то, что ее функционирование будет все более и более ухудшаться. Все сказанное еще раз подтверждает только одно. В области искусственных автоматов мы, по-видимому, движемся вслепую в гораздо большей степени, чем природа – в отношении живых организмов. Мы «запуганы» (что, впрочем, вполне естественно, по крайней мере в настоящее время) страхом перед возможностью даже отдельной изолированной ошибки и перед тем нарушением в работе, которое за ней скрывается. Ясно, что наше поведение – это сверхосторожность, порождаемая невежеством.

Принцип единственной ошибки

Кроме того, почти вся наша методика выявления причин ошибок основана на предположении, что в каждом данном случае, когда налицо ошибка, в машине имеется только одна неисправная компонента. Тогда последовательное разделение машины на части позволяет определить, какой ее отдел содержит неисправную компоненту. Всякий раз, когда существует вероятность того, что в машине имеется несколько неисправностей, этот – достаточно мощный – дихотомический метод раскрытия причин нарушений в работе машин теряет свою силу, и установление причин ошибок становится весьма безнадежным предприятием. То, что мы настойчиво стремимся свести число подлежащих выявлению неисправностей к единице (или, во всяком случае, сделать это число как можно меньше), еще раз иллюстрирует наше невежество в этой области. Именно это является одной из главных причин того, что приходится устраивать так, чтобы ошибки были как можно более заметными, с тем чтобы опознание ошибок и установление их причин происходило как можно быстрее после их появления – прежде, чем появятся другие ошибки.

V. Принципы цифризации

Цифризация непрерывных величин: метод цифрового представления и метод счета

Рассмотрим цифровую часть живого организма, а именно нервную систему. По-видимому, действительно имеется основание считать, что нервная система является цифровым механизмом и передает сообщения, состоящие из сигналов типа «все или ничего». Иными словами, каждый элементарный сигнал, каждый импульс просто или имеется в наличии, или его нет (без каких-либо нюансов). Особенно яркой иллюстрацией этого служат те случаи, когда задача, которую приходится решать нервной системе, носит противоположный характер, т. е. когда нервная система должна на самом деле служить для передачи некоторой непрерывной величины. Характерным примером в этом отношении является поведение нерва, передающего данные о величине кровяного давления.

Допустим, например, что нужно передать информацию о величине давления (являющегося, очевидно, непрерывной величиной). Хорошо известно, как это дело осуществляется. Соответствующий нерв передает лишь импульсы типа «все или ничего». Спрашивается: как же с помощью этих импульсов, т. е. цифр, нерв выражает непрерывное численное значение давления? Иными словами, как он кодирует непрерывную величину с помощью цифрового обозначения? Разумеется, он осуществляет это, не представляя рассматриваемую величину в виде числа, выраженного в десятичной (или двоичной, или любой другой позиционной) системе счисления в обычном смысле. Процесс, который, по-видимому, здесь имеет место, состоит в том, что нерв передает импульсы с переменной частотой, которая в определенных пределах пропорциональна рассматриваемой непрерывной величине, а в общем случае является ее монотонной функцией. Поэтому механизм, с помощью которого достигается это «кодирование», в сущности, есть частотно-модулирующая система.

Известны подробности этого процесса. Нерв имеет конечное время восстановления. Иначе говоря, после того как прошел один импульс, время, которое должно истечь прежде, чем нерв снова сможет прийти в состояние возбуждения, отлично от нуля и зависит от силы следующего (уже действующего на нейрон) раздражения. Таким образом, если на нерв воздействует непрерывно действующий раздражитель (т. е. раздражитель, действие которого во времени распределяется равномерно; таковым, например, является рассматриваемое нами кровяное давление), то нерв будет реагировать периодически, причем время, протекающее между двумя последовательными состояниями возбуждения, есть упомянутое выше время восстановления нерва, которое является функцией силы постоянного раздражения (в нашем случае – давления). Так, при высоком давлении нерв[38] может давать ответ на раздражение, по меньшей мере, через каждые 8 миллисекунд, т. е. проводить 125 импульсов в секунду, тогда как под действием меньшего давления он будет реагировать только через каждые 14 миллисекунд, то есть передавать 71 импульс в секунду. Совершенно ясно, что это – поведение настоящего органа типа «да или нет», органа цифрового типа. Однако чрезвычайно поучительно, что работа нерва основана на использовании «счета», а не «десятичного (двоичного, троичного и т. д.) представления» величин.

Сопоставление обоих методов. Предпочтительное использование живыми организмами метода счета

Сравним достоинства и недостатки этих двух методов. Конечно, метод счета менее эффективен, чем метод цифрового разложения. Чтобы посредством счета выразить число порядка одного миллиона (т. е. физическую величину, состоящую из миллиона отличных друг от друга составных элементов), нужно передать миллион импульсов. Чтобы выразить число того же порядка с помощью цифрового представления, потребуется 6 или 7 десятичных цифр, т. е. около 20 двоичных. Следовательно, в этом случае потребуется только 20 импульсов. Таким образом, наш метод цифрового представления является гораздо более экономичным в обозначениях, чем избранный природой метод счета. С другой стороны, метод счета весьма надежен и предохраняет от ошибок. Если вы, выражая число порядка одного миллиона посредством простого счета, пропустите по ошибке один необходимый шаг, результат изменится лишь несущественно. Если же вы выразите то же число с помощью цифрового представления (в десятичной или двоичной системе), то одна-единственная ошибка в одной-единственной цифре может испортить весь результат. Таким образом, отрицательные стороны наших вычислительных машин вновь проявляются в нашей системе представления чисел с помощью цифр; фактически совершенно очевидно, что они глубоко связаны с этой системой и отчасти являются ее следствием. С другой стороны, высокая устойчивость, а также способность устранять ошибки и нарушения в своем функционировании, характеризующие естественные организмы, находят свое отражение в методе счета, которым, по-видимому, они пользуются в этом случае. Все сказанное отражает общее правило. Можно в большой мере обезопасить себя от ошибок, понизив эффективность обозначений или, точнее говоря, допустив избыточность в обозначениях. Очевидно, что простейший способ добиться надежности за счет избыточности в обозначениях состоит в том, чтобы использовать per se совершенно ненадежный метод цифрового представления чисел, но каждое сообщение, выраженное его средствами, повторять по нескольку раз. В рассматриваемом случае природа, очевидно, избрала систему, еще более избыточную в обозначениях и еще более надежную в работе.

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

V. Формальные нервные сети

Теория формальных нервных сетей Маккаллока – Питтса

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

Как уже говорилось выше, в своих рассуждениях я придерживаюсь строго аксиоматической точки зрения. Поэтому я буду рассматривать нейрон как «черный ящик», имеющий определенное число входов, на которые подаются импульсы, и выход, который отдает импульсы. В целях большей конкретности изложения допустим, что входные связи каждого нейрона могут быть двух типов: возбуждающего и тормозящего. Сами «черные ящики» также могут быть двух типов: с порогом 1 и с порогом 2. Эти понятия связаны между собой и удовлетворяют следующим определениям. Чтобы возбудить такого рода орган, необходимо, чтобы он получил одновременно, по крайней мере, столько импульсов на своих входах возбуждающего типа, сколько соответствует его порогу, и не получил импульса ни на одном из своих входов тормозящего типа. Возбужденный указанным способом, нейрон после определенного интервала времени – запаздывания (величина которого, по предположению, всегда одинакова и может быть использована для определения единицы времени) – дает выходной импульс. С помощью соответствующих связей этот импульс можно передать на любое число входов других нейронов (так же, как на любой из собственных входов данного нейрона), и он вызовет в каждом из них входной импульс того же типа, как те, которые были описаны выше.

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

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

Основной результат теории Маккаллока – Питтса

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

Здесь уместно остановиться и рассмотреть вытекающие отсюда следствия. Часто можно было слышать разговоры о том, что деятельность и функции нервной системы человека настолько сложны, что никакой обычный механизм не может их выполнить. Пытались указать специфические функции, которые по самой своей природе налагают это ограничение. Делались также попытки доказать, что такого рода специфические функции, полностью описанные логически, per se[39] недоступны механической, нервной реализации. Результат Маккаллока – Питтса кладет всему этому конец. Он доказывает, что все, что можно описать исчерпывающим и однозначным образом, все, что можно полностью и однозначно выразить словами, ipso facto[40] реализуемо с помощью соответствующей конечной нервной сети. Так как обратное утверждение очевидно, мы можем сказать, что не существует различия между возможностью описать словесно, полностью и однозначно, действительный или воображаемый способ поведения и возможностью реализовать этот способ поведения посредством конечной формальной нервной сети. Эти два понятия равнообъемны. Принципиальная трудность выражения всякого способа поведения в такой сети возникает только тогда, когда мы не в состоянии дать полного описания рассматриваемого способа поведения.

Следовательно, остаются две следующие проблемы. Во-первых, если какой-нибудь способ поведения может быть выполнен некоторой конечной нервной сетью, то все же остается открытым вопрос, можно ли практически построить эту сеть; именно можно ли реализовать ее в рамках данного организма, учитывая те физические ограничения, которые наложены на него природой. Во-вторых, возникает вопрос, возможно ли в действительности дать полное и однозначное словесное описание каждого реального способа поведения.

Разумеется, первая проблема есть основная задача нейрофизиологии, и здесь я не буду вдаваться в ее подробности. Второй вопрос носит иной характер и имеет интересные логические аспекты.

Осмысление этого результата

Нет сомнения в том, что любую отдельную фазу любой мыслимой (conceivable) формы поведения можно «полностью и однозначно» описать с помощью слов. Это описание может быть длинным, однако оно всегда возможно. Отрицать это означает примкнуть к разновидности логического мистицизма, от чего большинство из нас, несомненно, далеко. Имеется, однако, существенное ограничение, состоящее в том, что все сказанное применимо только к каждому элементу поведения, рассматриваемому в отдельности, но далеко не ясно, как все это применять ко всему комплексу поведения в целом. Поясню свою мысль на примере. Нетрудно описать, каким образом организм оказывается в состоянии отождествлять любые два треугольника, образованных прямыми линиями, изображение которых появляется на сетчатке, по их принадлежности к одной и той же категории «треугольников». К этому нетрудно добавить требование, чтобы многочисленные другие объекты, помимо правильно начерченных прямолинейных треугольников, также опознавались в качестве треугольников и относились к их различным классам (треугольники с искривленными сторонами, треугольники с не полностью начерченными сторонами, треугольники, которые выделены только более или менее равномерной штриховкой их внутренней части, и т. д.). Чем более полно мы попытаемся описать все, что можно считать треугольником, тем длиннее будет описание. У нас может появиться смутное и неприятное чувство, что полный перечень не только был бы чрезвычайно длинным, но, больше того, что он по необходимости должен быть бесконечным. И все же такое описание возможно.

Сказанное выше составляет лишь незначительный фрагмент более общего понятия об отождествлении сходных геометрических объектов. А это, в свою очередь, есть лишь микроскопическая часть общего понятия аналогии. Никто не взялся бы в пределах практически допустимого числа страниц дать описание и определение общего понятия аналогии, которое доминирует в нашем объяснении зрения. Мы не знаем, потребует ли такое предприятие тысячу, или миллион томов, или какое-либо другое их число, которое практически недостижимо. Но зато очень возможно, что простейший и единственно доступный на практике способ показать, что представляет собой явление зрительного сходства, состоит в описании связей, существующих в зрительном аппарате мозга (the visual brain). Здесь нам придется иметь дело с такими разделами логики, в которых у нас практически нет предшествующего опыта. Степень сложности, с которой мы сталкиваемся в этом случае, выходит далеко за рамки всего того, что нам известно. Мы не имеем права считать, что логические обозначения и методы, применявшиеся ранее, могут быть использованы и в этой области. У нас нет полной уверенности в том, что в этой области реальный объект не может являться простейшим описанием самого себя, т. е. что всякая попытка описать его с помощью обычного словесного или формально-логического метода не приведет к чему-то более сложному, запутанному и трудновыполнимому. В самом деле, некоторые результаты современной логики как будто указывают на то, что подобных явлений следует ожидать, когда мы переходим к рассмотрению действительно сложных сущностей. Поэтому отнюдь не исключено, что поиски точного логического понятия «зрительной аналогии» (т. е. точного словесного описания зрительного сходства) являются напрасными. Весьма возможно, что уже сама схема связей в зрительном аппарате мозга является простейшим логическим выражением (или определением) принципа зрительной аналогии.

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

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

VI. Понятие сложности. Самовоспроизведение

Понятие сложности

Изложенные выше соображения показали, что фактор сложности играет важную роль во всякой попытке продвинуться вперед в теории автоматов и что понятие сложности, несмотря на его prima facie[41] количественный характер, может в действительности выражать нечто качественное – иметь принципиальное значение. В оставшейся части своего доклада я подвергну рассмотрению более отдаленное следствие из этого понятия, следствие, которое делает еще более явным один из качественных аспектов этого понятия.

Совершенно очевидно, что в природе существует связь типа «порочного круга», простейшим выражением которой является тот факт, что очень сложные организмы могут воспроизводить себя.

Мы вообще склонны неясно подозревать наличие понятия о «сложности»; это понятие и его предполагаемые свойства никогда не были четко сформулированы. Однако мы всегда склоняемся к допущению, что они проявляются следующим образом. Когда автомат выполняет некоторые операции, следует ожидать, что эти операции будут менее сложными, чем сам автомат. В частности, если автомат способен строить другие автоматы, то должно существовать уменьшение сложности при переходе от автомата-строителя к построенному им автомату. Это означает, что если автомат A может произвести автомат В, то автомат A каким-то образом должен содержать полное описание автомата В. Чтобы описание было эффективным, в A, кроме того, должны иметься различные устройства для наблюдения за тем, чтобы это описание соответствующим образом интерпретировалось, а предусматриваемые им строительные операции выполнялись. В этом смысле кажется как будто естественным ожидать известной тенденции к вырождению, т. е. того, что будет наблюдаться некоторое уменьшение сложности, по мере того как одни автоматы будут производить другие.

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

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

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

Теория вычислительных автоматов Тьюринга

Английский логик Тьюринг около 12 лет тому назад рассмотрел следующую проблему.

Тьюринг хотел сформулировать общее определение вычислительного автомата. Формальное определение получилось таким.

Автомат есть «черный ящик», который мы не описываем подробно, но который обладает следующими свойствами. Он имеет конечное число состояний, которые следует prima facie характеризовать, только указав их число (скажем, π) и занумеровав их числами 1, 2, π. Работа автомата будет существенно охарактеризована, если указать, каким образом можно вызвать изменение его состояния, т. е. как перевести автомат из состояния i в состояние j. Это изменение состояния потребует некоторого взаимодействия с внешним миром, которое будет стандартизовано следующим образом. Поскольку речь идет о машине, весь внешний мир можно представить себе состоящим из длинной бумажной ленты. Пусть эта лента имеет, например, 1 дюйм в ширину и разделена на ячейки (клетки), имеющие 1 дюйм в длину. В каждой ячейке этой ленты мы можем ставить или не ставить какой-нибудь знак, например точку, причем мы предполагаем, что эту точку можно как ставить, так и стирать. Ячейку, отмеченную точкой, мы будем называть «1», ячейку, не отмеченную точкой, будем называть «0». (Мы могли бы отмечать ячейки, используя большее число знаков, но, как показал Тьюринг, это не играет роли, ибо не приводит к чему-либо существенно более общему.) При описании положения ленты относительно автомата предполагается, что автомат может непосредственно контролировать одну ячейку ленты и что он обладает способностью передвигать ленту вперед и назад, скажем, на одну клетку за один раз. Чтобы пояснить вышеизложенное, допустим, что автомат находится в состоянии i (= 1, 2, 3, n) и что на ленте он видит знак е (= 0, 1); потом он переходит в состояние j (= 1, 2, 3,, n) передвигает ленту пар ячеек (р = 0, +1, –1; +1 означает, что автомат передвинул ленту на одну ячейку вперед, –1 – на одну ячейку назад) и вписывает в новую клетку, которая оказывается в поле его зрения, знак f (= 0, 1; «вписывание нуля» означает, что автомат стирает точку; «вписывание единицы» означает, что автомат ставит точку). Задав j, р и f как функции от i и е, мы полностью определим действие такого автомата.

Тьюринг тщательно проанализировал, какие математические процессы могут осуществлять автоматы этого типа. В связи с этим он доказал различные теоремы, касающиеся классической «проблемы разрешимости» логики[42], но я не буду касаться здесь этого вопроса. Он также ввел и проанализировал понятие «универсального автомата». Эта часть его работы имеет непосредственное отношение к нашей теме. Бесконечные последовательности цифр е (= 0, 1) являются одним из основных объектов математического исследования. Рассматриваемые как представления чисел в двоичной системе, они, в сущности, оказываются эквивалентными понятию действительного числа. Поэтому Тьюринг в своих рассуждениях исходил из таких последовательностей.

Тьюринг исследовал вопрос, какие автоматы могли бы построить ту или иную последовательность. Иначе говоря, если задан закон образования такой последовательности, то спрашивается, какой автомат следует применить для образования последовательности согласно этому закону. При этом под процессом «образования» последовательности понимается следующее. Автомат способен «образовать» некоторую последовательность, если возможно разметить определенный конечный участок ленты таким образом, что если ленту ввести в рассматриваемый автомат, последний выпишет эту последовательность на остальной свободной (и бесконечной) части ленты. Разумеется, этот процесс выписывания бесконечной последовательности никогда не закончится. То, что имеется в виду, когда говорят, что автомат способен выписать на ленте данную бесконечную последовательность, – это лишь то, что, выполняя эту задачу, он будет работать неограниченно долго и при условии, что ему предоставят достаточно времени, выпишет на ленте любую требуемую (разумеется, конечную) часть данной (бесконечной) последовательности. Упомянутый выше конечный участок ленты, размечаемый перед введением ленты в автомат, представляет собой «инструкцию» автомату для решения этой задачи.

Основной результат теории Тьюринга

A priori кажется, что создание «универсального автомата» невозможно. Как может существовать автомат, столь же эффективный, как и любой автомат, который только можно себе представить, в том числе, например, автомат, вдвое больший данного по размерам и сложности?

Тем не менее Тьюринг доказал, что такой автомат возможен. Хотя структура универсального автомата очень сложна, принцип, лежащий в его основе, весьма прост.

Тьюринг заметил, что совершенно общее описание произвольного автомата может быть дано (в смысле предыдущего определения) с помощью конечного числа слов. Это описание будет содержать некоторые пустые места – пробелы, которые соответствуют упомянутым выше функциям (функциям j, р, f, которые зависят от i, e), определяющим работу данного автомата. Если на пустые места подставлены соответствующие значения, мы имеем дело с конкретным автоматом. Если же пустые места не заполнены, эта схема представляет собой общее определение автомата в самом широком смысле слова. Так вот: можно описать автомат, обладающий способностью интерпретировать такого рода определение, иначе говоря, такой автомат, который, если ввести в него функции, определяющие в указанном выше смысле работу того или иного конкретного автомата, будет работать так же, как работает последний. Способность выполнять эти действия является не более загадочной, чем способность читать словарь и грамматику и следовать их указаниям относительно использования слов и законов их сочетания. Этот автомат, построенный так, что он может читать описания и имитировать описанный объект, и является универсальным автоматом в смысле Тьюринга. Чтобы он мог дублировать любую операцию, которую может выполнять любой другой автомат, достаточно снабдить его описанием этого автомата и, кроме того, инструкциями, необходимыми последнему для выполнения рассматриваемых операций.

Расширение программы на случай автоматов, которые производят автоматы

Для решения вопроса, который я рассматриваю здесь, – проблемы «самовоспроизведения» автоматов – процедура Тьюринга недостаточна лишь в одном отношении. Его автоматы являются чисто вычислительными машинами. Выдаваемая ими продукция – это участки ленты с нанесенными на ней нулями и единицами. Предметом же нашего рассмотрения является автомат, на выходе которого получается другой автомат. В принципе, однако, нетрудно исследовать это более широкое понятие и вывести из него результат, эквивалентный результату Тьюринга.

Основные определения

Как и в предыдущем случае, здесь тоже весьма важно дать строгое определение того, что следует понимать под автоматом в рамках нашего исследования. Прежде всего необходимо составить полный список тех элементарных частей, которые будут использоваться. Этот список должен содержать не только перечисление всех элементарных частей, но и полный набор сведений о том, как работает каждая элементарная часть в отдельности. Относительно легко составить такой список, т. е. написать каталог «машинных деталей», который был бы достаточно обширен, для того чтобы из них можно было строить множество нужных механизмов, и который удовлетворял бы требованиям аксиоматической строгости, необходимой в рассмотрениях этого рода. Этот список даже необязательно делать длинным. Его можно, конечно, сделать произвольно длинным или произвольно коротким. Список получится длинным, если в качестве элементарных частей в него будут включены объекты, которые можно получить в виде комбинаций других элементарных частей. Но список можно сделать и коротким – фактически можно устроить даже так, чтобы в нем была только одна-единственная деталь, – если каждую элементарную часть наделить разнообразными свойствами и функциями. Поэтому любое утверждение относительно числа необходимых элементарных частей представляет собой некоторый разумный компромисс, при котором ни от одной элементарной части не ожидается ничего слишком сложного и ни одна элементарная часть не предполагается выполняющей несколько явно не связанных друг с другом функций. В этом смысле, как можно показать, достаточно около дюжины элементарных частей. После этого проблему самовоспроизведения автоматов можно сформулировать следующим образом. Можно ли из указанных элементов построить такой агрегат, что, если его поместить в резервуар, где в большом количестве «плавают» все эти элементы, он начнет строить другие агрегаты, каждый из которых в конце концов станет новым автоматом, в точности подобным первоначальному? Оказывается, это возможно, и принцип, на котором эта возможность основана, тесно связан с очерченным ранее принципом Тьюринга.

Основная идея доказательства теоремы о самовоспроизведении

Прежде всего можно дать полное описание того, что, собственно, является автоматом в рассматриваемом здесь смысле. Это описание должно носить общий характер, т. е. в нем опять-таки должны быть пустые места, пробелы. Эти пробелы предназначаются для заполнения функциями, описывающими фактическую структуру того или иного автомата. Как и раньше, различие между описанием, в котором имеются пустые места, и описанием, в котором нет пустых мест (так как пробелы подобающим образом заполнены), представляет собой различие между общим описанием произвольного автомата и описанием некоторого конкретного автомата. В принципе, нетрудно описать следующие автоматы.

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

«Строительство», или «конструирование», одним автоматом другого следует понимать в том же смысле, что и раньше. Предполагается, что строящий автомат помещен в резервуар, в котором в большом числе «плавают» все элементарные компоненты. В этой среде наш автомат и будет строить новые автоматы. Не следует особенно беспокоиться о том, каким образом фиксированный автомат этого вида окажется в состоянии строить другие автоматы, превосходящие его самого по размерам и сложности. Ибо очевидно, что в этом случае большие размеры и большая сложность автомата, который должен быть построен, найдут свое отражение в, быть может, еще большем увеличении размеров инструкции J, вводимой в автомат-строитель. Как указывалось выше, эти инструкции должны представлять собой агрегаты элементарных частей. В этом смысле можно сказать, что некоторая вещь вызывает процесс, объем и сложность которого определяются объемом и сложностью объекта, который должен быть построен в ходе этого процесса.

В дальнейшем все автоматы, для построения которых использовалась способность автомата А строить другие автоматы, будут разделять с ним это его свойство. Все они будут иметь определенное место для инструкции J, т. е. место, в которое может быть введена такого рода инструкция. Совершенно ясно, что при описании такого автомата (например, с помощью соответствующей инструкции) указание места для инструкции J (понимаемой в указанном выше смысле) составляет некоторую часть всего описания автомата. Поэтому мы можем без каких-либо дальнейших разъяснений говорить о «вводе данной инструкции J в данный автомат».

Автомат В, который может копировать любую введенную в него инструкцию J. Инструкция J есть агрегат элементарных частей в смысле, указанном в а), заменяющий бумажную ленту машины Тьюринга. Указанная особенность автомата В будет использоваться в случае, когда J представляет собой описание другого автомата. Иначе говоря, автомат В является не чем иным, как «копировальной машиной», которая может, просматривая введенную в нее перфорированную ленту, производить другую перфорированную ленту, тождественную первой. Заметим, что и этот автомат может производить объекты, превосходящие его по размерам и сложности. Отметим также, что в этом нет ничего удивительного. Поскольку автомат В может только копировать, то чтобы получить на его выходе некоторый объект, нам следует лишь подать на его вход объект в точности таких же размеров и такой же сложности, что и объект, построения которого мы от него ожидаем.

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

Соединим автоматы А и В друг с другом и с механизмом управления С, который выполняет следующие действия. Пусть в автомат А введена инструкция J (понимаемая опять-таки в смысле а) и b)). После этого механизм управления С прежде всего заставит А построить автомат, который описан этой инструкцией J. Затем С заставит В скопировать указанную выше инструкцию J и введет копию в автомат, только что построенный А. Наконец, С отделит это устройство от системы А + В + С и «даст ему жизнь» уже как самостоятельному объекту.

Обозначим весь агрегат А + В + С через D.

Для того чтобы агрегат D = А + В + С мог функционировать, его следует снабдить некоторой инструкцией J, как это описано выше. Как мы уже отмечали, эта инструкция должна быть введена в автомат А. Образуем теперь инструкцию JD, которая описывает этот автомат D, и введем JD в автомат А, составляющий часть всего агрегата D. Назовем получившийся при этом агрегат Е.

Очевидно, что Е обладает способностью к самовоспроизведению. Заметим, что никакого порочного круга при этом не возникает. Решающий этап работы агрегата Е наступает тогда, когда инструкция JD, описывающая D, построена (скопирована) и присоединяется к D. При этом автомат D уже существует к тому времени, когда возникает необходимость построить (скопировать) JD, и построение JD никак не может изменить его. JD просто добавляется к D, в результате чего образуется новый агрегат Е, подобный первоначальному. Таким образом, существует определенный хронологический и логический порядок, в котором должно происходить образование D и JD, и этот процесс согласуется с правилами логики.

Осмысление полученного результата и его непосредственных обобщений

Описание автомата Е обладает и некоторыми другими интересными сторонами, о которых я не буду говорить здесь слишком подробно. Например, совершенно очевидно, что инструкция JD в основном выполняет функцию генов. Ясно также, что копирующий механизм В выполняет основной акт воспроизведения – дупликацию генетического материала, что, очевидно, является основной операцией в процессе деления живых клеток. Нетрудно также видеть, что произвольные изменения системы Е и в особенности инструкции JD могут породить некоторые типичные черты, проявляющиеся в живых организмах в связи с мутациями, которые хотя и являются летальными, как правило, тем не менее содержат в себе возможность дальнейшего самовоспроизведения организмов, уже не вполне тождественных первоначальным. Разумеется, ясно и то, в каком пункте эта аналогия нарушается. По-видимому, природный ген не содержит полного описания объектов, создание которых стимулируется его присутствием. Он содержит, вероятно, только общие указания, общие наметки.

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

Небольшое изменение предыдущей схемы позволяет нам также построить автомат, который сможет воспроизводить самого себя и, кроме того, строить другой автомат. (Если говорить более подробно, автомат такого рода выполняет, по-видимому, одну из самых типичных – если не самую типичную – функцию гена, состоящую в самовоспроизведении плюс производстве – или стимуляции производства – некоторых специфических ферментов. Действительно, для этого достаточно заменить инструкцию JD инструкцией JD+F, которая описывает автомат D плюс некоторый данный автомат F. Обозначим D вместе с инструкцией JD+F (которая помещена в автомат A, являющийся частью автомата D) через EF. Очевидно, что автомат EF обладает вышеописанным свойством. Он будет воспроизводить себя и, кроме того, строить F.

Заметим, что «мутация»[43], происходящая в автомате Е F, не является летальной, если она имеет место в пределах F – части инструкции JD+F. Если в результате такой мутации F перейдет в F’, это приведет к превращению EF в Er, т. е. «мутант» все еще будет обладать способностью к самовоспроизведению. Разумеется, это типичный нелетальный мутант.

Все сказанное представляет собой только первые скромные шаги в направлении систематической теории автоматов. Кроме того, эти шаги делаются лишь в одном частном направлении, которое, как я уже указывал выше, должно привести к выработке строгого понятия о «сложности». Эти шаги показывают, что «сложность» на своем низшем уровне является, по-видимому, вырождающейся, т. е. что каждый автомат, который может производить другие автоматы, на этом уровне будет производить только менее сложные автоматы. Существует, однако, некоторый минимальный уровень, начиная с которого эта склонность к вырождению перестает быть всеобщей. Преодоление этого уровня делает возможным создание автоматов, которые воспроизводят себя или даже строят еще более сложные вещи. Тот факт, что сложность, точно так же как и структура организмов, ниже некоторого минимального уровня является вырождающейся, а выше этого уровня может стать самоподдерживающейся и даже расти, несомненно, сыграет важную роль во всякой будущей теории рассматриваемого нами предмета.

Перевод Ю. В. Данилова

Дональд Мичи

Алан Тьюринг и проект машины-ребенка

Три главных вклада

Имя Тьюринга связывают с тремя достижениями:

1) решение проблемы из оснований математики, с помощью конструкции, известной под названием Универсальной машины Тьюринга (УМТ);

2) инженерная реализация УМТ в виде универсальных электронных вычислительных машин;

3) предложение о разработке компьютеров, имитирующих когнитивные функции, оцениваемые с помощью его «игры в подражание».

К последнему разделу относится не только знаменитый «Тест Тьюринга», но также малоизвестное практическое предложение по реализации универсального интеллекта посредством обучения и самообучения «машины-ребенка». Это предложение, хотя и не вызвавшее отклика, имеет, как я полагаю, даже большее потенциальное значение, чем сам по себе Тест Тьюринга.

Абстрактная конструкция

Главное достижение Тьюринга в области теории вычислимости восходит к 1935 году, когда он, будучи выпускником Кембриджского университета, слушал курс оснований математики знаменитого тополога М.Г.А. Ньюмена (M.H.A. Newman). В лекциях Ньюмена говорилось о программе Гильберта, целью которой был систематический метод, в принципе способный решать все математические задачи. Проблема указания такого метода была известна под названием Entscheidungsproblem[44]. Ньюмен рассказал также о провале этой программы вследствие доказательства Гёделя, опубликованного в 1931 году. Интересы молодого Тьюринга сосредоточились на логике, с особым вниманием к той идее, что Entscheidungsproblem разрешима в том и только том случае, если можно найти эффективную процедуру, которая за конечное число шагов решает, существует ли определенный ответ на любой правильно поставленный вопрос. Чтобы доказать, что такая процедура не может существовать, надо было дать строгое определение термина «эффективная процедура», или «алгоритм», или другого синонима для этого общепринятого интуитивного понятия. Математики в течение столетий не испытывали особых трудностей по этому поводу, поскольку для каждого конкретного бесконечного класса вопросов (то есть для каждой математически определенной функции) было ясно, является или не является алгоритмом процедура, отвечающая на эти вопросы. Однако для того, чтобы показать, что для некоторого бесконечного класса не существует алгоритма, требовалось предварительное уточнение понятия всей совокупности возможных алгоритмов. После этого задача сводится к доказательству, что никакая процедура, соответствующая этому точному определению, не может ответить на все вопросы этого класса.

Ни Тьюринг, ни Ньюмен не знали, что точное определение понятия «эффективной процедуры» уже в течение нескольких лет привлекало внимание Гёделя, Эрбрана, Поста, Чёрча и Клини. К 1936 году было уже предложено три различных по форме определения, а именно: общая рекурсивность Эрбрана – Гёделя, определимость Чёрча – Клини и вычислимость Тьюринга. Все три определения прямо вели к неразрешимости Entscheidungsproblem. В действительности они все эквивалентны.

В 1936 году Клини установил эквивалентность общей рекурсивности и 2-определимости, а Тьюринг приложил к своей работе 1936 года набросок доказательства эквивалентности вычислимости по Тьюрингу и 2-определимости. Далее Чёрч и Тьюринг использовали каждый свою систему для доказательства конкретных результатов, в том числе неразрешимости проблемы распознавания доказуемости в исчислении предикатов.

В следующем году, реферируя работу Тьюринга, Чёрч заметил, что вычислимость с помощью машины Тьюринга «имеет то преимущество, что делает непосредственно очевидным отождествление с эффективностью в обычном (неявно определенном) смысле слова». Вопрос, может ли любая заданная математическая функция в принципе быть вычислена, сводится при этом к вопросу, остановится ли когда-нибудь машина Тьюринга, запущенная с некоторыми входными данными и надлежащей программой вычислений. Соответственно, в нынешней сокращенной формулировке говорят: является ли заданная функция «вычислимой по Тьюрингу»?

Тезис Тьюринга

Заметим, что существует огромное различие между главными результатами Тьюринга (например, что класс функций, вычислимых по Тьюрингу, не исчерпывает всех функций, определимых в исчислении предикатов) и описанным Чёрчем отождествлением «вычислимого по Тьюрингу» с «эффективно вычислимым». Невозможно доказать тождество двух сущностей, одна из которых явно не определена. Таким образом, хотя Тьюринг сделал указанное тождество непосредственно очевидным для современной интуиции, его абстрактная конструкция машины Тьюринга не достигает ничего большего. Описанное выше отождествление обычно называется «Тезисом Тьюринга». Соответственно, «Тезис Чёрча» заменяет вычислимость по Тьюрину 2-определимостью. Ввиду эквивалентности 2-определимости и вычислимости по Тьюрингу все три тезиса логически эквивалентны.

Вычислимость по Тьюрингу

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

PafiRq, или pafiLq, или pafiNq.

Последовательность таких пятерок интерпретируется как таблица команд для вычисления f. Частное значение аргумента, для которого надо вычислить f (частный вопрос из заданного класса вопросов), вводится в машину как последовательность символов, записываемых в первых n клетках ленты. Команды имеют следующее содержание:

Если машина выполняет команду р и в сканируемой клетке находится символ а, заменить а на в, переключить машину на выполнение команды q и передвинуть ленту на одну клетку вправо, одну клетку влево или оставить её на месте, в зависимости от того, содержит ли данная пятерка соответственно символ R, L или N.

До сих пор для каждой функции f мы должны были строить специализированную машину Тьюринга (Тьюринг называет такие машины «логическими вычислительными машинами» или «ЛВМ»), вкладывая, так сказать, надлежащую таблицу команд в «задний карман» устройства. Предположим теперь, что каждый запуск машины начинает вычисление новой функции f. Тогда можно было бы в каждом случае вначале описать на ленте соответствующую специализированную машину для вычисления f, по существу – ее таблицу команд. Таким образом, можно создать универсальную машину, выполняющую различные команды для вычисления различных функций f, закодированных на ленте. Чтобы привести в действие такую машину, надо вложить в ее «задний карман» новую таблицу команд, на этот раз ведущую таблицу, смысл которой состоит в том, что она определяет язык в виде правил интерпретации.

На языке, несколько более ориентированном на компьютеры, каждая пятерка интерпретируется следующим образом:

 текущая команда p;

 символ а, находящийся в текущей клетке ленты;

 символ в, по условию заменяющий его;

 направление (R, L, N) движения ленты;

 адрес q перехода на следующую команду.

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

Техническая реализация

Возможность физического осуществления Универсальной машины Тьюринга была в то время далеко не очевидна. Несомненно, ее упустил из виду Джон фон Нейман, который интересовался математическими работами Тьюринга и знал его работу об Entscheidungsproblem. Но, как полагает М.Г.А. Ньюмен в некрологе, опубликованном в Times, сам Тьюринг уже видел эту инженерную возможность: описание, которое он дал тогда «универсальной» вычислительной машине, было, по существу, вполне теоретическим, однако Тьюринг весьма интересовался всевозможными практическими экспериментами и даже в то время рассматривал перспективы практического конструирования машин такого рода.

Этот замысел превратился в конкретный план благодаря приобретенному Тьюрингом в военное время опыту работы с быстродействующими автоматическими счетными устройствами. Работая в Правительственной школе кодов и шифров в Блетчли Парк (Bletchley Park), он стал (вместе с математиком Гордоном Уэлчменом (Gordon Welchman)) идейным руководителем расшифровки немецкого кода для морской связи «Enigma». Они использовали для расшифровки электромеханические устройства, которые назывались «Bombes». В поисках более быстродействующих устройств Тьюринг установил контакт с Т. Флауэрсом (T.H. Flowers), который позже стал главным конструктором серии быстродействующих электронных компьютеров «Colossus». Они предназначалась для криптографического проекта Ньюмена, имевшего другое назначение. Незадолго до смерти Флауэрс рассказывал о своих разговорах за обедом с Ньюменом и Тьюрингом о Чарльзе Бэббидже и его работе. Еще раньше, весной 1943 года, и И. Гуд (I.J. Good), и Д. Мичи (D. Michie) начали регулярные дискуссии с Аланом Тьюрингом о возможной механизации игры в шахматы, обучения и других видов умственной работы. В этих дискуссиях будущее развитие универсальных машин уже считалось само собой разумеющимся, отчасти вследствие знакомства с машинами «Colossus»[45], хотя эти последние еще не были универсальными.

Когда война приближалась к концу, отчет фон Нейманна – Эккерта– Мочли (Neumann – Eckert – Mauchly) от 30 июня 1945 года побудил к действию Дж. Вомерсли (J.R. Womersley), суперинтенданта Математического отделения Национальной физической лаборатории (НФЛ) Соединенного Королевства. По-видимому, семя было посеяно еще раньше. Согласно Копленду[46], протокол Исполнительного комитета НФЛ от 15 ноября 1949 года свидетельствует, что Вомерсли прочел в 1938 году работу Тьюринга об Entscheidungsproblem и сразу же заинтересовался возможностью построить вычислительную машину. Во всяком случае, он предпринял быстрые действия, чтобы завербовать Алана Тьюринга, который к концу 1945 года составил свой отчет о компьютере АСЕ. Из этого документа вместе с лекцией Тьюринга, прочитанной в феврале 1947 года в Лондонском математическом обществе, можно извлечь список новаторских концепций Тьюринга:

 микропрограммирование;

 идея подпрограммы;

 использование стека для организации иерархического вызова подпрограмм;

 вычисления с переменной разрядностью;

 необходимость большой страничной памяти;

 циклы «while»;

 удаленный доступ и обработка;

 автоматизация ввода и вывода;

 концепция операционной системы;

 автоматизация программирования.

Заметим, что все эти методы стали общепринятыми в вычислительной технике, отчасти даже последний из них.

С удивительным предвидением Тьюринг указал, что главные препятствия для прогресса носят не столько технический, сколько социологический характер:

«Специалистов (инженеров-программистов) будут увольнять, как только какая-нибудь техника станет достаточно стандартной, чтобы можно было разработать программы, позволяющие компьютеру делать это автоматически. Может случиться, что специалисты откажутся разрабатывать такие программы. Возможно, они не захотят терять таким образом свою работу»[47].

Через 53 года я спросил квалифицированного инженера-программиста, не думает ли он, что Эппл и Майкрософт могут построить операционные системы с самомоделированием, значительно увеличив этим возможности самоотчета и самопрограммирования. Ответ был: «Вероятно, но тогда люди вроде меня потеряют работу!»

Моделирование сознания

Идея автоматического программирования, рассмотренная Тьюрингом в его лекции 1947 года, немедленно привела к вопросу, «насколько вычислительная машина в принципе может моделировать деятельность человека».

Интересы Тьюринга выходили за пределы всего лишь принципиальной возможности. В переписке с И. Гудом и Д. Мичи он активно обсуждал в этот период, как оценить число переключательных и соединительных элементов человеческого мозга, чтобы получить требования к простейшему моделированию. В работе, опубликованной в «Mind» в 1950 году, он предложил «игру в имитацию». Человек, задающий вопросы, общается через удаленное печатающее устройство с двумя адресатами, человеком и машиной.

«Я полагаю, что примерно через пятьдесят лет будет возможно программировать компьютеры с объемом памяти порядка 109, которые смогут играть в имитацию столь хорошо, что средний задающий вопросы человек будет иметь шансы не более 70 процентов для правильного отождествления (человек или машина?) после пятиминутного опроса».

Таким образом, этот тест относится скорее к человеческому характеру мышления опрашиваемого, чем к уровню этого мышления. Тьюринг, несомненно, верил, что, кроме этого относительно нетребовательного сценария, можно будет в конечном счете моделировать способность к глубокому и последовательному мышлению. Но игра в имитацию должна была разрешить не эту проблему. Приведенный выше отрывок рассматривает скорее вопрос, какое время и какая память требуются для положительного решения менее важного и чисто философского вопроса: при каких обстоятельствах пришлось бы вообще согласиться с притязанием машины на мышление. Оптимистическая оценка в тысячу мегабит памяти частично объясняется приведенным далее в работе уточнением. Как говорит автор, мы должны, может быть, ограничить задачу, игрой в имитацию против слепого. Его озабоченность по поводу дополнительных ресурсов, необходимых для имитации «визуального мышления», впоследствии оправдалась. Однако если бы Тьюринг знал интеллигентного человека, родившегося слепым, то он, возможно, осознал бы существование эквивалентов «визуального мышления», не требующих зрения, имитация которых оказалась бы столь же требовательной в отношении ресурсов. К этому вопросу я еще вернусь.

Между тем прошедшие пятьдесят лет устранили первоначальный вопрос Тьюринга: при каких обстоятельствах мы должны были бы вообще признать способность машины мыслить. Это случилось в результате поляризации мнений образованной публики, разделившейся на два лагеря, которые можно описать как философски-теоретический и технологически-эмпирический. Первый из них нашел (теоретически) неопровержимые основания отвергнуть это притязание, тогда как второй лагерь нашел непреодолимую (практическую) потребность принять его.

Философско-теоретический лагерь

Этот лагерь полагает, что если нечто не может претендовать на сознание, подобное человеческому, то нельзя сказать, что оно мыслит. В конце концов, глагол «мыслить» вошел в наш язык с сопровождающим его предположением, что мышление означает сознание, и в повседневной жизни мышление по-прежнему интерпретируется таким образом. Например, философ Джон Сирл (John Searle) определяет мышление как свойство, которое можно приписать лишь объектам, способным «иметь сознательные мысли точно в том же смысле, в каком имеем их вы и я». Согласно доктрине философски-теоретического лагеря, пока не будет найден метод обнаружения в машинах сознания, подобного человеческому, даже сверхчеловеческая интеллектуальная деятельность во всех модальностях не должна считаться достаточным свидетельством разумного мышления.

В работе 1950 года Тьюринг отметил аргументы этого рода, а также невозможность доказать, так сказать извне, что даже человек обладает сознательным мышлением. В работе 1950 года в журнале «Mind» он отмечает:

«Согласно самой крайней форме этого взгляда, единственный способ удостовериться, что машина мыслит, состоит в том, чтобы быть машиной и чувствовать себя думающим. В таком случае эти чувства могли бы быть сообщены внешнему миру, но, конечно, никто не обязан был бы обращать на это внимание. Подобным же образом единственный способ убедиться в том, что человек мыслит, – это быть этим самым человеком. В действительности это солипсистская точка зрения. Возможно, это самая логичная точка зрения для того, кто ее придерживается, но она затрудняет передачу идей. А обязан верить в то, что А мыслит, а В не мыслит, между тем как В верит в то, что В мыслит, а А не мыслит. Вместо бесконечных споров по этому поводу обычно придерживаются вежливого соглашения, полагая, что мыслит каждый».

Как неявно отметил Тьюринг, до тех пор, пока мы не примем соглашение о методе обнаружения и измерения сознания в машинах, солипсистская позиция логически неопровержима, при всей ее бесполезности.

Технологически-эмпирический лагерь

Специалисты по информационным технологиям подходят к тем же вопросам с противоположной точки зрения, а именно с точки зрения полезности. Соответственно этому, термины «интеллект» и «мышление» как свойства программ и систем программирования, отделенные от обязательной связи с сознанием, уже вошли в повседневную речь. В своей работе 1950 года в «Mind» Тьюринг говорит:

«…Я полагаю, что к концу столетия употребление слов и общее мнение образованной публики изменятся настолько, что можно будет говорить о машинном мышлении, не вызывая возражений».

Можно сказать, что это пророчество Тьюринга осуществилось сегодня среди пользователей компьютеров. В формулировках технических требований и в диагностике мы встречаемся даже с языком, выражающим сознательность. Следующий диалог заимствован в сокращенном виде из популярного английского компьютерного журнала What Palmtop and Handheld PC за июнь 2000 года. Я подчеркнул некоторые слова, поместив их в квадратные скобки, чтобы привлечь внимание к их антропоморфным коннотациям цели, осознания и восприятия.

ДЕФЕКТ: Недавно я приобрел компьютер Palm V с портативной клавиатурой. Однако каждый раз, когда я подключаю Palm V к клавиатуре, он [пытается] HotSinc через прямую последовательную связь. Если я отменяю его попытку HotSinc, перехожу в MemoPad и пытаюсь печатать, то всякий раз, когда я нажимаю клавишу, он [стремится] HotSinc. Что я делаю неправильно?

ЛЕЧЕНИЕ: Самое логичное решение состоит в том, что ваш Palm V [не уверен] в наличии клавиатуры. Вам надо заново инсталлировать драйверы, поставляемые с клавиатурой, и убедиться, что она подключена. Тогда ваш Palm V перестанет [пытаться] HotSinc с клавиатурой и [признает] ее полноправным устройством.

Предсказание Тьюринга было сделано задолго до повседневного использования компьютеров и является еще одним свидетельством его почти сверхъестественной способности предвидеть отдаленное будущее.

Современная практика программирования (как и медицинская практика) считает достаточной, если систему можно заставить вести себя, как если бы она обладала сознанием. Несколько лет назад можно было встретить в Интернете честолюбивое заявление такого рода:

…В предвидении таких изменений группа Интерфейса пользователей в компании Microsoft Research разрабатывает интерфейс, играющий роль помощника… Этот проект, который мы называем «Персона», будет пытаться создать иллюзию находящегося в компьютере сознательного существа.

То же происходит и в более широком плане. Философия, рассуждающая о том, что составляет «подлинное» сознание, уступает место техническим и социальным потребностям. Сегодняшние проекты, подобные проекту «Персона», сталкиваются с крайне трудной задачей, близкой к самой сущности искусственного интеллекта. Поэтому уместно рассмотреть здесь принадлежащий самому Тьюрингу радикальный план осуществления интеллекта человеческого уровня. Его предложение «машины-ребенка» должно было послужить указанием, как можно в действительности выполнить эту задачу, казавшуюся недоступной при других подходах. К сожалению, он запрятал это предложение в раздел под названием «Обучающиеся машины», седьмой и последний в той же работе в «Mind» 1950 года. Сообщество исследователей искусственного интеллекта в целом и ученые вообще упустили из виду его тщательную аргументацию. Она начинается с того, что он отбрасывает как безнадежный казавшийся неизбежным метод, а именно метод непосредственного программирования в машине обширного фактического, относительного и причинного знания, какое понадобилось бы для этой цели.

Безнадежность ручной работы

Тьюринг воспользовался оптимистическим предположением о памяти в тысячу мегабит, чтобы получить нижнюю оценку ресурсов, необходимых для ее заполнения при явном программировании.

«При моем нынешнем темпе работы – писал он, – я выдаю в течение дня около тысячи символов программы. Так что эту работу могут выполнить примерно шестьдесят человек, непрерывно работающих в течение пятидесяти лет, если ничего не выбрасывать в мусорную корзину. Было бы желательно найти более приемлемый метод».

В 1980-е годы, по крайней мере, две попытки построить универсальные системы на человеческом уровне дорого заплатили за пренебрежение к «более приемлемым методам» Тьюринга. Это был «Проект пятого поколения» отделения MITI японского правительства и проект «CYC» американской корпорации MCC. Оба проекта стремились создать огромные базы данных, которые должны были содержать большую часть того, что люди называют здравым смыслом, и обладать способностью сообщать на естественном языке свои знания и свои выводы.

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

Науки о познании и о мозге обнаружили, что даже в ограниченных областях, где знание может быть запрограммировано в приемлемое время, есть другая причина неосуществимости ручной работы. Неспособность программиста запрограммировать его знания о том, как просмотреть фрагмент стихотворения, как распознать человеческое лицо, как плавать или как завязать рифовый узел, не имеет никакого отношения к его неспособности записать какую-нибудь программу в приемлемое время. Как продемонстрировал и разъяснил Мичи в 1995 году, знание и мышление решающим образом основаны на «процедурной» памяти, которая, вообще говоря, не доступна интроспекции. Между тем явное программирование многих повседневных навыков требует доступа к содержанию этой памяти. Таким образом, возможность ручного программирования всего необходимого знания для «машины-ребенка» становится невозможной вследствие качественных ограничений, прибавляющихся к недостаточности ресурсов, обнаруженной вычислениями Тьюринга.

«Более приемлемый» метод Тьюринга

Тьюринг вводит следующее правило для массового приобретения знаний – сознательного или бессознательного:

При попытках имитации разума взрослого человека мы неизбежно должны подумать о процессе возникновения этого состояния разума. Здесь можно отметить три компоненты:

1) исходное состояние разума, например при рождении;

2) обучение, которому он был подвергнут;

3) другие воздействия, которым он был подвергнут, не относящиеся к обучению.

Вместо того чтобы пытаться разработать программу, имитирующую разум взрослого человека, почему не попытаться составить программу, моделирующую разум ребенка? Если подвергнуть эту последнюю надлежащему курсу обучения, то можно было бы получить взрослый разум.

Чтобы запрограммировать в машине-ребенке способность быть воспитуемой до такого уровня, на котором ее можно было бы передать учителям детского сада, очевидным образом должны быть выполнены следующие минимальные требования:

1. Чтобы система понимала некоторое приближение к естественному языку и отвечала на языке, понятном учителю.

2. Чтобы она была способна обучаться на примерах, доставляемых учителем («обучение под руководством»).

3. Чтобы она была способна обучаться путем собственного исследования, методом проб и ошибок («обучение без руководства»).

Современное развитие машинного обучения (пункты 2 и 3 предыдущего перечня) и построение пишущих устройств для развития разговорных навыков (пункт 1) показывают, что Тьюринг был на правильном пути. Но прогресс в развитии эффективной машины-ребенка будет медленным, поскольку предположения, высказанные в той же статье в «Mind» относительно мозга новорожденного, могут оказаться крайне наивными:

«Можно предположить, что мозг ребенка – это нечто вроде блокнота, какие покупают в магазине канцелярских товаров, – очень мало механизмов, но множество свободных листов… Мы надеемся, что в детском мозге такой простой механизм, что можно будет легко запрограммировать нечто вроде него».

Как показывают современные исследования, дело обстоит совсем иначе: мозг новорожденного человека и даже мозг эмбриона до рождения снабжен сложно взаимодействующими способностями, а также встроенными программами их дальнейшего развития. Надежды на легкое программирование «чего-то в этом роде» приходится, к сожалению, оставить. Следствия этого несколько обескураживают в отношении времени разработки программы, которая могла бы выдержать ограниченную версию теста Тьюринга. Время развития такой программы, предусмотренное самим Тьюрингом на основании оптимистических предположений, оказалось все же недостаточным по отношению к снисходительному критерию теста, намеченному в его работе 1950 года.

В записи радиопередачи 1952 года можно прочесть:

Ньюмен: Мне хотелось бы присутствовать при вашем соревновании человека с машиной, и, может быть, попытаться самому задать некоторые вопросы. Но это будет еще не скоро, если машина должна будет отвечать на все вопросы без ограничений?

Тьюринг: Конечно, для этого понадобится, я думаю, 100 лет.

Таким образом, по оценке Тьюринга, машина сможет достигнуть человеческого уровня в качестве собеседника примерно в 2050 году. Но, как мы видели, у него были в то время серьезные заблуждения, разделяемые его современниками, относительно первоначальной структуры и возможностей мозга новорожденного ребенка…

Бесплотная мысль

Идея машины-ребенка натолкнулась также на другой подводный камень, который сам Тьюринг огорченно сознавал. Это – желательность снабдить подлежащее воспитанию устройство достаточным набором сенсорных органов, конечностей и т. д., чтобы оно могло получать всю совокупность ощущений, обычных для нормального «воспитания младенца». Как признал сам Тьюринг, эта цель практически недостижима. Психолог Роберт Френч убедительно показал, что компьютер лишь в том случае сможет удовлетворить тесту Тьюринга, если он приобретет интеллект взрослого человека, воспринимая мир так же, как мы. При этом он, по-видимому, имел в виду ограниченную версию теста, вроде той, которая обсуждалась в радиопередаче 1952 года. Позиция Тьюринга состояла в следующем:

«Нам незачем также беспокоиться о ногах, глазах и т. д. Как показывает пример мисс Хелен Келлер (родившейся слепой и глухой), обучение можно осуществить с помощью тех или иных средств, если есть коммуникации в обоих направлениях между учителем и учеником».

Раньше он предлагал ограничить свой тест игрой в имитацию со слепым человеком, при этом он хотел избежать, как несущественных для «чистого разума», огромных технических трудностей, связанных с развитием машинных эквивалентов человеческого зрения. Возможно, он хотел также уменьшить роль визуализации в том виде мышления, который надо было имитировать, по отношению к логическим и словесным формам. В таком случае он недооценивал, до какой степени люди с врожденной слепотой могут развить совместное использование других органов чувств, порождая таким образом эквиваленты визуального восприятия – даже тот вид «визуального мышления», который мы знаем из собственного опыта и находим в интроспективных наблюдениях таких мастеров мышления, как Эйнштейн и Пуанкаре.

Восприятие без зрения и «телесное чувство»

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

Инженер-психолог Р.Л. Грегори (R.L. Gregory), бывший одно время моим коллегой, опубликовал систематическое исследование еще более замечательного субъекта[48]. На высшем уровне своих навыков этот человек способен был в одиночку ездить на велосипеде! Однако в возрасте 51 года в результате операции пересадки роговицы он приобрел зрение. Теперь он мог «видеть» в том же смысле, как «видит» фотоаппарат. Но поскольку у него в течение всей жизни не было возможности научиться координации визуальных сообщений с данными других органов чувств, в том числе с внутренней регуляцией вегетативных и мышечных процессов, он вначале не мог интерпретировать то, что сообщали мозгу его глаза. Путем упорной тренировки он добился некоторого улучшения своей деятельности в качестве зрячего. Но эта его способность оставалась убогой, по сравнению с его прежними замечательными успехами в обществе в качестве слепого. Окончилось это трагически: через несколько лет он впал в отчаяние и покончил с собой.

Я подробно остановился на сенсомоторном восприятии и управлении, поскольку современные успехи в когнитивной нейрологии укрепили накопившиеся свидетельства о центральной и необходимой роли «телесного чувства» в развитии человеческого восприятия и сознательного мышления. Эти новые знания не только подрывают предположения Тьюринга относительно требуемых ресурсов. Возникают сомнения по поводу возможности и даже целесообразности технического подражания интеллекту человеческого типа. Не лучше ли нам поставить следующие два вопроса:

1. Каковы возможные применения теста Тьюринга?

2. Каковы его ограничения?

Применения теста

Главное преимущество теста Тьюринга состоит в том, что он позволяет быстро и эффективно опровергнуть неосновательные притязания некоторой интерактивной программы на обладание интеллектом. Когда шахматная программа Deep Blue нанесла поражение чемпиону мира Гарри Каспарову, многие люди решили, что эта программа, несомненно, обладает значительным шахматным интеллектом. Но в действительности эта программа была лишь чудом большой вычислительной мощности, где единственным обоснованием каждого хода был просмотр и оценка многих миллиардов позиций. В этой программе не была представлена ни одна нетривиальная шахматная концепция. Собеседнику в тесте Тьюринга достаточно было бы только попросить программу прокомментировать избранные отрывки из только что сыгранных партий, чтобы разоблачить ее притязания. В отличие от этого, любой шахматный мастер легко ответит на эти вопросы таким способом, что коллеги-шахматисты обнаружат в его ответах проявления интеллекта. Отметим важность выбора невидимого человеческого кандидата и спрашивающего из одной и той же интеллектуальной культуры (см. ниже) для предполагаемой версии теста Тьюринга, ограниченной шахматной игрой. В том маловероятном случае, если бы разработчики Deep Blue сослались на незнание программой естественного языка как на единственную причину отсутствия демонстрируемых концепций (в действительности они не выдвигали таких претензий), остался бы эффективный вариант, указанный независимо Пенроузом[49] и Мичи[50]. Вопросы теста можно задавать в виде нарочно сочиненных шахматных позиций, с предложением, чтобы программа ответила на них ходом. Это были бы причудливые позиции, не дающие возможности как-либо применить грубую силу путем опережающего просмотра в течение приемлемого времени, однако эти позиции «с первого взгляда» поддаются известным шахматным концепциям, опирающимся на стратегические соображения. Случилось так, что Пенроуз и Мичи в указанных работах независимо избрали позицию, изобретенную для иллюстрации этого тезиса международным мастером Хартстоном (Hartston) и гроссмейстером Норвудом (Norwood, 1993). Стоит заметить, что методология шахматного эндшпиля, несомненно принадлежащая наномиру машины-ребенка, а именно король с пешкой (на а7) против короля и ладьи, породила концептуально построенную программу, которая способна была доказать свой шахматный интеллект, ответив (с комментариями) на все такие вопросы, поставленные этой программой на международной встрече специалистов по компьютерным шахматам и шахматных мастеров.

Прошло примерно шестнадцать лет с тех пор, как первая обучаемая машина-ребенок была сконструирована А.Д. Шапиро (A.D. Shapiro). Он назвал свой метод обучения на примерах «структурированной индукцией». Учителем был международный мастер Д. Копец (D. Kopec). Оба они работали в институте имени Тьюринга в Глазго. После этого некоторая версия обучаемой машины-ребенка была продана промышленному клиенту института, Вестингауз Электрик Корпорейшн (Westingouse Electric Corporation) в Питсбурге, США. Эта фирма столкнулась с, по-видимому, неразрешимой проблемой оптимизации, которая относилась, однако, не к стратегии шахматных эндшпилей, а к автоматическому управлению качеством на заводе очистки ядерного топлива.

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

С тех пор использование программ и методологий машины-ребенка незаметно проникло в различные отрасли промышленности, почти не привлекая внимания в академических кругах исследователей искусственного интеллекта. В последнее время метод структурированной индукции был применен в фармакологической промышленности с использованием Индуктивного логического программирования (Inductive Logic Programming, ILP). Маглтон, Брайант и Шринивасан (Muggelton, Bryant, Srinivasan) сделали при этом совместное человеко-машинное открытие биомалекулярной теории структурно-активных отношений.

Удивительный, но неопровержимый факт состоит в том, что Тьюринг предусмотрел в 1950 году для машины-ребенка в точности тот же путь, который теперь в ILP называется «базовым знанием». Предсказание Тьюринга состояло в том, что обучаемая машина будет иметь «полную систему встроенных правил логического вывода… память будет занята в основном определениями и предложениями. Предложения будут иметь различный статус, например точно установленные факты, предположения, утверждения авторитетов, выражения, имеющие логическую форму предложений, но без оценки достоверности».

В микромире открытия биомолекулярных теорий не только проявляются успехи идеи машины-ребенка, но и неожиданно вновь возникает сам дух теста Тьюринга. «Учителя», обучающие эти системы молекулярной науке, говорят, что они могут успешно критиковать предположения машины, генерирующей некоторые утверждения, лишь в том случае, если они могут уверенно представить себе, что эти предположения исходят от коллеги-человека.

Ограничения теста

Следующие замечания применимы ко всем разумным версиям теста Тьюринга и в особенности к сильной его форме, предложенной Ньюменом в описанной выше радиопередаче.

Зависимость от культуры

Для частного микромира шахмат мы уже подчеркнули выше необходимое предварительное требование, чтобы все участники имели одинаковую подготовку в одной и той же интеллектуальной культуре. Этот принцип можно распространить на все человеческие миры. Вследствие культурных разночтений люди с разной подготовкой могут испытывать трудности или даже быть неспособными оценить интеллект друг друга. Разговор между охотником на тюленей из племени эскимосов и ловким торговцем наркотиками с нью-йоркской улицы может вызвать у каждого из них впечатление, что другой вообще ничего не соображает. Предположим, что человек, возражающий против развития машин, попытался бы установить склад ума, например, шотландского огородника. Предположим далее, что один из указанных выше индивидов выбран в качестве удаленного человека, а вопросы ему будет задавать жена японского рыбака. В ее изолированной жизни она не могла иметь контакта со складом ума шотландского огородника или гренландского охотника за тюленями (или, может быть, нью-йоркского торговца наркотиками). Тогда ее задача оценки двух кандидатов может оказаться невыполнимой.

Френч убедительно рассмотрел соображения этого рода и пришел к выводу, что «…компьютер будет всегда разоблачен, если он не имеет в этом мире такого опыта, какой имеют люди». Однако, как показывают предыдущие воображаемые ситуации, положение может быть еще хуже. Культурные факторы могут сделать сравнительную оценку совершенно невозможной.

Зависимость интеллекта от физических характеристик

Рассмотрим теперь тест Тьюринга без ограничений на вопросы, как это предложил Макс Ньюмен в упомянутой радиопередаче. Предположим, что двум невидимым кандидатам задается вопрос: «Можете ли вы почесать ваш левый локоть пальцами вашей левой руки?» Для невидимого человека, будь он эскимос, житель Нью-Йорка или англичанин, это легкий вопрос с «очевидным» (отрицательным) ответом. Но машина-конкурент, если только ее конструктор случайно не предвидел в точности такой вопрос, потерпит поражение из-за отсутствия соответствующего телесного чувства. Нормальный ребенок пяти лет способен правильно ответить на этот вопрос, даже если не позволить ему физически экспериментировать перед ответом. Таким образом, этот вопрос почти ничего не говорит об интеллекте, но все – о человеческой природе.

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

• явлениями сознательного мышления;

• сочетанием человеческого телесного чувства с внешними и внутренними сенсорными органами.

В частности, визуально-пространственная (и даже «мышечная» в случае Эйнштейна) природа мышления по аналогиям, свойственная многим научным и математическим умам, едва ли может быть уловлена без предварительного условия, что машинная программа должна развиваться в человеческом теле и передаваться во взаимодействии с другими людьми.

Глубина и диапазон человеческого сознания подразделяются теперь на «центральное сознание» (core consciousness) и «расширенное сознание» (extended consciousness), причем число категорий увеличивается по мере того, как применение современного оборудования и методов обнаруживает во всех подробностях нервные корреляты. Автору этих строк кажется неправдоподобным, чтобы когда-нибудь удалась попытка полной имитации действия разума в целом. Однако размышления и внимательное наблюдение за развитием когнитивной неврологии убедили меня в том, что столь героические усилия в любом случае принесут некоторую пользу. То, что требуется, – это скорее реализация сознательного мышления специфически машинного типа в том смысле, что аналог человеческого сознания будет зависеть не от физического строения человека, но от более доступного машине собственного телесного чувства и от показаний внешних и внутренних сенсоров. Если читатель вернется к приведенному выше примеру с карманным компьютером и его парализованной клавиатурой, то он поймет мое заключение.

Коммерческое возрождение игры в имитацию

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

Имеются в виду следующие приложения:

1) персональные гиды для торговых выставок, конференций, музеев, тематических парков, дворцов, археологических памятников, фестивалей и т. д.;

2) существует неудовлетворенная потребность более чем в персонализации, а именно в гуманизации. Взаимодействие может при этом выполняться через виртуальную личность, к которой пользователь обращается как к человеческому гиду и советчику;

3) английский как второй язык. В наше время все большее число людей пересекает национальные границы, чтобы жить новой жизнью, в которой им препятствует недостаточное знание языка их новой среды;

4) в развитых странах возрастает доля населения пенсионного возраста. Широко распространено опасение, что под давлением этого нового груза может рухнуть социальная инфраструктура. Для того чтобы преодолеть изоляцию пенсионеров, можно дополнить телевидение и книги личными машинными собеседниками;

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

Уровень, достигнутый в настоящее время, все еще поверхностный, а достижения несколько не согласованы. Они сильно зависят от эффектов анимации и синтеза речи, создающих иллюзию личности. Приближение к игре в имитацию даже в очень снисходительной формулировке Тьюринга 1950 года, по-видимому, займет еще несколько лет в будущем. На этом сравнительно нетребовательном уровне может оказаться возможным «настроить» даже то низкопробное разговорное устройство, которое обычно называют «болтуном». Подлинно информативные и рациональные разговоры остаются вне пределов коммерческой разработки.

Это следует из глубокого различия, существующего в человеческой жизни между разговором и обсуждением.

Разговор – это чисто социальная деятельность, аналогичная обыскиванию шерсти у других приматов. При искусной имитации он будет удовлетворять непосредственные потребности. После этого надо будет всерьез взяться за создание не только связных, но и информативных личностей, способных отвечать на более серьезные вопросы.

Повторяю, что «болтун» играет роль собеседника в легком разговоре, в пределах светских контекстов, таких как семья, друзья, любимые животные, личные истории и опыт, интересы, хобби, места отдыха, брак, здоровье, дети, автомобили, политика, еда, предпочтения, отвращения, любимые теории и т. д. Разрабатываемые модели могут записывать и хранить (отдельно для каждого из пользователей) свойственные им разговоры, образуя тем самым кумулятивные профили индивидуальных партнеров по разговору.

На следующем этапе нужно будет дополнить тактику поведения «болтуна» способностью управлять разговором, а в случае надобности – изменять направление разговора по заранее выбранным темам. Человек-лектор может делать это даже при неограниченных прерываниях вопросами и комментариями. Для получения адекватных прототипов этого, как я полагаю, понадобится, по крайней мере, пять лет в будущем, но вряд ли намного больше. Кроме того, основные свойства подлинного дружественного интерфейса могут представить значительный прорыв вперед, который позволит сосредоточиться на более трудной проблеме развития подлинного интеллекта, основанного на самосознании, сознании пользователя и сознании мира, – машину со свойствами, аналогичными тем, какие мы знаем в нас самих.

Дональд Кнут

Программирование как искусство[51]

Когда в 1959 году началось издание журнала Communications of the ACM, члены Редакционного совета сделали следующее замечание: «Для того чтобы программирование стало важной частью исследования и разработки вычислительных машин, в этой области должен совершиться переход от искусства к науке»[52]. К этому замечанию не раз возвращались в последующие годы; например, в 1970 году можно было прочитать «о первых шагах превращения искусства программирования в науку»[53]. Между тем мы действительно преуспевали в преобразовании нашей дисциплины в науку, к тому же необыкновенно простым способом. Мы просто решили называть её вычислительной наукой, «computer science». В этих рассуждениях неявно присутствует мысль, что в той области человеческой деятельности, которая классифицируется как «искусство», содержится что-то нежелательное. Она должна стать Наукой, прежде чем приобретет какое-либо реальное значение.

С другой стороны, я работаю более 12 лет над серией книг под названием «Искусство программирования» («The Art of Computer Programming»). Люди часто спрашивают меня, почему я выбрал такое название; некоторые, очевидно, даже не верят, что я действительно назвал их так. Я видел, по крайней мере, одну библиографическую ссылку на мои книги под названием «The Act of Computer Programming».

Сейчас я попытаюсь объяснить, почему я считаю «Art» («Искусство») подходящим словом. Я рассмотрю вопрос о том, что означает быть искусством, а не наукой. Я попытаюсь выяснить, являются ли искусства хорошим или плохим занятием, и я попытаюсь показать, что правильная точка зрения в этом вопросе поможет всем нам повысить качество того, чем мы сейчас занимаемся.

Один из первых случаев, когда меня спросили о заглавии моих книг, произошел в 1966 году во время национальной конференции ACM, состоявшейся в Южной Калифорнии. Это было ещё до того, как была опубликована первая из моих книг. Я вспоминаю ланч со своим другом в отеле. Он знал, как я был тщеславен уже в то время, и спросил, не собираюсь ли я назвать книгу «Введением в Дона Кнута». Я ответил, что, напротив, я назову свою книгу его именем. Его звали Art Evans.

Из этой истории мы можем сделать вывод, что слово «art» имеет несколько значений. Действительно, одним из самых приятных свойств этого слова является то, что его можно использовать в различных значениях, каждое из которых вполне подходит к машинному программированию. Готовясь к этой лекции, я отправился в библиотеку, чтобы посмотреть, что же вообще написали люди о слове «art»; и после нескольких очаровательных дней, проведенных в книгохранилищах, я пришел к выводу, что слово «art» является одним из интереснейших слов английского языка.

Старинные искусства

Обратившись к латыни, мы находим корни «ars», «artis», обозначающие «skill» (мастерство, умение, искусство, ловкость). Существенно также, что от соответствующего греческого τέχνη произошли наши «technology», «technique».

В наше время, когда говорят об «art», вы, вероятно, думаете прежде всего об «изящных искусствах», таких как живопись и ваяние, но до XX века это слово употреблялось главным образом совсем в другом смысле. Поскольку это более старое значение слова «art» встречается во многих идиомах, особенно когда мы противопоставляем искусство науке, мне бы хотелось поговорить немного об искусстве в его классическом значении.

В Средние века университеты были созданы для того, чтобы обучать семи так называемым «гуманитарным наукам», а именно: грамматике, риторике, логике, арифметике, геометрии, музыке и астрономии. Заметим, что это совершенно отличается от программ современных гуманитарных колледжей и что, по крайней мере, три из этих семи «гуманитарных наук» являются важными компонентами вычислительной науки. В то время «искусство» («art») имело смысл чего-то придуманного человеческим разумом в противоположность деятельности, являющейся продуктом природы или инстинкта; «гуманитарные» науки были освобожденными или свободными, в отличие от ручных ремёсел, как, например, пахота. В Средние века словом «art» называли логику[54], что обычно означало изучение силлогизмов.

Наука – искусство

В течение длительного времени слово «наука» употреблялось почти в том же смысле, что «искусство»; например, люди говорили о семи гуманитарных науках, которые совпадали с семью гуманитарными искусствами[55]. В XIII веке Данс Скотус (Duns Scotus) называл логику «Наукой из наук» и «Искусством из искусств». По мере развития цивилизации и образования эти слова все более приобретали независимые значения, причем слово «наука» относилось к знаниям, а «искусство» – к применению знаний. Так, наука астрономия была основой искусства навигации. Ситуация была почти в точности такой, как сейчас, когда мы различаем «науку» и «технику».

В XIX веке многие авторы писали о соотношении между искусством и наукой, и я считаю, что самое лучшее рассуждение принадлежит Джону Стьюарту Милю (John Stuart Mill). В 1843 году он писал[56]:

«Для того чтобы сформировать фундамент некоторого искусства, часто необходимо несколько наук. Такова сложность человеческих дел: для того чтобы сделать что-то одно, часто необходимо знать природу и свойства многих других вещей…

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

Когда я просматривал эти высказывания о значении слова «искусство», я обнаружил, что различные авторы на протяжении, по меньшей мере, двух веков пытались установить переход от искусства к науке. Например, в предисловии к учебнику по минералогии, написанному в 1784 году, говорится следующее[57]: «Минералогия, которую до 1780 многие понимали как искусство, могла бы, в сущности, быть отнесена к Науке».

В соответствии с большинством словарей «наука» означает знания, которые были логически упорядочены и систематизированы в виде общих «законов».

Преимущество науки заключается в том, что она избавляет нас от необходимости обдумывать вещи всесторонне в каждом конкретном случае; мы можем обратить наши мысли к понятиям более высокого уровня. Как писал в 1853 году Джон Раскин (John Ruskin)[58]: «Работа науки состоит в том, что она заменяет явления фактами, а впечатления – доказательствами».

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

Искусственный интеллект сделал значительные успехи, однако остается глубокая пропасть между тем, что компьютеры смогут делать в предвидимом будущем и что могут делать обычные люди. Таинственные «инсайты», которые используют люди, когда они говорят, слушают, пишут и даже когда они программируют, по-прежнему недостижимы для науки; почти всё, что мы делаем, – это пока искусство.

С этой точки зрения, конечно, желательно превратить компьютерное программирование в науку, и мы действительно прошли немалый путь за эти 15 лет, прошедших с момента публикации замечаний, которые я привел в начале данного доклада. Пятнадцать лет назад понимание программирования было настолько примитивным, что вряд ли кто-нибудь мог даже думать о доказательстве корректности программы; мы просто возились с программой до тех пор, пока, наконец, «знали», что она работает. В то время мы даже не умели сформулировать, каким-либо строгим путем, само понятие корректности программы.

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

Существование такого научного базиса позволяет составлять программы, которые значительно более надежны, чем те, которые мы писали в прежние дни, когда интуиция была единственной гарантией корректности.

Область «автоматического программирования» является сейчас одной из основных областей исследования проблем искусственного интеллекта. Её сторонники с удовольствием прочитали бы доклад под названием «Программирование как артефакт» (имея в виду, что программирование стало просто пережитком прошлого), так как их задача состоит в том, чтобы создать машины, способные составлять программы лучше, чем это делаем мы. Лично я не думаю, что такая цель будет когда-нибудь полностью достигнута, но я думаю, что их исследования чрезвычайно важны, так как всё, что мы узнаём о программировании, помогает нам повышать наше собственное мастерство. В этом смысле мы должны постоянно стремиться превращать каждое искусство в науку: таким образом мы совершенствуем искусство.

Наука и искусство

Наша дискуссия показывает, что программирование является сейчас и наукой, и искусством и что обе эти стороны прекрасно дополняют друг друга. По-видимому, большинство авторов, занимающихся исследованием таких вопросов, приходят к выводу, что их предмет является и наукой, и искусством, каким бы ни был сам предмет. Я отыскал книгу по элементарной фотографии, написанную в 1893 году, в которой утверждается, что «проявление фотографического изображения есть и искусство, и наука»[59]. Когда я впервые взял словарь, чтобы исследовать слова «art» и «science», я случайно бросил взгляд на предисловие редактора, которое начиналось словами «Составление словаря является и наукой, и искусством». Редактор словаря Funk & Wagnall[60]заметил, что тщательное накопление и классификация информации о словах имеет научный характер, в то время как хорошо подобранные изложения определений требуют умения писать экономно и аккуратно: «наука без искусства, вероятно, была бы неэффективной; искусство без науки определённо не точно».

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

Например, я нашел две книги, озаглавленные «Искусство игры на фортепьяно» и другие под названиями «Наука пиано-форте техники», «Наука игры пиано-форте». Была также книга «Искусство игры на фортепьяно: научный подход». Затем я нашел прелестную книжечку «Благородное искусство математики», которая заставила меня взгрустнуть о том, что я не могу честно изложить программирование как «благородное искусство».

Я знал ещё несколько лет назад о книге «Искусство вычислений», опубликованной в Сан-Франциско в 1879 году неким Ховардом (C. Frusher Howard)[61]. Это было практическое пособие по деловой арифметике, которое к 1890 году было распродано тиражом свыше 400 тысяч экземпляров в нескольких изданиях. Меня позабавило предисловие, которое указывало на то, что философия Ховарда и смысл его заглавия совершенно отличались от моих. Он писал: «Знание науки о числах не имеет большого значения; овладение же искусством счёта абсолютно необходимо».

Некоторые книги содержали оба слова – «наука» и «искусство» – в своих названиях, например: «Наука существовать и искусство жить» Mahesh Yogi. Есть также книга «Искусство научного открытия», в которой анализируется, каким образом были сделаны некоторые из великих открытий.

Как много информации в классическом значении слова «art»! На самом деле при выборе заглавия для своих книг я не думал об искусстве в этом смысле, а думал больше о его других сопутствующих значениях. Вероятно, самой интересной книгой, которую я нашел, была совсем недавняя работа Мюллера (Robert E. Mueller) под названием «Наука Искусства»[62]. Из всех книг, упомянутых мною, эта книга ближе всего выражает то, что я хочу сделать главной темой моей сегодняшней беседы. Мюллер замечает: «Когда-то думали, что поэтическая образная точка зрения художника является губительной для ученого. А логический научный подход означает смерть для всех возможных художественных взлётов фантазии». А затем он исследует достижения, которые поистине являются результатом синтеза науки и искусства.

Научный подход характеризуется главным образом такими словами, как логический, систематический, объективный, спокойный, рациональный, в то время как художественный – словами: эстетический, творческий, гуманитарный, беспокойный, иррациональный. Мне кажется, что оба этих явно противоречивых подхода имеют большое значение для программирования.

Эмма Лемер (Emma Lehmer) писала в 1956 году, что для неё программирование – «изнуряющая наука и в то же время увлекательное искусство»[63]. Коксетер (H.S.M. Coxeter) заметил в 1957 году, что он иногда чувствует себя больше художником, чем ученым[64]. Это было в то время, когда Сноу (C.P. Snow) начал выражать тревогу по поводу растущей поляризации между «двумя культурами» образованных людей[65]. Он указывал, что нам нужно объединить научные и художественные ценности, если мы хотим достигнуть настоящего прогресса.

Произведения искусства

Когда я сижу в аудитории и слушаю длинную лекцию, то моё внимание к рассматриваемому вопросу начинает ослабевать примерно через час. Я думаю, что вы тоже немного устали от моих разглагольствований о «науке» и «искусстве». Я, конечно, надеюсь, что вы сможете выслушать внимательно и остальную часть моей лекции, хотя бы потому, что сейчас речь пойдет о тех вещах, которые я чувствую наиболее глубоко.

Когда я говорю о программировании как об искусстве, я думаю в первую очередь о нём как о художественной форме в эстетическом смысле. Главная цель моей работы как педагога и автора состоит в том, чтобы научить людей составлять красивые программы. Вот почему я был особенно рад, узнав недавно, что мои книги имеются в Библиотеке изящных искусств при Корнельском университете. (Однако эти 3 тома, очевидно, спокойно лежат на полке без употребления, так что я боюсь, что библиотекари, может быть, совершили ошибку, поняв моё заглавие буквально.)

Я считаю, что составление программы похоже на сочинение стихов или музыки. Как сказал Андрей Ершов[66], программирование может давать нам и интеллектуальное, и эмоциональное удовлетворение, так как овладение сложным и установление системы согласованных правил является истинным достижением.

Далее, когда мы читаем программы, составленные другими, то мы можем расценивать некоторые из них как подлинные художественные произведения. Я всё ещё помню, с каким волнением я читал в 1958 году описание ассемблера Поли (Stan Poley) SOAP II. Вы, вероятно, подумаете, что я сумасшедший, и, кроме того, с тех пор очень сильно изменились стили, но в то время для меня было огромным счастьем видеть, какой элегантной может быть системная программа, особенно если сравнить её с другими тяжеловесными программами, которые я изучал в то же самое время. Возможность составления красивых программ, даже на языке ассемблера, – это то, что заставляет меня придавать программированию первостепенное значение.

Некоторые программы бывают элегантны, некоторые прелестны, а некоторые блестящи. Я утверждаю, что можно составлять великолепные программы, превосходные программы, поистине изумительные программы.

Вкус и стиль

Наконец-то, идея стиля в программировании выходит сейчас на первый план, и я надеюсь, что многие из вас видели замечательную маленькую книжку Кернигэна и Плоджер (Kernighan and Planger) «Элементы стиля в программировании»[67].

В этой связи самое важное для всех нас – помнить, что не существует какого-либо «наилучшего» стиля. Каждый имеет свои собственные предпочтения, и было бы ошибкой, если бы мы пытались заставить людей придерживаться неестественного для них шаблона. Мы часто слышим: «Я ничего не знаю об искусстве, но я знаю, что мне нравится». Здесь важно, что на самом деле вам нравится тот стиль, который вы используете. Должно быть, это наилучший способ, который вы выбираете, чтобы выразить себя.

Эджер Дейкстра подчеркнул это обстоятельство в предисловии к своей книге «Краткое введение в искусство программирования»[68]: «Моя цель – объяснить важность хорошего вкуса и стиля в программировании. Однако специфические элементы стиля, представленные здесь, служат только для иллюстрации в общем виде тех преимуществ, которые могут быть получены благодаря «стилю». В этом отношении я чувствую сходство с преподавателем композиции в консерватории. Он не должен обучать своих студентов, как сочинить конкретную симфонию. Он должен помочь им найти свой собственный стиль и объяснить, к каким результатам это приводит». (Именно эта аналогия навела меня на мысль говорить об «Искусстве программирования».)

Теперь мы должны спросить себя: «Что такое хороший стиль, и что такое плохой стиль?» Мы не должны быть слишком строгими в этом отношении, оценивая работу других людей. Джереми Бентам (Jeremy Bentham), философ начала XIX века, говорит об этом следующее:

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

Когда мы используем наши собственные предубеждения для того, чтобы «исправить» чей-либо вкус, мы, может быть, невольно лишаем его некоторого вполне законного удовольствия. Здесь важно то, что они создают нечто такое, что они сами находят красивым.

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

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

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

Другой важный способ создавать хорошие программы – дать им возможность элегантно взаимодействовать с пользователями, особенно при исправлении ошибок во входных данных. Это настоящее искусство – сочинять содержательные сообщения об ошибках или разрабатывать гибкие форматы ввода, не подверженные ошибкам.

Ещё один важный аспект качества программ – это эффективность использования ресурсов компьютера. К сожалению, я должен сказать, что в наши дни многие программисты отрицают эффективность программ, утверждая, что это признак плохого вкуса.

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

Настоящая проблема заключалась в том, что программисты тратили слишком много времени в заботах об эффективности в неподходящих местах и в неуместное время.

Преждевременная оптимизация – это корень всех ошибок в программировании (или, по крайней мере, большинства).

Мы не должны быть на пенни мудрыми и на фунт глупыми, мы не должны всегда думать об эффективности в том смысле, сколько процентов времени или пространства мы выиграли или потеряли. Когда мы покупаем автомобиль, то многие из нас не обращают внимания на разницу в 50 или 100 долларов в его цене. Но в то же время мы способны сделать специальный рейс к определенному магазину, чтобы купить какую-нибудь мелочь стоимостью 50 центов всего лишь за 25 центов.

Я считаю, что для эффективности есть время и место. Истинную роль эффективности я рассматриваю в своей статье о структурном программировании, которая выходит в текущем номере журнала «Computing Surveys».

Меньше возможностей – больше удовольствия

Одна довольно любопытная вещь, которую я заметил относительно эстетического удовлетворения, заключается в том, что наше удовольствие значительно увеличивается тогда, когда мы создаем что-либо при ограниченных средствах труда. Например, программа, которая мне лично доставила больше всего удовольствия и гордости, – это компилятор, который я когда-то написал для примитивной мини-машины, имевшей запоминающее устройство ёмкостью 4096 16-разрядных слов. Человек чувствует себя настоящим виртуозом, когда он достигает чего-то в условиях серьёзных ограничений.

Подобное явление имеет место во многих других сферах. Например, часто люди кажутся влюбленными в свои «Фольксвагены», но редко в свои Линкольны «Continental» (которые, по-видимому, гораздо лучше). Когда я изучал программирование, было популярным развлечением сделать с программой всё возможное, чтобы уместить её на одной перфокарте. Я полагаю, что это как раз то самое явление, которое заставляет энтузиастов APL наслаждаться своими «one-liners» («программа в одной строке»). Когда мы сегодня учим программированию, то наблюдаем любопытный факт: нам редко удается увлечь студента вычислительной наукой до тех пор, пока он не проходит курс, который позволяет поработать с мини-машиной. Использование наших больших вычислительных машин с их удивительными операционными системами и языками не вызывает особой любви к программированию, по крайней мере поначалу.

Не совсем понятно, каким образом применить этот принцип, чтобы программисты получали большее удовольствие от своей работы. Конечно, программисты застонали бы, если бы их менеджер объявил неожиданно, что у новой машины объём запоминающего устройства в два раза меньше, чем у старой. И я не думаю, что кто-нибудь, даже из самых преданных «программистов-художников», приветствовал бы такую новость, так как никому не хочется терять имеющиеся возможности. Другой пример может помочь прояснить ситуацию: кинорежиссёры очень сильно сопротивлялись введению звукового кино в 20-х годах, так как они гордились тем, что могли передавать содержание без звука. Точно так же истинный программист-художник мог бы негодовать по поводу введения более мощной техники. Так, современные запоминающие устройства имеют тенденцию разрушить красоту наших старых методов сортировки на магнитных лентах. Однако сегодняшние режиссеры не хотят возвращаться к немым фильмам. И не потому, что они ленивы, а потому, что они знают, что можно создать прекрасные фильмы, используя новую технологию. Форма искусства изменилась, но вместе с тем появилась масса новых художественных средств. Как же они развивали своё искусство?

Лучшие кинорежиссеры овладевали своим искусством в сравнительно примитивных условиях, часто в странах с отсталой кинопромышленностью.

И в последние годы кажется, что большинство важных вещей, которые мы узнаем о программировании, исходят от людей, которые не имели доступа к очень мощным машинам. Мораль, как мне кажется, заключается в том, что мы должны использовать идею ограниченных ресурсов для нашего собственного усовершенствования. Мы можем добиться больших успехов путём составления различных «игровых» программ при заданных искусственных ограничениях, так чтобы нужно было выжимать свои способности до предела. Мы не должны жить всё время в роскоши, так как это ведет к апатии. Искусство решать с максимальной энергией мини-проблемы разовьёт наши способности для решения настоящих больших задач, и опыт поможет нам получать больше удовольствия от работы при ограниченных возможностях. Точно так же мы не должны отказываться от «искусства ради искусства»; мы не должны стыдиться программ, которые служат только «для развлечения». Я однажды получил огромное удовольствие от составления АЛГОЛ-программы, которая реализовала процедуру скалярного произведения таким необычным способом, что вместо скалярного произведения она вычисляла m-е простое число. Несколько лет назад студенты Стэнфорда были взволнованы составлением самой короткой FORTRAN-программы, которая печатает сама себя в том смысле, что выходная информация идентична её собственному исходному тексту. Та же самая задача рассматривалась для многих других языков. Я не думаю, что работа над этим была пустой тратой времени. Бентам не отрицал бы «полезности» такого приятного времяпрепровождения. Он писал: «Напротив, нет ничего, полезность которого является более неоспоримой. Чему же приписать характер полезности, если не тому, что является источником удовольствия?»

Создание прекрасных инструментов

Другим свойством современного искусства является акцент на творческие способности. Мне кажется, что сейчас многие художники не заботятся о создании прекрасных произведений; только новизна идеи имеет значение. Я не рекомендую, чтобы программирование было подобно современному искусству в этом смысле, но это приводит меня к наблюдению, которое я считаю важным. Иногда мы должны программировать безнадежно скучную, бестолковую задачу, не дающую нам никакого выхода, не говоря о каком-то творчестве. И в таких случаях человек вполне может прийти ко мне и сказать: «Значит, программирование прекрасно? Вам, конечно, хорошо говорить, что я должен получать удовольствие, создавая элегантные, красивые программы, но почему Вы предполагаете, что я могу превратить этот мусор в произведение искусства?»

Да, это верно, не все задачи программирования кажутся приятными.

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

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

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

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

Что может сделать разработчик софтвера? Один из лучших способов поддержать бодрость духа пользователя – обеспечить его программами, с которыми он может взаимодействовать. Мы не должны делать системы слишком автоматизированными, когда действие всегда происходит за сценой. Мы должны пользователю-программисту дать шанс направить свои творческие способности в соответствующие каналы. Есть одна особенность, общая для всех программистов: им приятно работать с машинами; так давайте держать их в цикле. Некоторые задачи лучше выполняет машина, другие могут быть лучше решены с помощью человеческой интуиции; хорошо разработанная система должна найти разумный баланс. (Я в течение многих лет пытался устранить излишнюю автоматизацию.)

Хорошим примером являются средства оценки программ. В течение многих лет программисты не имели представления о том, как в действительности стоимость вычислений распределена в их программах. Опыт показывает, что почти все программисты имеют смутное представление об узких местах в их программах; неудивительно, что попытки оценить эффективность так часто терпят неудачу: программист никогда не знает распределения стоимости по строкам написанного им кода. Его работа в чем-то напоминает молодоженов, которые пытаются построить сбалансированный бюджет, не зная цен на продукты, одежду и жильё. Всё, что мы давали программистам, – это оптимизирующий компилятор, который таинственным образом что-то делает с программами, которые он транслирует, но никогда не объясняет, что он делает. К счастью, сейчас мы, наконец, наблюдаем появление систем, которые позволяют пользователю поверить в их разумность. Они автоматически анализируют программы и выдают информацию о реальной стоимости. Эти экспериментальные системы – большой успех, поскольку они позволяют оценить усовершенствование программы, и особенно потому, что с ними приятно работать. Таким образом, я уверен, что со временем использование таких систем станет стандартной процедурой. В моей статье в Computing Surveys[69]этот вопрос рассматривается подробнее. В этой статье высказываются также другие идеи, которые могут способствовать удовлетворению программистов.

Долг разработчиков языков – создавать такие языки, которые стимулируют хороший стиль, поскольку мы знаем, что стиль в значительной степени зависит от используемого языка.

Нынешний подъём интереса к структурному программированию показывает, что никакой из наших существующих языков не является идеальным для работы с программами и данными, и вообще не ясно, каким должен быть идеальный язык. Поэтому я надеюсь в ближайшие годы увидеть множество серьёзных экспериментов в области разработки языков.

Заключение

Мы видели, что программирование – это искусство, потому что в нем применяются накопленные в мире знания, потому что оно требует умения и изобретательности, и особенно потому, что оно создает прекрасное. Программист, который подсознательно чувствует себя художником, будет наслаждаться тем, что он делает, и будет делать это всё лучше. Поэтому мы можем радоваться, что люди, которые выступают на конференциях по вычислительным машинам, говорят о State of the Art.