Пара слов о формате “Код как борьба”. Здесь не будет подробных биографий - про каждого из героев этого цикла написаны отдельные толстые книги, и одна статья такую книгу не заменит. Не будет здесь и сухого технического разбора, кому это интересно. Вместо этого - попытка проследить, как одна идея вырастает из другой, как эстафета, которую передают друг другу через десятилетия и века люди, часто вообще не подозревающие, что работают над одним и тем же. Если какой-то сюжет или деталь захочется изучить подробнее - внизу статьи есть подборка книг, статей и первоисточников по теме.

Прошлые статьи цикла:

Точка входа

0. Лейбниц, Бэббидж и Лавлейс

1. Алан Тьюринг


Прошлый герой доказал, что универсальная вычислительная машина в принципе возможна. Сегодняшний - просто взял и начертил её, между делом, работая в это же время над атомной бомбой.

Это третья статья цикла “Код как борьба: Кратчайшая история IT”. И после довольно тяжёлого прошлого выпуска про Тьюринга тон сегодня будет совсем другим - не личная трагедия, а история человека, который, кажется, физически не мог заниматься одной вещью за раз.

Погнали.

Часть первая. Человек, который не помещается в одну профессию

Джон фон Нейман родился в 1903 году в Будапеште, в состоятельной еврейской семье. И тут сразу нужна ремарка: по легенде, в шесть лет он мог в уме делить восьмизначные числа и запоминал целые страницы телефонного справочника.

Приукрашено ли это задним числом я не знаю, но в случае с фон Нейманом даже без этих легенд достаточно фактов, чтобы понять масштаб личности. В 1921 году, ещё подростком, его признают лучшим математиком Венгрии.

Он получает образование в Будапеште, Берлине и Цюрихе. И вот деталь, которая сама по себе показательна: в 1925 году он получает диплом инженера-химика в Цюрихском политехникуме, а годом позже, в 1926-м, докторскую степень по математике в Будапештском университете. Уже здесь видно редкое сочетание чистой теории и прикладной инженерии, которое будет определять всю его дальнейшую карьеру.

В 1930-м он переезжает в США преподавать в Принстоне, а в 1933 году, когда только что основанный Институт перспективных исследований набирает свой первый постоянный факультет, фон Нейман - один из четырёх человек, приглашённых в тот самый первый набор, вместе с Альбертом Эйнштейном и Германом Вейлем (Освальд Веблен, инициатор всего проекта, был назначен годом раньше). Курт Гёдель придёт туда же чуть позже. То есть это буквально одно из самых концентрированных по интеллекту мест на планете в тот момент, и фон Нейман там свой человек.

И вот что важно понимать до того, как мы вообще заговорим про компьютеры - к этому моменту он уже успевает внести фундаментальный вклад в математическую формализацию квантовой механики, основать теорию игр вместе с Оскаром Моргенштерном и выпустить труд “Теория игр и экономического поведения”, заложивший основы математической теории игр как самостоятельной дисциплины, а также разработать математические модели в экономике.

Компьютерная архитектура для него далеко не первая и, забегая вперёд, далеко не последняя область, где он оставит след.

Часть вторая. ENIAC и проблема с проводами

Во время Второй мировой фон Нейман участвует в Манхэттенском проекте - занимается математическими расчётами имплозии для плутониевой бомбы. В частности, предлагает и обосновывает линзовую систему взрывчатых веществ, обеспечивающую симметричное сжатие плутониевого ядра. Это, кстати, взорвётся и в Тринити, и над Нагасаки.

И вот прямо в эти же годы, параллельно с работой над оружием абсолютного разрушения, он узнаёт о проекте ENIAC.

Давайте объясню, в чём там была проблема. ENIAC - это первый по-настоящему масштабный электронный вычислитель США, законченный в 1945 году. Машина невероятно мощная для своего времени. Но у неё был фундаментальный инженерный недостаток.

Программа, то есть последовательность операций, которые машина должна выполнить, задавалась не данными, хранящимися где-то в памяти. А физической конфигурацией. Переключателями. И, что особенно показательно, ручным соединением кабелей между разными блоками машины.

Представьте: чтобы перепрограммировать ENIAC для новой задачи, требовались дни ручной коммутации проводов. Машина была невероятно быстрой в самих вычислениях и при этом крайне медленной и трудоёмкой в переключении между разными задачами.

Это прямая противоположность универсальной машине Тьюринга из прошлого эпизода, где программа - это просто данные на той же ленте, что и всё остальное.

Фон Нейман узнаёт о проекте в августе 1944 года, по легенде, случайно, на вокзальной платформе в Абердине, штат Мэриленд, разговорившись с Германом Голдстайном, математиком, который курировал вычислительную часть проекта ENIAC для армии. Голдстайн потом вспоминал, что узнал фон Неймана по прошлым лекциям и решился подойти сам; когда разговор зашёл о работе Голдстайна над электронным вычислителем, делающим порядка 333 умножений в секунду, тон беседы, по его словам, сразу же изменился. Историческую точность отдельных деталей этой истории некоторые биографы оспаривают, но так или иначе, вскоре после этой встречи фон Нейман присоединяется как консультант к разработке следующей машины — EDVAC, призванной устранить главный недостаток ENIAC.

Часть третья. Документ, который определил, из чего состоит компьютер

В июне 1945 года фон Нейман составляет черновой отчёт под названием “First Draft of a Report on the EDVAC”. По легенде, он писал его от руки прямо в поезде по дороге в Лос-Аламос и пересылал рукописные страницы обратно в Филадельфию по почте; Голдстайн распечатал и растиражировал получившийся текст. Это незавершённый, толком не отредактированный рабочий документ на сто с небольшим страниц. И тем не менее он распространяется среди специалистов по всему миру и становится фактическим стандартом описания того, как вообще должен быть устроен цифровой компьютер. Говорят, именно знакомство с этим отчётом побудило британского учёного Мориса Уилкса приехать в США на знаменитые лекции Мур-Скул летом 1946-го.

Давайте разберём архитектуру по частям, максимально просто, потому что это тот случай, когда это действительно важно.

Есть арифметико-логическое устройство - блок, который непосредственно выполняет арифметические и логические операции.

Есть управляющее устройство - оно определяет, какая именно операция должна выполняться прямо сейчас, считывая инструкции по порядку.

Есть память - и вот тут ключевая инновация. Данные и сама программа хранятся в одной и той же памяти, в одном и том же виде - как числа. Это называется концепцией хранимой программы.

И есть устройства ввода-вывода - для взаимодействия с внешним миром.

Смотрите, в чём смысл. Идея хранимой программы означает, что программу теперь можно изменить так же легко, как любые другие данные. Не нужно физически перекоммутировать провода, достаточно загрузить в память другую последовательность чисел.

И вот тут прямая связь с прошлой статьёй. У Тьюринга программа и данные лежат на одной и той же бесконечной ленте. У фон Неймана - в одной и той же физической памяти. Это не совпадение. Это именно то практическое инженерное решение, которое реализует абстрактную универсальность машины Тьюринга.

Часть четвёртая. Про что обычно не рассказывают в учебниках

А теперь важная и, честно говоря, не самая приятная часть истории.

Идея хранимой программы разрабатывалась не фон Нейманом в одиночку. Она рождалась в тесном сотрудничестве с Дж. Преспером Эккертом и Джоном Мокли - главными инженерами исходного проекта ENIAC, а также с другими членами команды.

Но черновой отчёт вышел исключительно за подписью фон Неймана. Почему? По административной случайности он был единственным, кто физически напечатал документ.

И вот эта случайность определила историю на десятилетия вперёд. Архитектура закрепилась в учебниках как “архитектура фон Неймана”, хотя Эккерт и Мокли впоследствии публично и в судебных разбирательствах настаивали, что многие ключевые идеи в документе были выработаны коллективно ещё до присоединения фон Неймана к проекту или совместно с ним. Больше того, у Эккерта была отдельная, более практическая претензия: он утверждал, что широкое, никак не ограниченное распространение “First Draft” фактически выбило почву из-под последующих попыток него и Мокли запатентовать саму концепцию хранимой программы - идеи оказались обнародованы прежде, чем на них успели оформить права, и попали фактически в общественное достояние. Сам фон Нейман, по словам Эккерта, был не особенно заинтересован в патентовании подобных идей в принципе, что, конечно, можно расценивать и как научную открытость, и как удобную для одной стороны позицию в споре.

Это не единичный курьёз. Это показательный пример более широкой проблемы атрибуции в истории технологий - когда более известное или более авторитетное имя присваивает историческую славу коллективной работы команды.

Помните историю Ады Лавлейс? Там была недооценка вклада женщины. А здесь обратная ситуация - переоценка вклада знаменитости за счёт менее известных инженеров. Оба случая показывают одно и то же: атрибуция изобретений в истории технологий редко бывает такой чистой и однозначной, как в учебниках.

Часть пятая. И параллельно с этим атомная бомба и теория игр

Фон Нейман - редкий в истории науки пример человека, который умудрялся быть одновременно ключевой фигурой в физике ядерного оружия, экономической теории и архитектуре компьютеров. Три области, каждая из которых для большинства современных специалистов представляет отдельную, требующую целой карьеры дисциплину.

И тут стоит добавить менее приятную деталь. Фон Нейман придерживался крайне ястребиных взглядов на холодную войну и ядерное сдерживание, и его небезосновательно ассоциируют с ранними концепциями теории игр применительно к ядерной стратегии, в частности, с идеями, близкими к концепции взаимного гарантированного уничтожения. Это неоднозначная и по сей день спорная часть его наследия.

Часть шестая. Судьба архитектуры и её единственный крупный недостаток

Практически все последующие компьютеры от IBM System/360 до персональных компьютеров восьмидесятых, от смартфонов до современных серверов построены на той же базовой архитектуре хранимой программы, описанной в отчёте 1945 года. С бесчисленными усовершенствованиями, но с неизменным концептуальным ядром.

И вот интересная техническая деталь, которая до сих пор актуальна. Сам факт, что данные и инструкции передаются между процессором и памятью по одному и тому же каналу связи, создаёт фундаментальное ограничение пропускной способности. В современной информатике это называется “узкое место фон Неймана” - von Neumann bottleneck. Процессор часто вынужден простаивать в ожидании данных из памяти.

И значительная часть современных архитектурных инноваций - многоуровневый кэш, параллельные конвейеры, альтернативные подходы вроде Гарвардской архитектуры в некоторых встраиваемых системах - это, по сути, попытки смягчить именно эту исходную инженерную проблему, заложенную ещё в 1945 году.

Архитектура оказалась настолько успешной и универсальной концептуально, что даже её собственное фундаментальное ограничение не привело к отказу от неё. Оно лишь породило семь десятилетий инженерных попыток обойти это ограничение, не меняя базовую схему.

Итог

Если Тьюринг математически доказал, что универсальная вычислительная машина в принципе возможна, то фон Нейман вместе с недооценённой командой Эккерта и Мокли дал конкретный, воспроизводимый инженерный чертёж того, как построить такую машину из реальных электронных компонентов.

И этот чертёж оказался настолько удачным, что пережил без принципиальных изменений уже почти восемь десятилетий технологической эволюции.

Вопросы, чтобы обсудить в комментариях

Первое - про справедливость атрибуции. Насколько вообще правомерно называть архитектуру именем человека, который, по многим историческим свидетельствам, обобщил и записал коллективную работу команды, а не изобрёл концепцию единолично? И что это говорит о механизме формирования исторической памяти в науке в целом?

Второе - про универсальных гениев. Возможна ли сегодня, в эпоху колоссального объёма специализированного знания в каждой отдельной дисциплине, фигура уровня фон Неймана? Человек, одинаково глубоко компетентный в физике, экономике и компьютерной архитектуре одновременно? Или это специфический продукт именно той эпохи, когда объём накопленного знания в каждой области был ещё физически охватываем одним человеком?

И третье, более неудобное - как совмещать в одной оценке участие в разработке ядерного оружия, ястребиные взгляды на холодную войну и одновременно фундаментальный вклад в технологию, принёсшую человечеству огромную пользу? Насколько вообще уместно разделять технический и этический вклад одной и той же исторической фигуры?

В следующей статье мы закроем последний концептуальный зазор этого цикла. Почему обычная электрическая цепь вообще способна реализовывать логику, лежащую в основе архитектуры фон Неймана? Это будет история Клода Шеннона и, обещаю, тон будет значительно легче, там будет жонглирующий гений с механической мышью.

Источники и ссылки по фактам из статьи

Дополнительное чтение к данной статье

“First Draft of a Report on the EDVAC” (июнь 1945 года) Оригинальный документ. Плотный, местами незавершённый текст, но именно в нём источник всей современной компьютерной архитектуры. Доступен в оцифрованном виде в нескольких университетских архивах.

Норман Макрей - “John von Neumann: The Scientific Genius Who Pioneered the Modern Computer, Game Theory, Nuclear Deterrence, and Much More” (1992) Одна из наиболее полных биографий на английском, охватывающая буквально все стороны его деятельности - от математики до ядерной стратегии.

Ананьо Баттачарья - “The Man from the Future: The Visionary Life of John von Neumann” (2021) Более свежая и, по отзывам, более доступная по языку биография, хороший вариант, если предыдущая покажется слишком тяжеловесной.

Джордж Дайсон - “Turing’s Cathedral: The Origins of the Digital Universe” (2012) Эта книга особенно актуальна, потому что подробно разбирает именно период работы фон Неймана в Институте перспективных исследований и создание компьютера IAS, ближайшего практического наследника идей из «First Draft».

Материалы судебного дела Honeywell v. Sperry Rand (1973) Важная оговорка: строго говоря, это дело в первую очередь не про спор фон Неймана с Эккертом и Мокли, а про патентный приоритет между ENIAC и более ранней машиной Атанасова-Берри (ABC). Суд признал, что патент Эккерта и Мокли на ENIAC был неправомерен, поскольку ключевые идеи были заимствованы у Джона Атанасова. Тем не менее дело хорошо показывает, насколько мутной была вся история патентных прав вокруг первых компьютеров в принципе, включая роль отчёта фон Неймана. Для истории именно спора вокруг “архитектуры фон Неймана” лучше обратиться к устным интервью Эккерта и Голдстайна в архиве Charles Babbage Institute (conservancy.umn.edu).

Уильям Паундстоун - “Prisoner’s Dilemma” (1992) Не биография в чистом виде, а скорее история теории игр и её связи с ядерной стратегией холодной войны. Хороший источник для желающих глубже разобраться в неоднозначной части наследия фон Неймана.