Шрифт:
Интервал:
Закладка:
Новую машину проектировали инженеры-электронщики Джон Преспер Екерт и Джон Уильям Мокли, хотя фон Нейман впервые узнал о ней — по-видимому случайно — из разговора на железнодорожной станции с Г. Гольдстайном, математиком, связанным с проектом. Фон Нейман ухватился за возможности, сулимые машиной, которая после создания могла бы производить арифметические операции в тысячу раз быстрее, чем машина Эйкена. С августа 1944 г. он регулярно посещал встречи коллектива ЭНИАК, и 1 ноября 1944 г. написал Уиверу:
Есть еще ряд вопросов, связанных преимущественно с автоматизированными вычислениями, о которых мне бы хотелось переговорить с вами при случае. Я чрезвычайно признателен вам за то, что вы познакомили меня с некоторыми специалистами в этой области, и, в частности, с Эйкеном и Стибицем. Все это время мы активно обменивались мнениями с Эйкеном и членами коллектива школы Мура… которые сейчас проектируют вторую электронную машину. Мне предложили быть их консультантом, главным образом — по вопросам, связанным с логическим управлением, памятью и т. п.
Проект ЭНИАК был чрезвычайно впечатляющим — достаточным для того, чтобы дать людям ощущение видения будущего и сопричастности к нему. В нем было задействовано не менее 19 000 электронных ламп. В этом плане ЭНИАК превосходил «Колосса», с которым во многих отношениях он был сопоставим, хотя одно различие состояло в том, что летом 1945 г. ЭНИАК все еще не был готов: этой машине суждено было появиться на свет слишком поздно, чтобы найти себе какое-то применение в войне.
ЭНИАК требовал большего количества ламп, чем «Колосс», потому что хранил в своей памяти длинные десятичные числа — во многом из-за примитивной системы, задействованной проектировщиками, в силу чего на каждый требуемый десятичный разряд отводилось по десять ламп, «9» представляла девятая из этих ламп в режиме «включено». В отличие от него «Колосс» оперировал одиночными импульсами, отображавшими логическое «да» или «нет» отверстий в телеграфной ленте.
Но это было довольно поверхностное различие. Обе машины равно демонстрировали, что тысячи электронных ламп, прежде считавшихся слишком ненадежными для работы en masse, вполне годились для совместного использования. И проект ЭНИАК воплощал собой идею, которую Цузе, Эйкен и Стибиц упустили. Как и «Колосс Марк 2», с его способностью автоматизировать процессы решения, когда результаты одной вычислительной операции автоматически определяли, каким будет следующий шаг, в ЭНИАКе был реализован условный переход управления. Этот вычислитель проектировался так, чтобы он мог переходить взад-вперед по всему набору команд, повторяя разделы столько раз, сколько было необходимо по ходу вычисления, без вмешательства в управление со стороны человека. В общем-то, ничего, что бы вышло за пределы формы, предугаданной Бэббиджем — кроме разве того, что электронные компоненты были намного быстрее, и что ЭНИАК являлся (или почти являлся) реальностью.
Как и «Колосс», ЭНИАК проектировался с определенной целью — а именно для расчета таблиц стрельбы (дальностей и прицелов). В сущности, он был призван симулировать траектории снарядов в различных условиях аэродинамического сопротивления и скорости ветра, что предполагало суммирование тысяч мельчайших отрезков траектории. Он имел внешние переключатели, настройка которых обеспечивала бы запоминание постоянных параметров для расчета траектории, и дополнительные внешние устройства для установки набора инструкций (команд) о том, как рассчитывать сегменты движения. Также там должны были быть электронные лампы для сохранения промежуточных рабочих показателей. В такой архитектуре ЭНИАКа напоминал «Колосса». Но в обоих случаях люди быстро раскрыли возможность использования машин для более широкого спектра задач, чем те, для выполнения которых они проектировались. Роль изначального «Колосса» была существенно расширена Дональдом Мичи и Джеком Гудом, а затем «Марк 2» был настроен для вывода данных дешифрованного сообщения, хотя это было сделано из чистого интереса, а не ради эффективности. Хотя и «паразит» на немецких шифровальных машинах, приспособляемость, обеспечиваемая его набором команд (инструкций), была такова, что его можно было «практически» настроить на совершение численного умножения. ЭНИАК был еще более приспособляем, и фон Нейман уже осознал, что, когда эта машина будет готова, ее можно будет использовать для решения вопросов Лос-Аламоса.
Однако ЭНИАК не задумывался, как универсальная машина, и в одном немаловажном аспекте проектировщики отошли от направления разработки, заданного Бэббиджа. Бэббидж гордился тем фактом, что спроектированная им Аналитическая машина могла усвоить бесконечное число операционных (программных) карт, содержащих команды. И релейная машина Эйкена обладала таким же свойством, хотя карты в ней были заменены «валиком» по типу пианолы. В случае с ЭНИАК все обстояло совсем иначе. Операции, будучи электронными, выполнялись бы на ней так быстро, что обеспечить такую же быструю подачу карт или ленты, представлялось невозможным. Конструкторы должны были найти способ ввода инструкций (команд) за миллионные доли секунды.
В ЭНИАК они добились этого с помощью системы внешних устройств. которые должны были устанавливать команды для каждой операции. Эти устройства соединялись с разъемами, как на ручной телефонной станции. (Нечто очень похожее было у «Колосса».) Преимущество такого решения заключалось в том, что команды оказывались на деле доступны мгновенно, как только обеспечивалось подключение к разъемам. А недостаток состоял в том, что последовательность команд была ограничена по длине, и мог потребоваться день или около того, чтобы выполнить подключение. Это было сродни конструированию новой машины для выполнения каждой отдельной задачи. И ЭНИАК, и «Колосс» являлись своего рода комплектами, наборами, из которых можно было сделать много машин, слегка отличавшихся друг от друга, а вовсе не воплощением концепции истинной универсальности Бэббиджа, согласно которой машина должна была оставаться в неизменном виде; переписывались бы только операционные карты, содержащие команды.
Но даже когда фон Нейман присоединился в качестве «консультанта» к команде ЭНИАК в конце 1944 г., Эккерт и Мокли видели совершенно иное решение своей проблемы. Оно сводилось к тому, чтобы оставить в покое аппаратное обеспечение («железо») машины и делать команды доступными на электронных скоростях путем хранения их внутри, в памяти, в электронной форме. ЭНИАК был призван хранить в своей памяти арифметические действия, а первый «Колосс» — образцы ключей «Рыбы». Это было совершенно новый принцип хранения команд внутри машины. Команды обычно воспринимались, как поступающие извне для того, чтобы воздействовать на «внутреннюю начинку». Однако «вторая электронная машина», упомянутая в письме фон Неймана Уиверу, была призвана отразить эту новую идею.
Каждая традиция здравого смысла и абстрактного мышления склонна допускать, что «числа» совершенно отличны по форме от «команд». И очевидным решением представлялось хранить их раздельно: данные в одном месте, а набор команд для оперирования, управления этими данными — в другом месте. Это представлялось очевидным — но было неверным. В марте и апреле 1945 г. коллектив ЭНИАК подготовил предложение — Предварительный доклада о машине ЭДВАК. ЭДВАК — Электронный дискретный переменный компьютер — был проектируемой «второй электронной машиной».