Игра в имитацию
Шрифт:
Чтобы начать выполнение второстепенной операции (подпрограммы), нам необходимо отметить только место, где мы покинули главную программу. Когда второстепенная операция завершена, мы находим это место и продолжаем выполнять основную операцию. Каждая из этих второстепенных операций (подпрограмм) должна оканчиваться командой, определяющей упомянутое место. Вопрос — как скрывать и отыскивать это место? Есть несколько способов. Одни из них — сохранить список таких мест на одной или нескольких линий задержки стандартной длины… самое свежее место сокрытия должно быть в нем последним. Указание на нахождение этого последнего места будет храниться на короткой линии задержки, и эта отсылка будет меняться каждый раз, когда будет начинаться или завершаться второстепенная операция. Процессы сокрытия и отыскания довольно замысловаты, зато, к счастью, отпадает необходимость повторять каждый раз команды; сокрытие производится посредством стандартной таблицы команд BURY [скрыть], а отыскание — с помощью таблицы UNBURY [раскрыть].
Возможно, свое представление о сокрытии и отыскании (раскрытии) Алан почерпнул из истории о серебряном слитке. Это была совершенно новая идея. Фон Нейман рассуждал только в ракурсе проработки последовательности команд.
Концепция иерархии таблиц расширяла возможности модификации программы. Так, например, Алан предлагал «держать таблицы команд в сокращенной форме и развертывать их каждый раз, когда мы захотим» — эту работу выполняла бы сама машина, используя таблицу под названием EXPAND [развернуть, расширить]. Чем дальше он развивал идею иерархии таблиц, тем отчетливей он сознавал, что АВМ можно было бы использовать для подготовки, сопоставления, упорядочения и структурирования своих собственных программ. Тьюринг писал:
Таблицы команд должны создаваться математиками с опытом вычислительной работы и, пожалуй, определенной способностью решать головоломки. Придется проделать большой объем работы подобного типа, поскольку каждое известное действие должно быть на каком-то этапе преобразовано в форму таблицы команд. Эта работа будет вестись, пока создается сама машина, чтобы можно было сразу запустить машину и получить результаты. Отставание в работе по созданию таблиц команд в силу всяких неизбежных загвоздок и затруднений допускается до того момента, когда лучше оставить эти затруднения, как есть, чем тратить время на их устранение (сколько десятков лет на это уйдет?). Этот процесс создания таблиц команд должен быть очень увлекательным. Страшиться его не следует, как, впрочем, и не следует превращать его в рабский труд, так как все процессы, которые по сути своей являются механическими, могут быть возложены на саму машину.
Не удивительно, что Алан расценивал процесс написания программ (таблиц команд), как «очень увлекательный». Ведь он создал нечто очень оригинальное и при том именно свое. Он изобрел искусство компьютерного программирования. Это был полный разрыв со старомодными арифмометрами — о которых он, в любом случае, знал немногое. Они объединяли суммирующие и умножающие механизмы, да еще они заправлялись бумажной лентой, без которых они не работали исправно. Они были машинами для совершения арифметических действий, для которых логическая структура была лишь обременением. АВМ была принципиальной иной машиной. Она задумывалась, как машина, выполняющая программы «каждого известного действия». Акцент делался на логическое структурирование и управление процессом работы, а арифметические устройства добавлялась только ради быстрого доступа к наиболее часто использующимся операциям.
На настольных счетных машинах цифры от 0 до 9 становились видны на регистрах и клавиатуре, и у оператора могло возникать ощущение, будто каким-то образом цифры хранятся в самой машине. В действительности, в них не было ничего, кроме колес и рычагов управления, однако иллюзия присутствия цифр в машине была сильна. Эта иллюзия отличала и большие релейные счетные машины, и машины Эйкена и Стибица, и ЭНИАК. Даже в докладе о машине ЭДВАК сохранялось ощущение, будто импульсы в линиях задержки будут на самом деле числами. Однако концепция Тьюринга несколько отличалась и имела более абстрактный вид. В АВМ импульсы могли восприниматься, как представляющие числа, либо команды. Хотя это все было, конечно, только в уме наблюдателя. Машина работала, как указывал Алан, «не думая», и на самом деле оперировала не числами и не командами, а электронными импульсами. Человек мог «делать вид, будто команда была числом», поскольку сама машина ничего не знала ни об одном, ни о другом. Соответственно, он мог свободно допускать в мыслях соединение данных и команд, управление командами, вводе таблиц команд посредством других команд «высшего порядка».
Причина готовности Алана к применению столь вольного подхода была. С того самого момента, когда Тьюринг впервые задумался о математической логике, он воспринимал математику как игру, в которую играют знаками на бумаге, не считаясь с их «значением» и по правилам, напоминающим шахматные. Такой взгляд Алана на математику подпитывал подход Гильберта. Теорема Геделя бодро смешала «числа» и «теоремы». И в статье «О вычислимых числах» таблицы команд представлялись, как «описательные числа». Его доказательство существования нерешаемых задач опиралось на это смешение чисел и команд на трактовке и тех, и других, как абстрактных символов. Посему это был маленький шаг считать команды (инструкции) и таблицы команд «зерном для помола» на собственной мельнице Алана.
Действительно, коль скоро столь многое в его военной работе зависело от систем индикации, в которых команды умышленно маскировались под данные, пойти на такой шаг ему было вовсе не сложно. Он воспринимал, как очевидное то, что других повергало в конфуз и непонимание.
Такое видение функций АВМ подкреплял также довод об имитации. АВМ не должна была «решать арифметические задачи» так, как их решал бы человек. Она должна была лишь имитировать арифметические действия в том смысле, что при вводе команды, представляющей «67 + 45», можно было гарантированно получить на выходе «112». Но внутри машины не было «чисел», только импульсы. И когда дело дошло до чисел с плавающей запятой, способность Алана проникать в самую суть обрела практическую значимость. Вся суть его разработки заключалась в том, что оператор АВМ получал возможность использовать «вспомогательную таблицу», типа MULTIP, как если бы одна команда «множилась». То есть фактически результатом этого стала бы большее шунтирование и ассемблирование импульсов внутри машины. Но это не играло бы значения для пользователя, который мог работать так, как если бы машина оперировала непосредственно «числами с плавающей запятой». Как писал Алан, «нам надо только однажды придумать, как это сделать, а потом забыть о то, как это сделано». Тот же принцип был применим и к машине, запрограммированной на игру в шахматы: ей следовало бы пользоваться, как если бы она играла в шахматы. На любом этапе «игры» она бы только внешне имитировала действие мозга. Но тогда, кто бы знал, как мозг делал это? Единственно допустимым использованием языка, по мнению Алана, было применение тех же норм, стандартов внешнего проявления к машине, что и к мозгу. На практике люди ведь говорили совершенно некорректно, что машина «решала арифметические задачи»; точно так же они бы говорили, что машина играет в шахматы, обучается или думает, если бы она могла имитировать функцию мозга, совершенно не считаясь с тем, что «в реальности» происходило внутри машины. Так что даже в его технических предложениях скрывалось философское видение, далеко превосходящее амбициозное желание создать машину для решения больших и сложных (арифметических) задач. Но это не помогало ему в общении с другими людьми.
Хотя Алан перенес акцент с конструирования машины на разработку программ, ничего неясного в его инженерных планах по АВМ не было. Линии задержки, писал Алан, были разработаны для целей радиопеленгации до уровня, значительно превосходящего наши требования во многих отношениях. Проекты нам доступны, и один из них замечательно подходит для промышленного производства. Но 20 фунтов стерлингов за одну линию задержки — это довольно дорого.
На самом деле, Алан наведался с визитом в НИИ связи британских ВМС ради встречи с Т. Голдом, занимавшимся там разработкой линий задержки. Алан рассчитывал приобрести две сотни ртутных линий задержки, емкостью 1024 цифры каждая. Однако цифры, размеры, стоимость и выбор ртутной линии задержки для хранения информации не были сняты с полки инженеров-конструкторов радиолокационной техники. Он сам освоил физику. На основании его расчетов ртуть была лишь чуть предпочтительней смеси воды и спирта, по силе действия равноценной, по его представлению, джину. Алан очень хотел использовать джин; это было дешевле, чем использовать ртуть. Однако, он отказался от того, чтобы самому производить опытно-конструкторскую работу. Он хотел, что ее сделали инженеры «Колосса», на экспериментально-исследовательской станции Министерства почт. Флауэрс был уже знаком с линиями задержки (в октябре 1945 г. ему показали модель Эккерта).
А о проектировании логических и арифметических схем («LC and CA») Алан писал:
Работа над электронно-ламповым элементом может занять четыре месяца и больше. С учетом того факта, что придется еще выполнить кое-какую работу по конфигурации принципиальных схем, такая задержка может быть оправдана, но приступить к работе следует, как можно скорее….
Ввиду сравнительного малого числа используемых электронных ламп фактическое производство LC и CA не потребует много времени; от силы шесть месяцев.
В докладе уже были представлены проекты множества «принципиальных схем». Алан сделал детальную разработку арифметических схем, воспользовавшись (и расширив) системой обозначения фон Неймана. Наверное, ему было приятно, что его довоенный опыт по проектированию двоичного множительного устройства пригодился. С обращением к опыту из прошлого была связана и другая деталь проекта. Он предусматривал возможность подсоединения, при необходимости, специальных контуров для операций с арифметическими функциями и нулевыми функциями. Эта идея несколько расходилась с принципом максимально активного задействования команд, но он представлялся вполне уместным в случае, если под рукой имелась какая-либо крайне эффективная схема специального назначения. Как, например, в случае с «Бомбами». Там шаги, зависевшие от срабатывания реле, были медленны по электронным стандартам. Тогда как шаги, которые зависели от электрического тока, пропускаемого по внутренней проводке «Энигмы», выполнялись моментально. На выполнение их с помощью таблицы команд на электронной вычислительной машине требовалось бы больше времени. Проект Алана позволял, при желании, идти более коротким, рациональным путем. Но мало кто мог догадаться, что в основе этого лежал его опыт с механическими методами.
Алан также оценивал практические требования проекта в целом:
Трудно строить предположения о зданиях, опираясь на вероятность расширения всего плана в масштабе. Есть множество возможностей, которые было бы целесообразно включить, но которые отвергнуты в силу одной лишь необходимости провести где-то черту. Однако, через несколько лет, когда машина докажет свою полезность, мы наверняка захотим расширить ее возможности, включив новые функции или реализовав лучшие идеи, которые выдвигались при работе над первой моделью. Какой бы величины не решено было строить здание, всегда следует оставлять место для его достройки.