Фон Нейман, который стал консультантом команды
Серия встреч фон Неймана с командой
Фон Нейман был открытым человеком, но его интеллектуальное превосходство подавляло людей. Когда он утверждал что-то, редко кто отваживался возразить. Но Дженнингс иногда решалась. Однажды она поспорила с одним из его утверждений, и все в зале посмотрели на нее с удивлением. Но фон Нейман сделал паузу, склонил голову, а затем согласился с ее точкой зрения. Он умел хорошо слушать и к тому же мастерски умел притворяться застенчивым, что располагало к нему людей[203]. «В нем было удивительное сочетание черт характера блестящего человека, который осознает, что он выдающийся, и удивительной скромности и застенчивости, проявлявшихся при изложении им своих идей другим людям, — вспоминала Дженнингс. — Он был очень беспокойным, все время расхаживал по комнате, но когда он рассказывал о своих идеях, казалось, будто он извиняется за несогласие с вами или будто обдумывает лучшую идею».
Фон Нейман был особенно силен в разработке фундаментальных основ программирования, которое было все еще плохо определенным ремеслом, не очень изменившимся за век — с тех пор, как Ада Лавлейс описала последовательность операций для генерации чисел Бернулли на аналитической машине. Он понял, что создание элегантного набора инструкций — алгоритма — требовало как строгой логики, так и точности выражения. «Он очень тщательно разъяснял, почему нужно написать данную конкретную команду или почему мы могли бы обойтись без команд, — рассказывала Дженнингс. — Тогда я впервые осознала важность командных кодов, логики, на основании которой они строятся, и элементов, которые должны входить в полный набор команд. Я заметила, что фон Нейман, как и другие гении, обладал способностью выбрать в каждой конкретной проблеме нечто определяющее, то, что действительно было самым важным»[204]. В этом проявлялся его мощный талант, побуждавший его докапываться до сути каждой новой идеи.
Фон Нейман понимал, что они не просто усовершенствуют
Кроме того, фон Нейман быстрее, чем его коллеги, понял важность объединения данных и программных команд в одном и том же устройстве памяти. Память может быть стираемой — той, что мы сейчас называем памятью с оперативной записью и считыванием. Это означает, что сохраненные команды могут быть изменены не только в конце цикла, но в любой момент работы программы. Компьютер сам может изменить свою программу, основываясь на полученных результатах. Для облегчения этой процедуры Фон Нейман придумал язык программирования с переменным адресом ячейки памяти, который позволял легко менять команды во время выполнения программы[206].