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