*1
_____
*1 Окончание. Начало см. PC Week/RE N 20/2006, с. 35
ИСТОРИЯ ВТ
Нельзя не отметить, что фон Нейман имел предшественника в лице выдающегося английского ученого Алана Мэтисона Тьюринга (Alan Mathison Turing, 1912-1954). Еще в бытность студентом-математиком Кембриджского университета Тьюринг увлекся математической логикой и, в частности, заинтересовался так называемой проблемой разрешимости (Entscheidungsproblem), которую выдвинул в 1900 г. на Международном математическом конгрессе в Париже великий немецкий математик Давид Гильберт. Суть ее состояла в "отыскании общего метода, позволяющего определить, выполнимо ли данное высказывание на языке формальной логики, т. е. установить его истинность". Двадцатичетырехлетний Тьюринг в апреле 1936 г. доказал, что эта проблема неразрешима, и опубликовал полученные результаты в статье "О вычислимых числах применительно к проблеме разрешимости" (On Computable Numbers, with an Application to the Entscheidungsproblem); она появилась в 1936-1937 гг. и принесла автору всемирную известность.
В качестве инструмента доказательства Тьюринг использовал предложенную им гипотетическую машину, за которой закрепилось название "универсальной машины Тьюринга" (Universal Turing Machine, UTM). Она считывала с внешней памяти - ленты, неограниченной с обеих сторон и разбитой на отдельные ячейки, символы внешнего алфавита, которыми кодировались как подаваемые в машину сведения, так и те, что вырабатывались в ней. В ячейке мог храниться только один символ, а их набор представлял исходные данные, расставленные произвольным образом по ячейкам. На каждом такте работы машина выполняла одну из трех элементарных операций: "обозревай соседнюю справа ячейку", "обозревай соседнюю слева ячейку", "продолжай обозревать ту же ячейку". Считанный из ячейки символ поступал в логический блок, в который вводился один из символов внутреннего алфавита машины, определявший состояние блока на данный такт. В зависимости от их значений логический блок посылал в обозреваемую ячейку "переработанный" символ и выдавал команду, хранившуюся во внутренней памяти машины, на выполнение следующей элементарной операции (курсив везде мой. - Ю.П.). Таким образом, действия UTM на каждом такте зависели от комбинации ее прошлого состояния и обозреваемого в данном такте символа в ячейке ленты.
Из этого весьма упрощенного описания "универсальной машины Тьюринга" следует, что автор по существу построил модель вычислений, в которой каждый алгоритм разбивался на последовательность простых, элементарных шагов. Он показал, что его умозрительная машина - цитируем современного историка и вспоминаем прозрения Бэббиджа - "...за данный большой, но конечный промежуток времени способна справиться с любым вычислением, которое сможет выполнить всякая сколь угодно мощная современная вычислительная машина".
Сравним концепцию "фон-неймановской архитектуры" с некоторыми свойствами UTM:
- как следует из сказанного выше, Тьюринг фактически впервые выдвинул концепцию вычислительной машины с хранимыми в памяти командами (программой);
- поскольку операции UTM на каждом такте зависят, в частности, от результата последнего действия, можно говорить, что машина выполняет команду условного перехода;
- Тьюринг показал, что результатом работы машины может быть группа символов, которые, будучи введены в другую UTM, заставят ее действовать так же, как первую. Иными словами, машина может "генерировать" или видоизменять программу, и Тьюринг четко понимал, что это ее свойство должно быть перенесено на реальную ЭВМ. Так, читая в 1947 г. лекцию, посвященную ЭВМ АСЕ, разрабатываемой под его руководством в Национальной физической лаборатории, он говорил: "Мы хотим, чтобы машина могла быть самообучаемой и имела возможность изменять собственные команды с помощью специальной процедуры";
- из упомянутого в последнем абзаце свойства UTM неявным образом следовало, что любую универсальную вычислительную машину можно запрограммировать так, что она будет моделировать работу некой специализированной машины (создатели ENIAC делали то же самое, когда настраивали свою универсальную машину на решение конкретной задачи).
Неясно, обсуждалась ли статья Тьюринга во время дискуссий в Муровской школе и знали ли о ней инженер Эккерт и физик Моучли, но математику фон Нейману она была хорошо известна (тем более что он лично был знаком с английским гением и даже приглашал его на работу в Принстонский университет).
Но почему именно фон Нейман, который "без году неделю" занимался проблемами ВТ, взялся за написание "Первого варианта..."? Может быть, "выбив" финансы на разработку концепции EDVAC, он чувствовал себя ответственным за своевременное и качественное выполнение контракта? Голдстайн находит другое объяснение - в способности великого ученого логически обобщать любой, даже сырой материал: "Фон Нейман, написав свой отчет, придал определенную форму размышлениям в области компьютеров, чего другой не делал ранее. Он был среди членов группы в школе Мура самым необходимым человеком". Моучли же и Эккерт были глубоко возмущены действиями Голдстайна и порвали с ним все отношения.
Однако не будем слишком суровы к Голдстайну, человеку, немало способствовавшему созданию первой универсальной ЭВМ*1. Его и вправду не совсем этичный, но вполне бескорыстный поступок объясняется, по-видимому, различием в психологии поведения математика и инженера (особенно инженера американского). Последний редко опубликует или иным способом распространит результаты своей работы, не попытавшись сначала запатентовать их. Математик же не видит ничего предосудительного в том, чтобы сообщить коллегам о своих или чужих достижениях еще до их официальной публикации. Эта традиция ведет свое начало с того времени, когда не было научных журналов и ученые сообщали о своих математических открытиях в письмах друг к другу; при этом, как правило, не возбранялось эти письма тиражировать и отправлять другим адресатам. Конечно же Голдстайн обязан был указать (например, в сопроводительном письме), что рассылаемый им документ является обобщением коллективного труда, и указать фамилии участников работы (в том числе свою). Почему он не сделал этого - остается загадкой. Но, видимо, Голдстайн, оправдывавший свои действия общественной пользой, чувствовал себя неловко, потому что, когда речь зашла о патентовании EDVAC, он предложил подать заявку, в которую были бы включены все члены Муровской группы (это предложение было отвергнуто). В конечном счете получить патент никому не удалось, так как юристы сочли "Первый вариант..." публикацией в строго юридическом смысле, а заявка фон Неймана и Голдстайна, датированная 22 марта 1946 г., была подана слишком поздно (по американскому закону, патент может быть выдан в течение года после публикации).
_____
*1 Заслуги Голдстайна в развитии ВТ были отмечены в 1983 г. высшей наградой для ученых США - Национальной медалью за заслуги в области науки.
Сам же автор "Первого варианта..." хранил молчание по поводу разгоревшегося скандала, но его друг, сотрудник Лос-Аламосской лаборатории математик Стэнли Френкель (Stanley Frankel), вспоминал: "Я знаю, что примерно в 1943-м или 1944 г. фон Нейман глубоко осознал фундаментальное значение статьи Тьюринга... Он познакомил меня с ней и настоял, чтобы я тщательно ее изучил. Многие люди провозгласили фон Неймана отцом вычислительных машин (в современном смысле термина), но я уверен, что он никогда не сделал бы подобной ошибки сам. Его достоверно можно назвать "повивальной бабкой ЭВМ", и он настойчиво утверждал, что фундаментальная концепция [машины] принадлежит Тьюрингу*1... Несомненно, что Тьюринг и фон Нейман внесли существенный вклад в доведение до практического уровня этой концепции, но я не осмелюсь утверждать, что сравнимы роли, которые они сыграли во введении и разъяснении принципов построения компьютеров, хранивших в памяти программы и модифицировавших их во время работы"*2.
_____
*1 Отсутствие ссылки на статью Тьюринга в отчете фон Неймана - еще одно свидетельство того, что отчет не предназначался для публикации и широкого распространения.
*2 Характерно, что "Первый вариант..." не был включен в шеститомное собрание сочинений Д. фон Неймана, вышедшее в 1961-1963 гг. под редакцией профессора Иллинойского университета А. Г. Тауба в издательстве Pergamon Press.
Помимо отчета фон Неймана идеи новой компьютерной архитектуры были озвучены в курсе лекций, который организовала Муровская школа в период с 8 июля по 31 августа 1946 г., идя навстречу просьбам многочисленных организаций поделиться более подробной информацией об ENIAC. Курс назывался "Теория и методы проектирования электронных цифровых вычислительных машин" (Theory and Techniques for the Design of Electronic Digital Computers) и состоял из 48 лекций, посвященных самым разным аспектам ВТ: конструированию важнейших цепей и устройств, структурным особенностям и надежности машин различных типов (в том числе ASCC, ENIAC и EDVAC), способам контроля, новым видам оперативной памяти, численным методам и т. д.). Лекторами выступили специалисты, уже "широко известные в узких кругах", в частности Говард Эйкен, Дж. Преспер Эккерт, Джон Моучли, Джон фон Нейман, Артур Беркс, Герман Голдстайн, Джордж Стибиц, Сэмюэл Уильямс и др. Среди 28 слушателей были как пользователи машин (в основном из оборонных организаций), так и те, кому было суждено оставить свое имя в истории ВТ: Клод Э. Шеннон (Claude E. Shannon), Сэмюэл Н. Александер (Samuel N. Alexander), Роберт Р. Эверетт (Robert R. Everett) и др.; получили приглашения и два британца - Морис В. Уилкс (Maurice V. Wilkes) и Дэвид Рис (David Rees) из Кембриджского и Манчестерского университетов соответственно. На некоторых лекциях присутствовали гости - Джей Форрестер (Jay Forrester), Катберт Херд (Cuthbert C. Hurd) из IBM*1 и др.
_____
*1 Интересно, что представители IBM не состояли в числе постоянных слушателей: кто бы мог подумать тогда, что эта "перфокарточная" корпорация станет в дальнейшем многолетним лидером компьютерной индустрии!
Большая часть аудитории находилась под впечатлением газетных и журнальных публикаций об ENIAC и надеялась узнать как можно больше об этой машине. К удивлению и разочарованию слушателей, многие лекторы ушли в сторону и посвятили свои выступления обсуждению структуры и отдельных узлов EDVAC. Так, 15 июля 1946 г. Эккерт, рассказывая об управлении в ENIAC, показал, насколько оно бы упростилось в машине с хранимой программой. На следующих лекциях были подробно рассмотрены память на РУЛЗ, способы передачи информации в новой машине и т. д. Однако по прочтении примерно двух третей лекций С. Александер (в недалеком будущем создатель компьютеров SEAC и DYSEAC), поддержанный большей частью аудитории, попросил прекратить рассуждения о некой гипотетической машине и вернуться к рассмотрению конструкции и работы ENIAC. Отчасти эта просьба была выполнена, и все-таки одна из последних лекций курса, которую прочел Т. Кайт Шарплесс (Т. Kite Sharpless) из Муровской школы, была посвящена подробному описанию EDVAC. В представленном докладчиком виде машина никогда не была построена, как, впрочем, и та, что была описана в "Первом варианте...".
Отсутствие в команде разработчиков EDVAC таких харизматических лидеров, как Моучли и Эккерт, непрерывные организационные неувязки, неоднократная смена руководителей проекта привели к тому, что машина была введена в эксплуатацию лишь в начале 1952 г. и, проработав примерно десять лет, не оставила заметного следа в истории ВТ. Так грустно сложилась судьба ЭВМ, которая при других условиях могла бы стать лидером компьютерного мира.
Но Морис Винсент Уилкс, вдохновленный увиденным, услышанным и прочитанным в США, по возвращении на родину организовал разработку и изготовление ЭВМ EDSAC, которая впитала основные идеи EDVAC, была введена в действие 6 мая 1949 г. и явилась первой в мире практически действовавшей ЭВМ с хранимой программой!