Современная жизнь столь прочно переплетена с компьютерами, что вряд ли у непосвященного может возникнуть сомнение в прочности «компьютерного здания», выстроенного за 60 лет. Между тем, нынешнее состояние компьютерной науки и компьютерных технологий можно сравнить с пирамидой, стоящей основанием вверх; небольшую опорную площадку образуют несколько базисных положений, возраст которых превышает пенсионный порог. Согласно законам механики, такая конструкция чрезвычайно неустойчива.

Одной из опор гигантского здания компьютерных технологий являются построения, связанные с именем Джона фон Неймана. Случилось так, что в середине 40-х годов он высказал несколько теоретических положений, не самых существенных в его научной биографии, но именно они обеспечили его имени широкую известность. Но не стоит забывать, что высказаны они были одним человеком, пусть и гениальным, и приняты были в условиях колоссальной неопределенности. В середине 40-х годов не было никакого предшествующего опыта, и, как следствие, в идеях фон Неймана присутствовал заметный элемент случайности и субъективности, что, однако, не помешало последователям со временем канонизировать его теоретические взгляды, придать им статус непогрешимых догм.

«Случайная» архитектура

Элемент случайности в любом историческом процессе неизбежен (только классики марксизма-ленинизма могли позволить себе утверждать обратное; мы знаем, к чему это привело). В реальной жизни случается, что однажды кто-то в силу каких-то обстоятельств оказался в нужном месте в нужное время, имел возможность или вынужден был сделать определенный выбор, а потомкам-исследователям не остается ничего другого, как анализировать его решения. Компьютерная история не исключение, она чрезвычайно субъективна. Как бы заинтересованные лица ни старались придать ей вид объективности, в какие бы научные одежды они ее ни обряжали, рано или поздно наступает момент истины, расставляя все по своим местам. Достаточно вспомнить историю искусственного интеллекта; кто в 60-е — 70-е годы мог противопоставить свое мнение тому, что говорили именитые ученые, какой ворох теорий они наворотили, и как же бесславно все это завершилось...

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

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

У этих положений есть чрезвычайно важное следствие: аппаратура является неизменной частью вычислительной машины, а программы — переменной.

Современное и программное, и аппаратное обеспечение за самым малым исключением являются производными от этого выбора. Но фон-неймановская архитектура, как и все в этом мире, не вечна; незаметно для большинства происходит ее моральное старение. Критику этой архитектуры и неизбежный со временем отказ от нее не следует рассматривать как критику в адрес самого фон Неймана — скорее, справедливая критика может быть направлена в адрес тех, кто десятилетиями догматизировал его взгляды. Нет такого учебника, где бы безоглядно не объявляли архитектуру фон Неймана классической, вечной и неизменной, а потому у студентов может сложиться впечатление, что она столь же объективна, как и природные законы. Между тем, к ее появлению привела причудливая цепочка, казалось бы, никак не связанных между собой событий. Попробуем проследить их.

От машины Тьюринга к артиллерийским таблицам

Основной вклад фон Неймана состоит в переводе абстрактной схемы Тьюринга в конкретное железоНачнем со странного имени автора, состоящего из трех плохо сочетаемых частей. Как могло случиться, что он, обладатель обычной для определенной части выходцев из Восточной Европы фамилии Нейман, стал не только немецким «фоном», но и американским Джоном? Урожденный Янош Лайош Нейман происходил из состоятельной еврейско-венгерской семьи. В кругу, к которому она принадлежала, было престижно покупать дворянские звания и обзаводиться приставкой «фон». В этом отношении фон Нейман не одинок. Одновременно с ним в Америке работал физик Теодор фон Карман, можно привести еще несколько схожих примеров. Родители обеспечили Джонни, как его звали дома, возможность получить образование в лучших университетах Швейцарии и Германии; там он стал Йоханом и к тому же католиком. Старт научной карьеры был блестящим, к 23 годам фон Нейман — самый молодой в истории Берлинского университета приват-доцент, а к 25 — автор десятка научных работ. В 1930-м его пригласили в Принстонский университет, а потом неизбежная для многих его соотечественников эмиграция объединила его судьбу с такими выдающимися учеными-выходцами из Венгрии, как Лео Сцилард и Эдвард Теллер, с Энрико Ферми и другими. Впоследствии все они так или иначе оказались связанными с Манхэттенским проектом. Но деятельность фон Неймана, ставшего в Америке Джоном, не ограничивалась участием в работе над бомбой. Его интересы поистине необъятны, кроме квантовой физики его увлекает и теория автоматов, и теория игр, и алгебра. Впрочем, не стоит строить образ академического ученого, «не от мира сего». Несмотря на генеалогические корни, уходящие на территорию России, он был, как тогда говорили, «ярым антисоветчиком», призывавшим к атомной бомбардировке СССР. Сегодня это вызывает улыбку, а в начале 50-х подобные заявления были более чем опасными.

Несмотря на приглашение, карьера за океаном начиналась непросто. Америка тех лет сохраняла давние пережитки, этническое происхождение фон Неймана заметно мешало его работе в Принстоне. Поэтому вскоре после приезда, как только появилась такая возможность, в том же 1930 году он перешел в ставший знаменитым Институт перспективных исследований (Institute for Advanced Study, IAS), созданный в основном как прибежище для ученых-переселенцев. Позже он работал там вместе с Альбертом Эйнштейном, Куртом Геделем, Робертом Оппенгеймером и другими беженцами из Европы. Работа над бомбой потребовала произвести огромное количество расчетов, поэтому в поле внимания фон Неймана попали все существовавшие на тот момент счетные машины, он был знаком с работами и лично с Ванневаром Бушем, Джорджем Стиблицем и Говардом Айкеном. Однако возможности созданных ими механических устройств, являвших собой в конечном счете развитие машины Бэббиджа, его не удовлетворяли, но самое главное заключалось в том, что он имел основания предполагать существование иных, более производительных машин. Информацию о теоретической возможности альтернативного подхода к автоматизации расчетов он получил благодаря еще одной случайности. Фон Нейману сказочно повезло, без всяких на то усилий он получил шанс познакомиться и подружиться с самим Аланом Тьюрингом и его гипотетической машиной.

В 1937-38 годах Тьюринг жил в Америке и готовил под руководством Алонсо Черча, одного из самых видных американских математиков того времени, диссертацию в том же самом Принстоне, где начинал фон Нейман. Формальные отношения между двумя научными центрами были непростыми (с одной стороны — колыбель американского консерватизма, а с другой — прибежище для всякого рода космополитов), но это обстоятельство не мешало личному общению ученых. Фон Нейман ознакомился с идеями Тьюринга и, когда представилась возможность, смог перенести «в железо» основные элементы его машины, а именно последовательное выполнение команд и программирование в терминах команд. Если быть точным, то надо сказать, что архитектурой фон Неймана называют машину Тьюринга, адаптированную к реальным условиям*. Итак, основной вклад фон Неймана состоит в переводе абстрактной схемы Тьюринга в конкретное железо; если предельно упростить то, что сделал фон Нейман, можно сказать, что он перенес бесконечную ленту машины Тьюринга в память.

Странно, что при всей своей гениальной прозорливости фон Нейман остановился на сделанном. В области вычислительных машин он — автор одной работы. Выполнив ее, он не стремился к чему-то иному, более того, считал дальнейшее развитие ненужным. К примеру, он активно возражал против попыток как-то упростить или автоматизировать программирование. Он умер в феврале 1957 года, успев дожить до времени, когда уже были созданы языки Ассемблера и вот-вот должны были появиться Кобол и Фортран. Тогда проблема языков программирования активно обсуждалась, однако он считал это занятие бессмысленным, будучи уверенным в том, что ни к чему тратить дорогостоящее машинное время на работу с текстами программ.

Преспер Эккерт и Герман Гольдштейн (справа) с арифметическим устройством для ENIACВпрочем, материализация машины Тьюринга могла бы и не состояться, а компьютерная история могла пойти совершенно иным путем, не будь еще одной случайности, а именно — встречи фон Неймана с лейтенантом Германом Гольдштейном. Великий ученый и никому не известный лейтенант поздним вечером ждали прибытия поезда на железнодорожной платформе крошечного городка Абердин, известного лишь тем, что неподалеку находился артиллерийский полигон. Сейчас там артиллерийский музей Army Ordnance Museum, один из крупнейших военно-технических музеев мира с богатейшей коллекцией. Среди его экспонатов — старейший экземпляр нашего танка Т-34, выпущенный в 1941 году. Но там нет мемориала, посвященного встрече фон Неймана с Гольдштейном, хотя, может быть, именно она принесла человечеству больше блага, чем все оружие, представленное в этом музее.

Несколько слов о Гольдштейне. Этот отнюдь не типичный армейский офицер, профессор математики из Мичиганского университета, после призыва на воинскую службу получил чин лейтенанта и руководил расчетом артиллерийских таблиц в баллистической лаборатории при полигоне. Работу выполняли сотни женщин, использовавших механические арифмометры, в те времена именно женщин-расчетчиц и называли компьютерами. Объем необходимых вычислений был чудовищным: только для расчета одной траектории полета снаряда требовалось выполнить 750 операций, а для передачи военным орудие необходимо было снабдить как минимум расчетами 3 тыс. траекторий, общая трудоемкость такой процедуры превышала четыре человеко-года.

Военным требовались новые пушки, но без таблиц для стрельбы они были бесполезны. Препятствием оказалась низкая скорость расчетов. Гольдштейн, отвечавший за эту работу, активно искал пути решения проблемы ускорения счета, и однажды ему сильно повезло, снова случай. Один из коллег показал ему статью «Использование высокоскоростных электронных ламп для вычислительных устройств» (The Use of High Speed Vacuum Tube Devices for Calculating). Ее написал в 1942 году сотрудник Муровской школы Джон Мочли (сегодня Moore School of Electrical Engineering входит в состав университета штата Пенсильвания). Со временем статью Мочли стали рассматривать как один из самых важных основополагающих трудов; впрочем, ее оригинальность оспаривается. Некоторые считают, что идея ламповых регистров была заимствована у Джона Атанасова**. На практике Мочли и его напарник Джон Преспер Эккерт работали самостоятельно, намереваясь использовать проектируемую ими машину для метеорологических целей. Действовали они кулуарно, никто кроме Гольдштейна на статью не прореагировал, однако тот, оценив прочитанное, немедленно поехал в Муровскую школу и сделал все возможное, прежде всего обеспечив финансирование проекта, который поначалу назывался Project PX, а затем стал именоваться ENIAC (Electronic Numerical Integrator And Computer).

История построения ENIAC хорошо описана, но часто, говоря об этой машине, упускают из виду, что ее внедрение шло с колоссальным трудом. Монстр, состоявший из 18 тыс. ламп и весивший 30 тонн, нужно было программировать, однако ничего иного, кроме коммутационных панелей, для этой цели не было. И вот еще один случай (который по счету?). Программированием для ENIAC руководила бывшая учительница математики Адель Кац, сменившая фамилию на Гольдштейн, выйдя замуж за своего непосредственного руководителя. Адель Гольдштейн была первой программисткой в современном понимании, она же написала руководство по эксплуатации ENIAC и подготовила первую группу программисток из шести человек (тогда считалось, что программирование — занятие женское).

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

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

Побывав несколько раз в Муровской школе и ознакомившись с положением дел, он сумел понять причины сложности программирования ENIAC и нащупал способы их преодоления. Фон Нейман осознал, что необходимо воспользоваться идеей машины Тьюринга, для чего уравнять в правах программы и данные и перенести гипотетическую тьюринговскую бесконечную ленту с записанными на ней командами в оперативную память компьютера. В таком случае программирование сводится к записи последовательности команд в память. Эта процедура заметно проще ручной коммутации сотен или тысяч проводов; кроме того, в текст программ можно вставлять команды управления, а значит, выполнять переходы и циклы. Созданием машины с хранимой в памяти программой было положено начало тому, что мы сегодня называем программированием. Свое открытие фон Нейман изложил в одном из самых неоднозначных во всей истории компьютерной науки документов, The First Draft of a Report on the EDVAC. Напомним, что проект Electronic Discrete Variable Automatic Computer был начат в 1944 году по инициативе Джона Мочли и Преспера Эккерта задолго до окончания работ над ENIAC, несовершенство которого видели и сами ученые, а потому искали пути его развития. Некоторые утверждают, что они самостоятельно подошли к решению проблем программирования, но каких-либо свидетельств их приоритета не существует. А на стороне фон Неймана — документ, сокращенную версию которого он написал от руки в поезде, а затем передал Гольдштейну. Тот довел документ до готовности и распространил. С моральной точки зрения этот шаг есть не что иное, как узурпация чужого труда: несмотря на гениальную догадку фон Неймана, фундамент для нее был построен Мочли, Эккертом и их коллегами. Игнорирование достижений других людей не украшает ни фон Неймана, ни Гольдштейна. К тому же придание гласности этого документа нарушало не только этические принципы, но и патентные, и даже военные требования, однако научный авторитет и статус одного из создателей атомной бомбы освобождали фон Неймана от необходимости им следовать. Своей публикацией он к тому же фактически «хоронил» ENIAC и открывал дорогу машинам, построенным по предлагаемой им архитектуре. Но тем не менее ENIAC выжил, его модернизацией занимался инженер Герман Луков, после перевоза из Муровской школы на полигон компьютер проработал много лет, полностью оправдав свое существование.

Распространение First Draft отрыло возможность для разработки компьютеров в других странах, прежде всего в этом преуспела Британия; безусловно, документ стал известен в СССР и способствовал началу отечественных работ по созданию ЭВМ. А вот в стане разработчиков произошел раскол. Мочли и Эккерт пошли по пути коммерциализации и в конечном итоге создали первый успешный продаваемый компьютер UNIVAC. А фон Нейман и его ученики получили поддержку со стороны военных, в результате чего сначала был построен программируемый компьютер EDVAC, в котором полноценно реализовывалась архитектура фон Неймана, а затем на его основе — первая серия компьютеров ORDVAC (ORDnance Variable Automatic Computer). Логика разрабатывалась в IAS, а аппаратные решения — в различных университетах и лабораториях, наибольшую известность получили ILLIAC, Oracle, AVIDAC, MANIAC, JOHNNIAC, MISTIC и Cyclone.

К созданию архитектуры, которую мы называем фон-неймановской, свои руки и талант приложило множество людей. Так или иначе каждый из них что-то заимствовал у своих предшественников, но в конечном итоге их совместная деятельность, объединенная в цепочку случайных событий, привела к результату, ассоциируемому с одним именем. История создания архитектуры компьютеров с фон Неймана сегодня рассматривается как яркий пример закономерности распределения славы. Эта закономерность, получившая название «Эффект Матфея», была сформулирована в 1988 году Робертом Мертоном. Ее суть в том, что научное сообщество склонно приписывать все заслуги людям, которые уже знамениты, оно готово преувеличивать достижения тех, кто составил себе имя, а достижения ученых, еще не получивших известности, как правило, преуменьшают или вообще не признают. Как сказано в Евангелии от Матфея: «Ибо каждому имеющему будет дано, и у него будет изобилие, а у неимеющего будет взято и то, что он имеет».

Что могло бы быть, если бы?

Первые полезные результаты работы компьютера ENIAC были получены в 1949 году. Английское электромеханическое устройство Colossus, предназначенное для расшифровки радиограмм, закодированных германской машиной Lorenz, заработало на пять лет раньше, весной 1944-го. Благодаря своей специализации на соответствующих задачах Colossus показывал производительность, сравнимую с первыми экземплярами Pentium. Часто утверждают, что после войны все материалы по Colossus были засекречены, а несколько построенных экземпляров машины были уничтожены; тайное стало явным только в 90-е годы усилиями доживших до этого времени разработчиков. На самом деле машину держали в секрете, но не более, чем любую иную систему вооружения, никто ее не уничтожал, а последний экземпляр проработал вплоть до 1961 года. Более того, у Colossus были преемники. Первый из них, Robinson, представлявший конструктивно улучшенную версию предшественника, был построен в начале 50-х годов и находился в эксплуатации почти десять лет. В следующей модели высокоскоростные считыватели с перфолент заменил магнитный барабан.

Затем были машины Johnson и Oedipus. Электронный «Эдип», предназначавшийся для автоматизации расшифровки текстов, имел свой словарь, в регистры заносили искомые слова и фразы, а машина выполняла функции распознавания. Как и Colossus, эта машина использовалась для расшифровки перехваченных сообщений, но в период холодной войны источник этих сообщений был другим. Oedipus был построен в 1954 году, то есть в том же году, что и первый серийный компьютер IBM 704, а потому естественно сравнить их. По количеству оборудования IBM 704 во много раз больше, решение аналогичной криптографической задачи занимает, как минимум, на порядок больше времени, чем на Oedipus, но подготовка задачи и данных на универсальном компьютере существенно проще. В данном случае возникала та же самая проблема, как на ENIAC до прихода Джона фон Неймана. Компания Ferranti, построившая Oedipus, параллельно строила универсальные компьютеры (Mark 1, Atlas и др.) и со временем отдала предпочтение им. Возможно, это произошло еще и потому, что элементная база в начале 60-х была еще очень слаба, и создать реконфигурируемый и удобно программируемый компьютер было сложно. Но если бы эта трудность была преодолена, то в истории компьютеров многое могло бы сложиться иначе.


* Попутно следует заметить, что Тьюринга часто ошибочно называют автором машины Colossus, использованной английской контрразведкой для расшифровки немецких радиограмм. В том, что Тьюринг имел к этой машине лишь косвенное отношение, убеждает факт, что она сделана-то была не по его схеме. Архитектура Colossus ближе к гарвардской; отсюда его фантастическая производительность. — Прим. автора.

** Вопрос приоритета решался в суде, решение было принято в пользу Атанасова, как и почему — тема для отдельного обсуждения. — Прим. автора.