Летом 1944 года эта проблема привела его в Bell Labs, и он стал изучать обновленную версию калькулятора комплексных чисел Джорджа Стибица. В последней версии имелось нововведение, которое произвело на него особенное впечатление его: на той же перфорированной ленте, где были набиты закодированные инструкции для каждой задачи, рядом с ними помещались и исходные данные. Фон Нейман провел какое-то время и в Гарварде, пытаясь выяснить, можно ли использовать компьютер Mark I Говарда Айкена для расчетов бомбы. Все лето и осень того года он перемещался на поезде между Гарвардом, Принстоном, Bell Labs и Абердином, исполняя роль пчелки, прямо и перекрестно опыляющей различные команды идеями, которые возникали в его голове. Так же как Джон Мокли ездил повсюду, подбирая идеи, которые в результате привели к созданию первого работающего электронного компьютера, фон Нейман курсировал между лабораториями, собирая воедино элементы и понятия, которые стали потом частью архитектуры компьютера с сохраняемыми программами.
В Гарварде, в конференц-зале, расположенном рядом с компьютером Mark I, Грейс Хоппер и ее партнер, программист Ричард Блох, обустроили рабочее место для фон Неймана. Он и Блох должны были писать уравнения на доске и вводить их в машину, а Хоппер должна была считывать готовые промежуточные результаты. Пока машина «переваривала числа», рассказывала Хоппер, фон Нейман часто выбегал из конференц-зала и подбегал к ней, чтобы предсказать, какими будут результаты. «Я просто никогда не забуду, как они прибегали из задней комнаты, а затем снова убегали обратно и исписывали этим [числами] всю доску, и фон Нейман предсказывал, какие результаты должны были получиться, и в девяносто девяти процентах случаев он угадывал результат с фантастической точностью, — восклицала Хоппер в восторге. — Казалось, он просто знал или чувствовал, как происходят вычисления» [196].
Для команды Гарварда стиль работы фон Неймана в коллективе был непривычным. Он впитывал их идеи, выдвижение некоторых из них считал своей заслугой, но в то же время ясно давал понять, что никто не должен считать какую-либо концепцию своей. Когда пришло время писать отчет о том, что они делают, фон Нейман настаивал, чтобы имя Блоха стояло первым. Блох рассказывал: «На самом деле я не считал, что заслуживал этого, но так вышло, и я дорожу этим»[197]. Айкен тоже считал, что нужно открыто обмениваться идеями. «Не бойтесь, что кто-то украдет у вас идею, — сказал он однажды студенту. — Если она оригинальная, им придется ее принять». Тем не менее даже он был поражен и немного смущен достаточно бесцеремонной позицией фон Неймана в отношении того, кому принадлежит заслуга выдвижения данной идеи. «Он говорил о концепциях, не ссылаясь на их авторов»[198].
Проблема, с которой фон Нейман столкнулся в Гарварде, состояла в том, что Mark I с его электромеханическими переключателями считал мучительно медленно. Расчеты атомной бомбы заняли бы несколько месяцев. Хотя ввод с помощью бумажной ленты делал процесс перепрограммирования компьютера более удобным, каждый раз, когда возникала команда перехода к подпрограмме, необходимо было вручную менять ленту. Фон Нейман пришел к убеждению, что единственное решение — создать компьютер, который работал бы на электронных скоростях и мог хранить и изменять программы с помощью внутренней памяти.
Таким образом, он созрел для того, чтобы стать участником следующего большого прорыва — разработки архитектуры компьютера с программами, сохраняемыми в памяти. Поэтому становится понятным, какой удачей было то, что в конце августа 1944 года он оказался на платформе железнодорожной станции полигона Абердин.
Фон Нейман в Пенне
Капитан Герман Голдстайн, военный связист, который работал с Мокли и Эккертом на ENIAC, в это же время случайно оказался в Абердине на той же платформе, что и фон Нейман, в ожидании поезда на север. Они никогда раньше не встречались, но Голдстайн узнал его мгновенно. Встретив фон Неймана — знаменитость в мире математики — он пришел в возбуждение, поскольку всегда преклонялся перед выдающимися личностями. «Было большим нахальством с моей стороны подойти к этому всемирно известному человеку, представиться и начать разговор, — вспоминал он. — К счастью для меня, фон Нейман оказался милым и дружелюбным, он всегда всячески старался сделать так, чтобы люди чувствовали себя спокойно». Беседа стала еще оживленней, когда фон Нейман узнал, чем занимается Голдстайн. «Когда фон Нейман понял, что я был связан с разработкой электронного компьютера, способного проделывать 333 умножения в секунду, тональность нашего разговора изменилась, из легкой и шутливой она превратилась в ту, что бывает на устном экзамене при соискании докторской степени по математике»[199].
По приглашению Голдстайна несколько дней спустя фон Нейман посетил Пенн, чтобы взглянуть на ENIAC в процессе его строительства. Пресперу Эккерту было любопытно познакомиться со знаменитым математиком, и он подумал, что если его первым вопросом будет вопрос о логической структуре машины, то он «действительно гений». Как раз таким на самом деле и оказался первый вопрос, заданный фон Нейманом, и он таким образом заработал уважение Эккерта[200].
ENIAC мог решить менее чем за час дифференциальное уравнение в частных производных, которое Mark I /Harvard решал бы около восьмидесяти часов. Это впечатлило фон Неймана. Тем не менее перепрограммирование ENIAC на другие задачи могло занять несколько часов, и фон Нейман понял, насколько это серьезный недостаток, поскольку в этот момент нужно было решать кучу разнородных проблем. Весь 1944 год Мокли и Эккерт пытались найти способ хранения программ внутри машины. Прибытие фон Неймана, набитого идеями Гарварда, Bell Labs и других мест, подняло на более высокий уровень обсуждение конструкции компьютера с сохраненными программами.
Фон Нейман, который стал консультантом команды ENIAC, выдвинул идею о том, что компьютерная программа должна быть сохранена в той же памяти, что и исходные данные, и тогда программу можно будет легко модифицировать во время работы. Его деятельность в команде Пенна началась с первой недели сентября 1944 года, когда Мокли и Эккерт в деталях объяснили ему устройство машины и поделились своими мыслями о конструкции следующей версии, в которой будет «одно устройство хранения с адресуемыми ячейками», которое будет служить в качестве устройства для хранения и исходных данных, и команд программы. На той же неделе Голдстайн изложил эту идею в письме к своему армейскому командиру: «Мы предлагаем централизованное программируемое устройство, в котором стандартные программы хранятся в закодированном виде в тех же типах устройств хранения информации, которые были предложены ранее»[201].
(adsbygoogle = window.adsbygoogle || []).push({});