Концепция фон Неймана об архитектуре компьютера отразилась в проекте EDVAC, над которым он работал совместно с Преспером Дж. Эккертом и Джоном Моучли. Компьютер EDVAC начал функционировать только в 1951 г., когда уже существовали другие компьютеры с хранимой программой, такие как Манчестерская малая экспериментальная машина, ENIAC, EDSAC и BINAC, причем все они были созданы под влиянием статьи фон Неймана и при участии Эккерта и Моучли. Фон Нейман также был причастен к появлению некоторых из этих машин, включая последнюю версию ENIAC, где использовался принцип хранимой программы.
У компьютера с архитектурой фон Неймана имелось несколько предшественников, но ни один из них — за одним неожиданным исключением — нельзя назвать истинной машиной фон Неймана. В 1944 г. Говард Эйкен выпустил Mark I, который можно было в какой-то степени перепрограммировать, но он не использовал хранимой программы. Машина считывала инструкции с перфокарты и немедленно их выполняла. В машине также не было предусмотрено условных переходов.
В 1941 г. немецкий ученый Конрад Цузе (1910–1995) создал компьютер Z-3. Он тоже считывал программу с ленты (в данном случае закодированную на пленке) и тоже не выполнял условных переходов. Интересно, что Цузе получил финансовую поддержку от Немецкого института самолетостроения, который использовал этот компьютер для изучения флаттера крыла самолета. Однако предложение Цузе о финансировании замены реле радиолампами не было поддержано нацистским правительством, которое считало развитие компьютерной технологии «не имеющим военного значения». Это, как мне кажется, в определенной степени повлияло на исход войны.
На самом деле у фон Неймана был один гениальный предшественник, причем жил он на сто лет раньше! Английский математик и изобретатель Чарльз Бэббидж (1791–1871) в 1837 г. описал свою аналитическую машину, основанную на тех же принципах[125], что и компьютер фон Неймана, и использовавшую хранимую программу, нанесенную на перфокарты жаккардовых ткацких машин. Память машины с произвольным доступом содержала 1000 слов по 50 десятичных знаков в каждом (что эквивалентно примерно 21 килобайту). Каждая инструкция содержала код операции и номер операнда — точно так же, как в современных компьютерных языках. Система не использовала условных переходов и циклов, так что это была настоящая машина фон Неймана. Полностью механическая, она, по-видимому, превзошла и дизайнерские, и организаторские возможности самого Бэббиджа. Он создал части машины, но так и не запустил ее.
Точно не известно, знали ли пионеры компьютеростроения XX в., включая фон Неймана, о работах Бэббиджа[126].
Однако создание машины Бэббиджа положило начало развитию программирования. Английская писательница Ада Байрон (1815–1852), графиня Лавлейс, единственный законный ребенок поэта лорда Байрона, стала первым в мире программистом. Она писала программы для аналитической машины Бэббиджа и отлаживала их в уме (поскольку компьютер так никогда и не заработал). Теперь программисты называют эту практику table checking. Она перевела статью итальянского математика Луиджи Менабреа об аналитической машине, добавив от себя существенные замечания и заметив, что «аналитическая машина плетет алгебраические рисунки, как ткацкий жаккардовый станок плетет цветы и листья». Возможно, она первой упомянула о возможности создания искусственного интеллекта, но сделала вывод, что аналитическая машина «сама не способна что-либо придумать».
Идеи Бэббиджа кажутся поразительными, если учесть, в какую эпоху он жил и работал. Однако к середине XX в. эти идеи были практически забыты (и вновь открыты лишь позднее). Именно фон Нейман придумал и сформулировал ключевые принципы действия компьютера в его современном виде, и недаром машину фон Неймана продолжают считать основной моделью вычислительной машины. Однако не будем забывать, что машина фон Неймана постоянно осуществляет обмен данными между отдельными модулями и внутри этих модулей, так что она не могла быть создана без теорем Шеннона и тех методов, которые он предложил для надежной передачи и хранения цифровой информации.
Все сказанное подводит нас к четвертой важной идее, которая преодолевает выводы Ады Байрон о неспособности компьютера к творческому мышлению и позволяет найти ключевые алгоритмы, используемые мозгом, чтобы потом применить их для превращения компьютера в мозг. Алан Тьюринг сформулировал эту задачу в статье «Вычислительные машины и разум», опубликованную в 1950 г., в которой содержится описание теперь широко известного теста Тьюринга, позволяющего определить близость ИИ к человеческому интеллекту.