Леонид Черняк – История электронных компьютеров (страница 15)
Сама идея памяти была не нова. Еще Жаккар управлял ткацким станком с использованием перфокарт с записанными них плетенями, а Ада Лавлейс в XIX веке описала для аналитической машины Бэббиджа алгоритмы, где были даже ветвления и циклы. Позже эта идея внешней программы была реализована в гарвардской архитектуре. Во всех этих устройствах программа отделена от процессора.
Эккерт и Моукли сделали радикальный шаг. Они предложили хранить инструкции там же, где и данные. Команда машинного языка стала такой же записью в памяти, как число. Машина могла прочитать ее, изменить или даже переписать. По сути, программа превратилась в хранилище внутреннего состояния машины. Эта простая на первый взгляд идея изменила все. Компьютер впервые стал по-настоящему универсальным.
Система команд
Вместе с памятью для программ появилась и другая новинка – система команд.
Теперь машина понимала формализованный набор команд-инструкций. Каждая команда делилась на две части:
• код операции (что нужно сделать: сложить, вычесть, перейти),
• адреса операндов (с какими числами работать и куда положить результат).
Особым прорывом стали команды условных переходов. С их помощью машина могла менять ход программы в зависимости от результата предыдущей операции: например, «если число ноль – иди туда, если положительное – сюда». В сочетании с безусловными переходами это дало возможность создавать циклы, ветвления и, в конечном счете, сложные алгоритмы.
Важно, что команды и данные находились в одном адресном пространстве. Это позволяло программе «думать» о самой себе – читать, изменять и перезаписывать собственные инструкции. Для будущего программирования это оказалось решающим.
Набор команд EDVAC был ограниченным, но принципиально новым. Впервые появился аппаратный декодер инструкций – устройство, которое по коду операции понимало, что именно нужно сделать. С этого момента общение человека с машиной перестало быть физическим (кабели, тумблеры) и стало логическим.
До EDVAC понятие «язык общения с машиной» в современном смысле отсутствовало. Программирование на ENIAC было больше похоже на инженерный монтаж. Эккерт и Моукли первыми предложили формализованный набор команд, открыв дорогу универсальным компьютерам. Этот шаг и стал тем самым фундаментом, на котором стоит вся современная вычислительная техника.
О Джоне фон Неймане
Двое непосредственных создателей EDVAC были представлены в Главе 3. Джона фон Неймана нельзя назвать третьим – он не создавал машину. Возможно, хотя и не задокументировано, он как консультант оказал некоторое влияние на процесс разработки. Но его историческая роль скорее в другом: он стал популяризатором EDVAC, написав и опубликовав за своим именем так называемый меморандум, или, точнее, обзор «First Draft of a Report on the EDVAC» – собрание умозаключений по поводу проекта будущей машины. В этом документе он раскрыл замысел создания компьютера с хранимой программой, что дало основание в последующем растиражировать эту схему под названием «Архитектура фон Неймана». На самом деле он не был автором описанной схемы, и, похоже, не претендовал на авторство, хотя по каким-то причинам истинные авторы он не упомянул. Важно отметить: сама «Архитектура фон Неймана», существенно усовершенствованная по сравнению с черновиком First Draft, была реализована в компьютере IAS, о котором будет подробно рассказано в Главе 5.
Урожденный Янош Лайош Нейман использовал дворянскую частицу «von», хотя его принадлежность к дворянству была условной – она было куплено его отцом Микшой Нейманом, венгерским евреем, банкиром и промышленником. Заметим, что Антон Павлович Чехов отказался от дворянства, которое ему было присвоено императором Николаем II. Состоятельная семья фон Неймана сильно пострадала за 133 дня существования Венгерской советской республики, и у юного Яноша тогда сформировались стойкие антикоммунистические взгляды. Позже, уже в США, он стал убежденным противником СССР и одним из самых жестких сторонников холодной войны, всерьез рассматривая возможность превентивных ядерных ударов по Советскому Союзу.
Существует легенда, рассказанная Германом Гольдштейном, о знаменательной встрече фон Неймана с ним, в ту пору молодым лейтенантом, на железнодорожной платформе. Лейтенант якобы раскрыл ему секрет создания компьютеров в инженерной Школе Мура, чем вызвал интерес великого ученого к деятельности небольшой группы инженеров. Однако истинные причины были серьезнее: работа над атомной бомбой требовала огромного объема расчетов, и люди-компьютеры с арифмометрами с ней не справлялись. Нейман изучал все доступное: релейные машины Стибица, машины Эйкена, анализатор Буша, табуляторы IBM и ENIAC. Возможно, Гольдштейн лишь сообщил о новом проекте, что вызвало цепочку событий, получивших в последующем неоднозначную оценку.
Специфические черты личности фон Неймана, позволяли ему мгновенно схватывать суть услышанного, перехватывать инициативу и распространять чужие идеи, не обременяя себя упоминанием авторства первоначальных разработчиков. Он не одинок, среди великих таких немало. Д давление авторитета со стороны большого ученого известно как эффект Матфея, описанного в «Притче о талантах» в Евангелии от Матфея. В науке эффект встречается повсеместно, особенно остро ощущался в советской науке.
Тьюринг и фон Нейман
Не упомянуть Тьюринга в повествовании об EDVAC невозможно, потому что почти во всех учебниках Нейману приписывают роль посредника между Универсальной машиной Тьюринга (UMT) и EDVAC, что создает впечатление, будто UMT был непосредственным прототипом EDVAC. Такая трактовка истории дает возможность представить создание программируемого компьютера как академический плод исключительно математической мысли, что выглядит красиво, но лишено какой-либо исторической достоверности. Тьюринг имеет косвенное отношение созданию программируемого компьютера.
Первое знакомство Тьюринга с фон Нейманом было заочным. В 1933 году Тьюринга, тогда еще 21-летнего студента, за успехи в учебе по принятой в Кембридже традиции наградили серьезным научным фолиантом. Совершенно случайно им оказалась книга фон Неймана «Математические основы квантовой механики», на момент публикации которой автору исполнилось всего 30 лет, а у него на счету уже было свыше 50 научных статей. Такое совпадение выглядит не иначе как знак судьбы.
Через пару лет она прозорливо свела их очно во время визита Неймана в Кембридж. После обстоятельной беседы он порекомендовал Тьюрингу пройти стажировку у него в Принстонском университете, и Тьюринг принял приглашение. Учитывая репутацию университета и Института передовых исследований (IAS), ставшего усилиями властей Германии центром интеллектуальной жизни. Здесь работали Алонсо Черч, его ученики Стивен Клейни и Джон Россер, а в IAS неоднократно бывал Курт Гедель; позже здесь оказались Эйнштейн и Оппенгеймер.
Мог ли выпускник Кембриджа мечтать о большем, чем о таком сообществе коллег? В октябре 1936 года он оказался в кампусе университета, где, помимо основной деятельности, активно занимался спортом – был членом софтбольной команды, занимался бегом и спуском по реке на каноэ, но с коллегами близко не сходился и держался отстраненно. Вскоре после приезда из Лондона ему прислали гранки статьи «On Computable Numbers», которую он после правки отправил обратно, и в январе 1937 года статья вышла в свет. В 2008 году ученый совет Принстона признал Тьюринга вторым по значимости выпускником, хотя статья была написана все же в Кембридже. Первым по значимости выпускником Принстона ученый совет признал Джона Нэша, выдающегося математика, лауреата Нобелевской премии по экономике (1994) за вклад в теорию игр. Попутно отметим, что о Нэше «Игры разума» (A Beautiful Mind, 2001), менее известный чем «Игра в имитацию» (The Imitation Game, 2014) о Тьюринге, содержательнее.
Единственным человеком, с которым а Принстоне у Тьюринга возник личный контакт, оказался фон Нейман. Внешне они были полной противоположностью друг другу: фон Нейман – бонвиван, обновлявший гардероб ежегодно, стремившийся стать настоящим американцем, активно демонстрировавший антикоммунистические взгляды; Тьюринг – мрачный по натуре, скромный англичанин, с трудом научившийся водить старый Ford и одетый в поношенную одежду из твида. Контраст был заметен, что не мешало содержательному взаимодействию.
Для фон Неймана странности английского стажера не имели значения. Он предложил Тьюрингу остаться в качестве ассистента с неплохой зарплатой по окончании полутора лет стажировки, но на этот получил отказ. Тьюринг был патриотом и видел угрозу нацистской Германии, писав другу: «Надеюсь, Гитлер не вторгнется в Англию до моего возвращения». Он тогда еще не осознавал своей роли в будущей криптовойне.
На этом научное продуктивное сотрудничество двух гениев завершилось, но идея программируемой машины Тьюринга оставила неизгладимый след в памяти фон Неймана. В описании EDVAC эта теория прямо не использовалась, однако фон Нейман рекомендовал участникам проекта ознакомиться со статьей «Computable Numbers» для расширения кругозора. По окончании войны фон Нейман и Тьюринг до 1949 года еще поддерживали переписку, в которой они расходились во мнении об интеллектуальном потенциале компьютеров: Тьюринг размышлял о том, может ли машина мыслить, а фон Нейман видел в компьютере исключительно средство обработки данных. И, черт возьми, он оказался прав!