Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию
Шрифт:
Женщины-программистки придумали, как сделать подпрограммы для ENIAC, примерно в то же время, что и Хоппер в Гарварде. Они боялись, что логические схемы не настолько мощны, чтобы просчитать некоторые траектории. Придумала решение Макналти. «О, я знаю, я знаю, я знаю, — возбужденно воскликнула она однажды. — Мы можем использовать главную программу для повторения части программы». Они попытались, и это сработало.
«Мы начали обдумывать, как нам написать подпрограммы, вложенные подпрограммы и все такое, — вспоминала Дженнингс. — Это было очень полезно для задач по расчету траекторий, потому что идея состояла в том, чтобы повторять не всю программу, а только ее куски. Для этого нужно было так составить основную программу, чтобы она реализовала это. После того как вы научились делать это, вы понимаете, как составить свою программу в модульном виде. Разработка подпрограмм и модульной организации основной программы были самыми важными этапами в освоении программирования» [183] .
183
Джин Бартик, устный рассказ, Музей компьютерной истории.
Джин Дженнингс Бартик
184
Jennings Bartik, Pioneer Programmer, 557.
Сохранение программ
С самого начала Мокли и Эккерт понимали, что существуют более легкие способы перепрограммировать ENIAC. Но они не пытались этого сделать, потому что потребовалось бы усложнить аппаратное устройство, и к тому же в этом не было необходимости, поскольку для решения первоначально поставленных задач этого не требовалось. «Не было сделано ни одной попытки обеспечить автоматический выбор настроек под определенную задачу, — написали они в своем годовом отчете за 1943 год по усовершенствованию ENIAC. — Это было сделано из-за желания упростить конструкцию и потому, что предполагалось, что ENIAC будет использоваться в основном для задач определенного типа, в которых одна настройка будет использоваться много раз, прежде чем машину заставят решать другую задачу» [185] .
185
Eckert and Mauchly, Progress Report on ENIAC, 31 декабря 1943 г., в: Nancy Stern, From ENIAC to UNIVAC (1981).
Но больше чем за год до окончания создания ENIAC, уже в начале 1944 года, Мокли и Эккерт поняли, что существует хороший способ сделать компьютеры легко перепрограммируемыми: хранить программы в памяти компьютера, а не загружать их каждый раз заново. Они чувствовали, что это было бы следующим большим шагом вперед в развитии компьютеров. Структура машины с «сохраняемой программой» предполагает, что постановки задач для компьютера могут быть изменены практически мгновенно, без изменения вручную конфигурации кабелей и переключателей [186] .
186
JohnMauchly, Amending the ENIAC Story, письмо редактору Datamation, октябрь 1979 г.
Для сохранения программы внутри машины нужно иметь большой объем памяти. Эккерт перебрал много способов для этого. В докладной записке, составленной в январе 1944 года, он написал: «Программы можно сохранять временно, используя запись на дисках из сплавов или постоянно — на протравленных дисках» [187] . Поскольку такие диски еще не были сделаны, в следующей версии ENIAC он предложил использовать вместо этого более дешевый метод хранения, названный памятью на акустической линии задержки. Она была впервые сконструирована в Bell Labs инженером Уильямом Шокли (о котором ниже будет рассказано гораздо подробнее) и усовершенствована в Массачусетском технологическом институте. Принцип работы акустической линии задержки состоял в сохранении данных в виде импульсов в длинной трубке, заполненной тяжелой, вязкой жидкостью, такой как ртуть. На одном конце трубки электрический сигнал, несущий информацию, в кварцевом преобразователе превращался в волны, какое-то время распространяющиеся в трубке вперед и назад. Поскольку импульсы затухают, их с помощью усилителей восстанавливают. Когда приходит время извлечь данные, импульсы в кварцевом преобразователе опять превращаются в электрические сигналы, и цикл повторяется. В каждой такой трубке могло храниться примерно тысяча бит данных при стоимости, равной одной сотой от стоимости схемы, собранной на электронных лампах. В докладной записке, составленной летом 1944 года Эккертом и Мокли, они предложили следующее поколение компьютеров — преемников ENIAC — снабдить стеллажами с этими линиями задержки на ртутных трубках и хранить в них как исходные данные, так и основную информацию по программам в цифровом виде.
187
Presper Eckert, Disclosure of a Magnetic Calculating Machine, 29 января 1944 г., разрешенные для открытой печати вещественные доказательства в суде см. в архиве Don Knuth, Музей компьютерной истории; Mark Priestley, A Science of Operations (2011), 127; Stern, From ENIAC to UNIVAC, 28.
Джон фон Нейман
В этот момент в истории компьютеров снова появляется один из самых интересных персонажей. Джон фон Нейман — математик, родившийся в Венгрии, — был руководителем Тьюринга в Принстоне и предлагал ему остаться там работать в качестве ассистента. Восторженный эрудит и изысканный интеллектуал, он внес значительный вклад
и в математическую статистику, и в теорию множеств, и в геометрию, и в квантовую механику, и в конструкцию ядерной бомбы, и в динамику жидкостей, и в теорию игр, и, конечно, в компьютерную архитектуру. В конечном итоге он значительно усовершенствует архитектуру компьютера, обеспечивающую сохранение программ, которую начали разрабатывать Эккерт и Мокли и их коллеги, и она станет называться его именем, и большая часть заслуг достанется именно ему [188] .188
Материал этого раздела взят не только из работ, ссылки на которые приведены ниже, но и из работ William Aspray, John von Neumann and the Origins of Modern Computing (1990); Nancy Stern, John von Neumann’s Influence on Electronic Digital Computing, 1944–1946, IEEE Annals of the History of Computing, октябрь — декабрь 1980 г.; Stanislaw Ulam, John von Neumann, Bulletin of the American Mathematical Society, февраль 1958 г.; George Dyson, Turing’s Cathedral (2012; ссылки по Kindle edition); Herman Goldstine, The Computer from Pascal to von Neumann (1972; ссылки по Kindle edition).
Фон Нейман родился в зажиточной еврейской семье в Будапеште в 1903 году в благополучное время, когда в Австро-Венгерской империи были отменены законы, ограничивающие права евреев. Император Франц Иосиф в 1913 году наградил банкира Макса Неймана наследуемым дворянским титулом за «заслуги в финансовой сфере», таким образом семья стала назваться маргиттаи Нейманами, а по-немецки — фон Нейманами. Янош (в детстве его называли Янчи, а затем — в Америке — Джоном или Джонни) был старшим из трех братьев, и они все после смерти отца перешли в католичество (как один из них признался — «для удобства») [189] .
189
Dyson, Turing’s Cathedral, 41.
Фон Нейман был еще одним первооткрывателем, чьи интересы лежали на пересечении гуманитарных и естественных наук.
«Наш отец писал любительские стихи и считал, что поэзия может передать не только эмоции, но и выразить философские идеи, — вспоминал брат Джона Николас. — Он считал поэзию языком в языке, и в этом, возможно, берут начало будущие рассуждения Джона о языках компьютера и мозге». О матери он написал: «Она считала, что музыка, искусство и прочие эстетические удовольствия должны занимать важное место в нашей жизни и что утонченность — весьма уважаемое качество» [190] .
190
Nicholas Vonneumann, John von Neumann as Seen by His Brother (1987), 22, публиковался фрагмент из книги под названием John von Neumann: Formative Years, IEEE Annals, осень 1989 г.
Существует огромное количество историй о многочисленных талантах молодого фон Неймана, и некоторые из них, вероятно, правдивы. В возрасте шести лет, как позже рассказывали, он перебрасывался с отцом шутками на древнегреческом и мог в уме разделить два восьмизначных числа. На вечеринках он проделывал фокус — запоминал страницу из телефонной книги и называл в обратном порядке имена и номера. Он мог воспроизвести дословно прочитанные страницы из романов или статей на любом из пяти языков. «Если раса людей со сверхчеловеческими мыслительными способностями когда-либо возникнет, — сказал как-то разработчик водородной бомбы Эдвард Теллер, — принадлежащие ей особи будут напоминать Джонни фон Неймана» [191] .
191
Dyson, Turing’s Cathedral, 45.
Кроме школы, он занимался с репетиторами математикой и языками и в пятнадцать лет полностью овладел высшей математикой. Когда Коммунистическая партия во главе с Белой Куном в 1919 году на короткое время взяла власть в Венгрии, занятия фон Неймана были перенесены в Вену и на курорт на Адриатическом море, а в нем выработалось стойкое отвращение к коммунизму. Он изучал химию в Швейцарском федеральном технологическом институте (Политехникуме) в Цюрихе (откуда уже ушел Эйнштейн), а математику — и в Берлине, и в Будапеште, и в 1926 году получил докторскую степень. В 1930 году он отправился в Принстонский университет изучать квантовую физику и остался там после того, как был назначен (наряду с Эйнштейном и Гёделем) одним из первых шести профессоров только что образованного Института перспективных исследований [192] .
192
Goldstine, The Computer from Pascal to von Neumann, 3550.
Фон Нейман и Тьюринг, которые встретились в Принстоне, считаются парой великих теоретиков, разработавших концепцию компьютера общего назначения, но в личном плане и по темпераменту они были полными противоположностями. Тьюринг вел спартанский образ жизни, жил в пансионах и дешевых гостиницах и был погружен в себя. Фон Нейман же был элегантным бонвиваном, и они с женой один-два раза в неделю устраивали блестящие приемы в своем огромном доме в Принстоне. Тьюринг любил бегать на длинные дистанции, а про фон Неймана шутили, что на свете очень мало мыслей, никогда не приходивших ему в голову, но идея бега на длинные расстояния (впрочем, и на короткие тоже) была среди них. Мать Тьюринга как-то сказала о своем сыне: «В одежде и привычках он обычно был неряшлив». Фон Нейман, наоборот, почти всегда носил костюм-тройку, в том числе в поездке на осле на дно Большого каньона. Даже будучи студентом, он так хорошо одевался, что, как рассказывали, при первой встрече с ним математик Давид Гильберт задал только один вопрос: «Кто его портной?» [193]
193
Dyson, Turing’s Cathedral, 1305.