Инноваторы. Как несколько гениев, хакеров и гиков совершили цифровую революцию Айзексон Уолтер
Атанасов любил автомобили; он старался по возможности покупать каждый год по новому и в декабре 1937 года купил новый «форд» с мощным двигателем V8. Чтобы проветриться, он отправился на прогулку, и эта поездка стала важной вехой в истории вычислительной техники. Вот его воспоминания об этом вечере:
«Однажды зимним вечером 1937 года я почувствовал, что совершенно измучен невозможностью найти решение проблем, связанных с конструкцией машины. Я сел в автомобиль, разогнался и ехал так долгое время, пока не стал контролировать свои эмоции. Это было моей привычкой — у меня получалось восстанавливать контроль над собой после того, как проедусь по дороге, сосредоточившись на управлении автомобилем. Но в ту ночь я был слишком измучен и продолжал мчаться, пока не пересек реку Миссисипи и не оказался в штате Иллинойс в 300 километрах от того места, где я сел в машину»[95].
Он съехал со скоростного шоссе и завернул в придорожную забегаловку. В штате Иллинойс, в отличие от Айовы, можно было по крайней мере купить спиртного, и он заказал себе порцию бурбона с содовой, потом еще одну. «Я почувствовал, что уже не так нервничаю, и мои мысли снова обратились к вычислительным машинам, — вспоминал он. — Я не знаю, почему моя голова тогда заработала и почему она не работала раньше, но там было симпатично, прохладно и тихо». Официантка не обращала на него внимания, и Атанасов смог спокойно обдумать свою проблему[96].
Он набросал свои идеи на бумажной салфетке, а затем начал перебирать какие-то практические вопросы. Главное — было непонятно, как пополнить заряд в конденсаторах, которые разряжались через пару минут. Он придумал поместить их на вращающиеся цилиндрические барабаны, сделанные из банок сока V8 (емкостью примерно 1,5 литра), чтобы они каждую секунду вступали в контакт с щетками, сделанными из кабелей, и их заряды восстанавливались. «В тот вечер я представил в голове возможную конструкцию регенеративной памяти, — вспоминал он. — В тот момент я называл ее „дискретной“». С каждым поворотом вращающегося цилиндра щетки должны «встряхивать» память, состоящую из конденсаторов, а также при необходимости снимать старые данные с конденсаторов и вводить новые. Он также придумал схему, которая позволяла считывать числа с двух разных цилиндров с конденсаторами, а затем использовать схему на электронных лампах, чтобы их складывать и вычитать, после чего результат отправлять в блок памяти. Как он вспоминал, после нескольких часов обдумывания всех этих проблем он «сел в машину и поехал домой, уже не так быстро»[97].
К маю 1939 года Атанасов был готов начать создание прототипа. Ему нужен был помощник, предпочтительно аспирант с инженерными навыками. Однажды друг, работавший на том же факультете, сказал ему: «У меня есть как раз такой человек, который тебе нужен». Так у него началось сотрудничество с Клиффордом Берри — тоже сыном электрика-самоучки[98].
Прототип был разработан и собран, его единственной целью было решение системы линейных уравнений. Машина Атанасова могла работать с системами, содержащими до двадцати девяти переменных. На каждом шагу она обрабатывала два уравнения и убирала одну из переменных, а затем распечатывала получившиеся уравнения на двоичных перфокартах размером 811, после чего набор карт с более простой системой уравнений подавался обратно в машину, и процесс начинался заново, а затем убиралась еще одна переменная. Это требовало много времени. Чтобы найти решение системы из двадцати девяти уравнений, машине потребовалось бы (если бы они могли заставить ее работать как нужно) считать почти неделю. Но если те же самые расчеты выполняли бы люди с помощью настольных калькуляторов, они потратили бы на это по крайней мере десять недель.
Атанасов продемонстрировал прототип в конце 1939 года и, надеясь получить финансирование на строительство полноценной машины, напечатал на машинке тридцатипятистраничное ее описание и сделал с него несколько копий через копирку. Начинался текст следующими словами: «Главная цель этого предложения — представить описание устройства и работы вычислительной машины, которая была разработана в основном для решения больших систем линейных алгебраических уравнений». Как будто для того, чтобы ответить критикам, считавшим недостатком, что назначение большой машины было ограничено только решением систем уравнений со многими неизвестными, Атанасов перечислил длинный список проблем, для которых требуется решение таких систем: «аппроксимация кривой… колебательные задачи… анализ электрических схем… упругие материалы». В заключение он представил подробный перечень предполагаемых расходов, которые в сумме давали грандиозную цифру — 5330 долларов, и эти деньги он в конечном итоге получил от частного фонда[99]. Затем он послал одну из печатных копий своего предложения в Чикаго патентному адвокату, нанятому Университетом Айовы, который в нарушение служебного долга не удосужился подать заявку на патент, и из-за его просчета правовой спор затянулся на десять лет.
К сентябрю 1942 года полноценная модель машины Атанасова была почти закончена. Она была размером с письменный стол, и в ней использовалось до трехсот электронных ламп. Была, однако, проблема: механизм для прожигания отверстий в перфокартах с помощью искры никогда не работал должным образом, и не было никакой команды механиков и инженеров в Университете Айовы, к которым можно было обратиться за помощью.
В этот момент работа остановилась. Атанасов был призван на службу во флот и послан в исследовательскую артиллерийскую лабораторию ВМС в Вашингтоне, где он работал над проблемами акустических мин, а затем принял участие в испытаниях атомной бомбы на атолле Бикини. В этот период он переключил внимание с компьютеров на инженерные проблемы, связанные с боеприпасами, но он остался изобретателем, подготовил тридцать патентов, в том числе на устройство для траления мин. Но его адвокат из Чикаго так никогда и не подал патентную заявку на его компьютер.
Компьютер Атанасова мог бы стать важной вехой в развитии вычислительной техники, но он был и в прямом, и в переносном смысле отправлен на свалку истории. Почти работающая машина была оставлена на хранении в подвале физического факультета Университета Айовы, и несколько лет спустя никто, казалось, не помнил, что она существовала. Когда в 1948 году занимаемое ею место понадобилось для других целей, некий аспирант разобрал ее, не поняв, что это было, и выбросил большую часть деталей[100]. Во многих тогдашних историях, рассказывавших о начале компьютерной революции, Атанасов даже не упоминается.
Даже если бы компьютер Атанасова заработал должным образом, у него были бы ограниченные возможности. Схемы с электронными лампами производили молниеносные расчеты, но механически поворачивающиеся ячейки памяти многократно замедляли процесс. И система прожигания отверстий в перфокартах, даже когда она работала, тормозила работу. Для того чтобы стать по-настоящему быстродействующими, современные компьютеры должны были стать полностью, а не частично электронными. Кроме того, модель Атанасова не была программируемой. Она была спроектирована только для того, чтобы решать линейные уравнения.
Из-за романтической тяги к изобретательству Атанасов был одиноким энтузиастом, работавшим много лет в подвале с единственным помощником — молодым напарником Клиффордом Берри. Но история его жизни свидетельствует о том, что на самом деле не следует романтизировать таких одиночек. Как и Бэббидж, который также трудился в своей маленькой мастерской и которому помогал только один ассистент, Атанасов так и не довел свою машину до полностью рабочего состояния. Если бы он работал в Bell Labs в содружестве с командами техников, инженеров и механиков или в большом университете, имеющем исследовательские лаборатории, скорее всего, нашлось бы решение для крепления и устройства считывания перфокарт и для других массивных частей его хитроумной машины. Кроме того, когда в 1942 году Атанасов был призван служить в ВМФ США, в лаборатории остались бы другие члены команды, способные доделать машину или по крайней мере вспомнить, что она созавалась.
Спасла Атанасова от забвения довольно нелепая история. В июне 1941 года его посетил один из тех людей, которые вместо того, чтобы трудиться в одиночестве, любили ездить по разным местам, подхватывать идеи и работать в команде. Поездка Джона Мокли в Айову позже станет предметом дорогостоящих судебных процессов, горьких обвинений и противоположных интерпретаций. Но она и спасла Атанасова от безвестности и подтолкнула ход развития компьютерной техники вперед.
Джон Мокли
В начале ХХ века в Соединенных Штатах образовался, как ранее в Британии, класс ученых-джентльменов, которые собирались в специальных клубах ученых, отделанных деревянными панелями, и в других изысканных помещениях, где они обменивались идеями, слушали лекции, а также сотрудничали в различных проектах. Джон Мокли вырос в этой атмосфере. Его отец, физик, был начальником Отдела геомагнетизма в вашингтонском Институте науки Карнеги, самом главном учреждении страны по содействию продвижению и обмену результатами научных исследований. В этом отделе отслеживали электрические процессы в атмосфере. Отец Мокли координировал работу исследователей по всему миру — от Гренландии до Перу[101].
На Джона, выросшего в пригороде Вашингтона Чеви-Чейзе, научное сообщество оказало сильное влияние. «В Чеви-Чейзе, казалось, жили практически все ученые Вашингтона, — говорил он с гордостью, — директор Отдела мер и весов Национального бюро стандартов жил рядом с нами. Поблизости жил и директор Отдела радио». Глава Смитсоновского института также был их соседом. Джон провел много выходных, делая расчеты для отца с помощью настольного арифмометра, и в результате у него развилась страсть к метеорологии, базирующейся на вводе данных. Он также любил электрические схемы. Они с друзьями проложили в своем районе телефонные провода, соединили свои дома внутренней телефонной сетью и соорудили устройства дистанционного управления для запуска фейерверков на вечеринках. Он вспоминал: «Когда я нажимал на кнопку, фейерверк улетал на 16 метров». В четырнадцать лет он зарабатывал деньги, помогая жителям своего района устранить неисправность проводки в их домах[102].
Будучи студентом университета Джона Хопкинса, Мокли попал в программу для исключительных студентов, которым сразу разрешалось защищать диссертацию в области физики. Он сделал свою работу по линейным спектрам, потому что в них была красота, для них требовались экспериментальные и теоретические навыки. «Нужно было знать определенную теорию, чтобы понять, к чему относились эти спектры, но понять это было нельзя без экспериментальных фотографий этих спектров. Только вот делать их нужно было самим, — говорил он. — Так что мне пришлось долго учиться стеклодувному мастерству, вакуумной технике, методикам нахождения течей в системе и т. д.»[103]
Мокли был обаятельным человеком, он обладал удивительной способностью (и желанием) разъяснять вопросы, поэтому вполне естественно, что он стал профессором. Такое место в Великую депрессию было трудно получить, но он сумел сделать это и устроился в колледже Урсинус, в часе езды к северо-западу от Филадельфии. «Я был там единственным человеком, обучавшим студентов физике»[104].
Мокли всегда был готов делиться идеями, он обладал талантом рассказчика и, когда говорил, широко улыбался — все это сделало его очень популярным преподавателем. «Он любил рассказывать, и, кажется, многие из его идей возникли в результате активного обмена мнениями, — вспоминал его коллега, — Джон любил светские мероприятия, любил вкусно поесть и выпить. Он любил женщин, интересных молодых людей — интеллектуальных и необычных»[105]. Задавать ему вопрос было опасно, поскольку он мог долго, серьезно и страстно витийствовать почти на любую тему — от театра и литературы до физики.
Перед аудиторией он устраивал представления не хуже шоумена. Для того чтобы объяснить сохранение количества движения, он мог закрутиться, вытянув руки в стороны, а потом прижать их к туловищу, а чтобы описать понятие действия и противодействия, он становился на самодельный скейтборд и наклонялся назад и вперед (однажды, выполняя этот трюк, он упал и сломал руку). Люди иногда приезжали издалека, чтобы услышать его предрождественскую лекцию в конце семестра, которую колледж устраивал в самой большой аудитории, чтобы поместились все желающие. В ней он объяснял, как спектроскопия и другие физические методы могут помочь определить, что находится в пакете, не разворачивая его. По словам его жены, чего только он не делал: «Он измерял его. Он взвешивал его. Он погружал его в воду. Он протыкал его длинной иглой»[106].
Вспоминая о своем детском увлечении метеорологией, Мокли в начале 1930-х годов выбрал предметом своих исследований вопрос о том, связаны ли крупномасштабные изменения погодных условий с солнечными вспышками, пятнами и вращением Солнца. Ученые из Института Карнеги и Бюро погоды США передали ему записи ежедневных данных от двухсот станций за двадцать лет, и он приступил к вычислению корреляций. Он сумел по дешевке купить подержанные настольные калькуляторы (все это происходило в годы Великой депрессии) у испытывающих трудности банков и нанять через Национальное управление по делам молодежи группу молодых людей для вычислений, платя им по пятьдесят центов за час[107].
Как и другие исследователи, чьи работы требовали утомительных вычислений, Мокли стремился изобрести машину для ускорения расчетов. Со свойственной ему общительностью он приступил к сбору данных о том, что делают другие, и, следуя традициям великих инноваторов, постарался собрать воедино множество идей. В павильоне IBM на Нью-Йоркской всемирной выставке 1939 года он увидел электрический калькулятор, в котором использовались перфокарты, но понял, что их применение было бы слишком медленным, учитывая количество данных, которые нужно обрабатывать. Он также увидел шифровальную машину, которая использовала электронные лампы для кодирования сообщений. Можно ли использовать эти лампы для других логических схем? Он взял своих учеников на экскурсию в Суортмор-колледж, чтобы посмотреть на счетчики, использовавшие схемы, собранные на электронных лампах, для счета вспышек, происходящих при ионизации космическими лучами[108]. Он также прослушал курс вечерних лекций по электронике и начал экспериментировать со схемами на лампах, спаянными собственноручно, чтобы увидеть, как еще их можно использовать.
В сентябре 1940 года на конференции в Дартмутском колледже Мокли увидел калькулятор комплексных чисел Джорджа Роберта Стибица, разработанный в Bell Labs. Демонстрировали его необычным образом: компьютер Стибица находился в здании Bell Labs, расположенном в Нижнем Манхэттене, а результаты передавались в колледж по телетайпной линии. Это был первый компьютер, предназначенный для удаленного использования. В течение трех часов он решал задачи, поставленные аудиторией, тратя около минуты на каждую. Среди присутствовавших на демонстрации был Норберт Винер — основатель кибернетики, который попытался поставить в тупик машину Стибица, попросив ее поделить число на ноль. Машина не попалась в ловушку. Там также присутствовал Джон фон Нейман — венгерский эрудит, который вскоре вместе с Мокли станет играть одну из главных ролей в дальнейшем развитии компьютеров[109].
Когда Мокли решил построить собственной компьютер на лампах, он сделал правильный шаг, с которого должны были бы начинать все хорошие инноваторы: собрал воедино всю информацию, почерпнутую во время своих путешествий. Поскольку колледж Урсинус не получал денег на научно-исследовательскую деятельность и Мокли платил за лампы из своего кармана, он попытался выклянчить их у производителей. Он написал в Supreme Instruments Corp. и попросил передать ему некоторые компоненты, заявив: «Я собираюсь собрать электрическую счетную машину»[110]. Во время визита в Американскую корпорацию радио он обнаружил, что неоновые лампы также можно использовать как переключатели. Они были медленнее, но дешевле электронных ламп, и он купил их про запас по восемь центов за штуку. «До ноября 1940 года, — позже сказала его жена, — Мокли протестировал некоторые компоненты своего будущего компьютера и убедился, что построить дешевое и надежное цифровое устройство с использованием только электронных элементов реально». Она утверждала, что это произошло прежде, чем он даже услышал об Атанасове[111].
В конце 1940 года он признался друзьям, что надеется собрать воедино всю имеющуюся информацию, чтобы сделать цифровую электронную вычислительную машину. «Мы сейчас рассматриваем конструкцию электрической вычислительной машины, — написал он в том ноябре метеорологу, с которым работал. — Машина, в которой будут использоваться ламповые реле, будет выполнять операции примерно в течение 1/200 секунды»[112]. Несмотря на то, что он был общительным и получал информацию от многих людей, ему очень хотелось прослыть первым человеком, сконструировавшим новый тип компьютера. В декабре он написал своему бывшему студенту: «Сообщаю вам конфиденциально, что через год или около того, как только смогу получить компоненты и собрать их вместе, я, вероятно, смогу закончить строительство электронной вычислительной машины… Держите это в тайне, так как в этом году для осуществления этого плана у меня нет оборудования, а я хотел бы быть первым»[113].
В том же декабре 1940 года Мокли довелось познакомиться с Атанасовым, что положило начало серии событий, за которыми последовали годы споров по поводу склонности Мокли собирать информацию из различных источников и его желания «быть первым». Однажды Атанасов, посетив семинар в университете Пенсильвании, заскочил на заседание, на котором Мокли рассказывал о своих планах по созданию машины для анализа данных о погоде. После окончания доклада Атанасов подошел к нему и рассказал, что конструирует электронный калькулятор в университете Айовы. Мокли записал на своей программке конференции, что Атанасов утверждал, что изобрел машину, которая могла обрабатывать и хранить данные при стоимости только 2 доллара за разряд. (Машина Атанасова могла бы обрабатывать и хранить три тысячи двоичных разрядов одновременно и стоила около 6 тысяч долларов.) Мокли был поражен. Он подсчитал, что стоимость компьютера на электронных лампах должна составлять почти 13 долларов на разряд, и сказал, что хотел бы увидеть, откуда берется такая цена. И Атанасов пригласил его приехать в Айову.
На протяжении первой половины 1941 года Мокли переписывался с Атанасовым и продолжал восхищаться низкой заявленной стоимостью его машины. «Стоимость менее чем 2 доллара за разряд звучит почти нереально, и все же, как я понял, вы на этом настаиваете, — написал он. — Ваше предложение посетить Айову показалось сначала довольно фантастическим, но идея начинает казаться мне заманчивой». Атанасов убеждал его принять приглашение: «В качестве вознаграждения я расскажу, как удалось собрать машину стоимостью 2 доллара за разряд»[114].
Визит Мокли к Атанасову
Судьбоносный визит состоялся в июне 1941 года и длился четыре дня[115]. Мокли прибыл поздно вечером в пятницу 13 июня из Вашингтона и привез с собой шестилетнего сына — Джимми, что очень удивило жену Атанасова Луру, которая еще не успела приготовить комнату для гостей. Позже она вспоминала: «Мне пришлось побегать, залезть на чердак, искать дополнительные подушки и все остальное»[116]. Она также приготовила им ужин, так как Мокли приехали голодными. У Атанасовых было трое собственных детей, но Мокли, похоже, считал, что во время его визита Лура будет заботиться о Джимми, что она и делала, хотя и неохотно. Она невзлюбила Мокли. По какому-то поводу она сказала мужу: «Мне он не кажется честным человеком»[117].
Атанасов был готов показать свою частично собранную машину даже несмотря на предупреждение жены, что он слишком доверчив: «Ты должен проявлять осторожность, ведь машина еще не запатентована». Тем не менее на следующее утро Атанасов повел Мокли, а заодно и Луру с детьми в подвал физического факультета, гордо откинул покрывало и показал то, что они с Берри сооружали.
Мокли был впечатлен несколькими вещами. Идея использования конденсаторов в блоке памяти была гениальной и экономичной, так же как и метод Атанасова пополнять их заряд примерно раз в секунду, поместив их на вращающийся цилиндр. У Мокли возникала идея использовать конденсаторы вместо более дорогих электронных ламп, и он оценил, насколько метод Атанасова «встряхивания их памяти» сделал машину работоспособной. Это объясняло, почему стоимость машины могла быть понижена до 2 долларов за разряд. Прочитав описание деталей машины Атанасова, Мокли сделал ряд заметок и спросил, может ли он взять один экземпляр домой. Атанасов отказал ему и потому, что у него не было больше экземпляров (ксероксы еще не были изобретены), и потому, что его беспокоило то, что Мокли и так получил слишком много информации[118].
Но в целом Мокли не особенно проникся тем, что увидел в городе Эймсе, или, по крайней мере, он настаивал на этом, рассказывая позже об этой поездке. Самым большим недостатком машины Атанасова было то, что она не была полностью электронной, в ней имелись механические барабаны конденсаторов, служащие блоками памяти. Это делало ее недорогой, но очень медленной. «Я думал, что его машина гораздо хитроумнее, но так как она оказалась частично механической, в том числе в ней использовались вращающиеся коммутирующие переключатели, она никоим образом не была похожа на то, что я имел в виду, — вспоминал Мокли. — Я больше не интересовался подробностями». Позже в своих показаниях на суде по поводу правомочности его патентов Мокли сказал, что полумеханический характер машины Атанасова вызвал у него «довольно сильное разочарование» и он перестал им интересоваться как «механическим устройством, которое в своей работе использует некоторое количество электронных ламп»[119].
Вторым его разочарованием, как утверждал Мокли, было то, что машина Атанасова была предназначена для решения одной-единственной задачи и не могла быть перепрограммирована или модифицирована для выполнения других задач: «У него не было в планах ничего, что могло бы сделать машину более универсальной и позволило бы ей решать какие-либо другие задачи, кроме решения системы линейных уравнений»[120].
Так Мокли покинул Айову, не найдя там важных идей для конструирования своего компьютера, но привез горстку мыслей, которые добавил в ту корзину идей, которые он сознательно и полусознательно собирал во время поездок по конференциям, колледжам и выставкам. «Я приехал в Айову почти с той же целью, что и на Всемирную выставку и в другие места, — говорил он в своих свидетельских показаниях, — [посмотреть], было ли там то, что могло бы облегчить вычисления»[121].
Как и большинство людей, Мокли черпал информацию и идеи из опыта других людей, бесед с ними и наблюдений — в его случае в Суортморе, Дартмуте, в Bell Labs, RCA, на Всемирной выставке, в Университете Айовы и в других местах. И присоединял их к идеям, которые считал своими собственными. «Новая идея приходит внезапно и скорее интуитивным путем, — однажды сказал Эйнштейн, — но интуиция есть не что иное, как результат накопленного интеллектуального опыта». Когда люди извлекают ценную информацию и идеи из различных источников и собирают все это вместе, для них естественно думать, что результирующие идеи придуманы ими самостоятельно, и в действительности это так и есть. Все идеи рождаются именно так. Мокли считал, что его интуиция и мысли о том, как построить компьютер, были его собственными, а не украденными у других. И несмотря на более поздние юридические вердикты, он был в основном прав, насколько каждый может быть прав, утверждая, что его идеи являются его собственными. Именно так развивается творческий процесс, хотя, возможно, патентное законодательство говорит об ином.
В отличие от Атанасова Мокли мог и любил работать в команде, состоящей из разных талантливых людей. В результате Мокли и его команда вошли в историю как изобретатели первого электронного компьютера общего назначения.
Когда Мокли готовился покинуть Айову, он получил хорошие новости. Он был приглашен в Университет Пенсильвании пройти курс электроники — множество таких курсов, финансируемых в приоритетном порядке военным министерством США, было организовано по всей стране. Это был шанс узнать больше об использовании электронных ламп в электронных схемах, которые, как он теперь был убежден, лучше всего подходили для создания компьютеров. Это иллюстрирует важную роль военного ведомства в эпоху цифровых технологий, всячески стимулировавшего инновации.
Во время этого десятинедельного курса летом 1941 года Мокли получил возможность работать с одной из версий дифференциального анализатора, принадлежащего МТИ, — аналоговым компьютером, разработанным Вэниваром Бушем. Это не только усилило его желание создать свой собственный компьютер, он понял, что ресурсов для его изготовления в таком месте, как Университет Пенсильвании, было намного больше, чем в Урсинус-колледже. Так что когда в конце лета ему было предложено место преподавателя этого университета, он с благодарностью согласился.
Мокли написал о новостях Атанасову. В письме содержались намеки на план действий, который расстроил профессора из Айовы. «Мне недавно пришло в голову несколько разных идей относительно компьютерных схем — некоторые из них являются более или менее гибридными, сочетающими ваши методы с другими, а некоторые из них не имеют ничего общего с вашей машиной, — написал Мокли вполне правдиво. — Вопрос, на мой взгляд, заключается в следующем: есть ли возражения с вашей стороны против строительства мной некоего компьютера, который включает в себя некоторые идеи вашей машины?»[122] По этому письму, последовавшим разъяснениям и показаниям в будущем судебном процессе трудно понять, был ли невинный тон Мокли искренним или притворным.
В любом случае письмо расстроило Атанасова, которому до тех пор не удалось заставить университетского юриста подать какую-либо патентную заявку. Через несколько дней он ответил Мокли довольно резко: «Наш юрист подчеркнул необходимость быть осторожным в распространении информации о нашем устройстве, пока заявка на патент не подана. Это не потребует слишком много времени, и, конечно же, у меня нет сожалений по поводу того, что я рассказал вам о нашем устройстве, но нужно, чтобы на данный момент мы воздержались от обнародования каких-либо подробностей»[123]. Поразительно, но этот обмен письмами еще не заставил ни Атанасова, ни патентного адвоката поспешить с подачей патентной заявки.
В течение той осени 1941 года Мокли доделывал свою версию компьютера, в котором, как он правильно считал, содержались идеи, почерпнутые во множестве разных источников, и который очень отличался от того, что построил Атанасов. Летом, когда он проходил курс по электронике, Мокли встретил замечательного партнера, который подключился к его работе. Это был аспирант, перфекционист, страстно любивший точные технологии, который знал так много об электронике, что был консультантом Мокли на лабораторных занятиях, хотя и был на двенадцать лет его младше (тогда ему было двадцать два) и еще не имел докторской степени.
Дж. Преспер Эккерт
Джон Адам Преспер Эккерт-младший, который в формальной обстановке назывался Дж. Преспером Эккертом, а в неформальной — Пресом, был единственным ребенком в семье миллионера, занимавшегося недвижимостью в Филадельфии[124]. Один из его прапрадедов Томас Миллс изобрел машину, которая изготавливала знаменитые ириски salt water taffy в Атлантик-Сити, и, что важно, создал фирму, которая производила и продавала их. Эккерт ходил в частную школу имени Уильяма Пенна, основанную в 1689 году. Его школьные успехи объяснялись не положением его семьи, а его собственными талантами. В двенадцать лет он стал победителем общегородской научной выставки-ярмарки, собрав систему наведения для моделей лодок, состоящую из магнитов и реостатов, а в четырнадцать лет разработал оригинальный способ замены капризных аккумуляторов, которые применялись в системе внутренней телефонной связи в одном из зданий отца, на устройства, работающие от обычной электрической сети[125].
В старших классах школы Эккерт поражал одноклассников своими изобретениями и даже зарабатывал, собирая радиоприемники, усилители и аудиосистемы. Филадельфия, город Бенджамина Франклина, была тогда крупным центром электроники, и Эккерт проводил время в исследовательской лаборатории Фило Фарнсуорта — одного из изобретателей телевидения. Хотя он был принят в Массачусетский технологический институт и собирался там учиться, родители не захотели его отпустить. Они сделали вид, что понесли финансовые убытки из-за депрессии, надавили на него и уговорили учиться в Пенсильвании и жить дома. Они хотели, чтобы он изучал бизнес, однако он взбунтовался и поступил в университетскую электротехническую школу Мура, поскольку электротехника его интересовала больше.
Публичный триумф Эккерта в Пенсильвании состоялся, когда он сделал устройство, названное им Osculometer — измеритель страстности поцелуя (от латинского слова osculum — поцелуй), который должен был показывать уровень страсти и романтичной заряженности поцелуя. Пара бралась за ручки устройства и начинала целоваться, их губы входили в контакт и замыкали электрическую цепь, в результате чего зажигалось несколько ламп. Нужно было поцеловаться достаточно страстно, чтобы засветились все десять ламп, и тогда начинала выть сирена. Смышленые участники догадались, что влажные губы и потные ладони уменьшают сопротивление в цепи[126]. Эккерт также изобрел устройство, которое использовало метод световой модуляции для записи звука на кинопленку, и это устройство он успешно запатентовал, когда ему исполнился двадцать один год, а он был все еще студентом старшего курса[127].
У Преса Эккерта были свои причуды. В нем бурлила энергия, когда он думал, то расхаживал туда-сюда, кружился по комнате, грыз ногти, а иногда даже влезал на стол. Он носил цепочку от часов, на которой не было часов и которую он вертел в руках, как четки. У него был вспыльчивый характер, но вспышки гнева растворялись в море его обаяния. Перфекционизм он унаследовал от отца, который ходил по строительным площадкам, нося с собой большой набор цветных мелков, и набрасывал ими закорючки-инструкции, причем каждый цвет обозначал определенного работника, ответственного за данное дело. «Он был своего рода перфекционистом и проверял, все ли сделано правильно, — рассказывал его сын. — Но на самом деле он был страшно обаятельным. Чаще всего его задания выполняли люди, которым хотелось их выполнять». Инженер до мозга костей, Эккерт чувствовал, что такие люди, как он сам, были необходимы таким физикам, как Мокли. «Физик — это тот, кто занят поиском истины, — сказал он позднее, — а инженер — это тот, кто озабочен тем, чтобы было сделано дело»[128].
ENIAC
Война стимулирует развитие науки. На протяжении веков, и когда древние греки построили катапульту, и когда Леонардо да Винчи служил военным инженером у Чезаре Борджиа, военные задачи способствовали развитию технологий, и это особенно ярко проявилось в середине ХХ века. Многие из главных технологических прорывов этого периода — компьютеры, высвобожденная атомная энергия, радиолокация и интернет — возникли вследствие решения военных задач.
США вступили во Вторую мировую войну в декабре 1941 года, что послужило толчком для принятия решения о финансировании машины, сконструированной Мокли и Эккертом. Университету Пенсильвании и Абердинскому военному испытательному полигону было поручено составить справочник по выставлению углов при стрельбах из артиллерийских пушек, поставляемых в Европу. Для того чтобы прицельно стрелять из пушки, требовались баллистические таблицы, в которых были бы учтены сотни условий, в том числе температура, влажность, скорость ветра, высота и сорт пороха.
Создание таблицы только для одного вида артиллерийских зарядов, выпускаемых из одной пушки, потребовало бы вычисления трех тысяч траекторий с помощью системы дифференциальных уравнений. Эти вычисления часто проводились с помощью одного из дифференциальных анализаторов, сконструированных в Массачусетском технологическом институте Вэниваром Бушем. Расчеты на анализаторе требовали дополнительных расчетов вручную, чем и занимались более 170 человек, большинство из которых были женщинами. Их называли «расчетчиками», и они сражались с уравнениями, стуча по клавишам и крутя ручки настольных арифмометров. Лучших женщин-математиков собирали по всей стране. Но несмотря на все эти усилия, потребовалось более месяца, чтобы составить только одну таблицу траекторий стрельб. К лету 1942 года стало ясно, что с каждой неделей составление таблиц все больше отстает и это обесценивает некоторые виды поставляемой США артиллерийской техники.
В августе Мокли предложил способ помочь армии решить эту проблему, увеличив скорость расчетов. В своей докладной записке, названной «Использование высокоскоростных ламповых устройств для расчетов», он просил профинансировать создание машины, которую они с Эккертом спроектировали: цифровой электронной вычислительной машины, использующей схемы на электронных лампах, которая могла бы решать дифференциальные уравнения и выполнять другие математические задачи. Он писал: «Если использовать устройства, в которых применяются электронные компоненты, можно получить огромный выигрыш в скорости расчета». Он даже подсчитал, что траектория снаряда могла бы быть рассчитана за «100 секунд»[129].
Докладная записка Мокли была проигнорирована деканами Пенна, но ее довели до сведения офицера, прикомандированного к университету, — лейтенанта (вскоре ставшего капитаном) Германа Голдстайна, двадцатидевятилетнего профессора математики из Университета Мичигана. Его задача состояла в том, чтобы ускорить составление баллистических таблиц, и в какой-то момент он отправил свою жену Адель, также математика, в поездку через всю страну, чтобы набрать больше женщин в батальоны «расчетчиков» Пенна. Записка Мокли убедила его, что для этого есть лучший способ.
Решение военного министерства США профинансировать строительство электронного компьютера состоялось 9 апреля 1943 года. Накануне Мокли и Эккерт не спали всю ночь, работая над своим предложением, но так и не закончили его к тому моменту, когда нужно было садиться в автомобиль, который должен был за два часа доставить их из Пенна на полигон в Абердине (штат Мэриленд), где собрались чиновники отдела вооружений. Поскольку за рулем был лейтенант Голдстайн, они сидели на заднем сиденье и писали недописанные разделы, и они продолжили работать в маленькой комнате, даже когда прибыли в Абердин, а Голдстайн в это время пошел на совещание. Оно прошло под председательством Освальда Веблена, президента Института перспективных исследований в Принстоне, который консультировал военных по математическим проектам. Там присутствовал и полковник Лесли Саймон, директор баллистической научно-исследовательской лаборатории. Голдстайн вспоминал, как это происходило: «Веблен, послушав некоторое время мое выступление и качаясь на задних ножках своего стула, с грохотом опустил его, встал и сказал: „Саймон, дай Голдстайну деньги“. С этими словами он вышел из комнаты, и встреча закончилась на этой радостной ноте»[130].
Мокли и Эккерт включили свою докладную записку в статью, которую они озаглавили «Отчет об электронном дифф. анализаторе». Использование сокращения «дифф.» (diff.) имело двойной смысл — оно обозначало и разности (differences), которые отражали цифровой характер предлагаемой машины, и дифференциальные (differential) уравнения, которые предполагалось решать. Вскоре ей было дано более запоминающееся имя: ENIAC, что в переводе означает «электронный цифровой интегратор и компьютер». Несмотря на то, что ENIAC был разработан в первую очередь для решения дифференциальных уравнений, которые являются ключевыми в расчетах траекторий снарядов, Мокли написал в статье, что он может быть дополнен «программатором» и это позволит ему решать другие задачи, что сделает его компьютером более общего назначения[131].
Строительство ENIAC началось в июне 1943 года. Мокли, который продолжал вести преподавательскую работу, работал в качестве консультанта и стратега. Голдстайн, как представитель военных, руководил производственным процессом и бюджетом. А Эккерт, с его страстью к деталям и перфекционизму, был главным инженером. Эккерт настолько погрузился в проект, что иногда оставался спать рядом с машиной. Однажды два инженера в шутку осторожно перенесли его раскладушку в такую же комнату этажом выше, и когда он проснулся, то на какое-то мгновение испугался, что машину украли[132].
Зная, что и величайшие идеи мало чего стоят без точного воплощения (урок, который усвоил Атанасов), Эккерт взял на себя каждодневное управление процессом сборки. Он носился между инженерами и указывал им, где припаять соединение или закрутить проволоку. Сам он рассказывал: «Я контролировал работу каждого инженера и проверял расчет каждого резистора в машине, чтобы убедиться, что все сделано правильно». Он презирал тех, кто отмахивался от скучных дел. «Жизнь состоит из целого набора мелочей, — сказал он однажды. — Безусловно, компьютер есть не что иное, как огромный набор тривиальных вещей»[133].
Эккерт и Мокли дополняли друг друга, и подобные дуэты, которые обеспечивали два центра управления, были характерны для цифровой эры. Эккерт допекал исполнителей своим педантизмом, Мокли же, как правило, успокаивал их, давал им почувствовать свою ценность. «Он всегда шутил с людьми, — вспоминал Эккерт, — он умел обаять». Эккерт, чьи технические таланты сочетались с нервозностью и неожиданными приступами рассеянности, очень нуждался в интеллектуальном собеседнике, и Мокли нравилась эта роль. Хотя Мокли и не был инженером, он умел так увязать научные теории с инженерными практическими вопросами, что это вдохновляло Эккерта. Позже он признался: «Мы сделали это вместе, и я не думаю, что кто-то из нас сделал бы это в одиночку»[134].
ENIAC был цифровой машиной, но вместо двоичной системы, которая использовала только 0 и 1, ее счетчики были рассчитаны на десятичную систему. В этом смысле она была не похожа на современный компьютер. Но в остальном она была более продвинутой, чем машины, построенные Атанасовым, Цузе, Айкеном и Стибицем. В ней была заложена возможность так называемого условного ветвления (описанного Адой Лавлейс веком ранее), то есть возможности переходов в программе, зависящих от промежуточных результатов, и она могла повторять блоки команд (подпрограммы), что позволяло выполнять общие задачи. Эккерт объяснял: «У нас была возможность включать в программы подпрограммы и подпрограммы подпрограмм». Он вспоминал, что, когда Мокли предложил заложить эту функцию в машину, он «сразу понял, что это идея, которая станет ключевой для всей конструкции»[135].
Через год после начала строительства, примерно во время операции D-Day[136] — в июне 1944 года, Мокли и Эккерт уже смогли проверить первые два компонента, составляющие примерно одну шестую часть всего запланированного в машине. Они начали с простой задачи умножения, и когда машина выдала правильный ответ, они восторженно закричали. Но для того чтобы привести ENIAC полностью в рабочее состояние, потребовалось больше года — они закончили в ноябре 1945 года. К этому моменту машина была в состоянии выполнять пять тысяч сложений и вычитаний в секунду, то есть в сто с лишним раз быстрее, чем любая предыдущая машина. Машина была примерно 30 метров в длину и около 2,5 метра в высоту, она весила около тридцати тонн и включала в себя 17 468 электронных ламп. Для сравнения: компьютер Атанасова — Берри, в то время томившийся в подвале Университета Айовы, был размером с письменный стол, в нем было только триста ламп, и он мог выполнять только тридцать сложений или вычитаний в секунду.
Блетчли-Парк
В конце 1943 года другой электронный компьютер, использующий электронные лампы, собирали в условиях строгой секретности в подвале викторианской усадьбы из красного кирпича, расположенной в городе Блетчли. Но в то время немногие посторонние знали об этом и не будут знать еще в течение более трех десятилетий. Блетчли — городок примерно в девяноста километрах к северо-западу от Лондона, и там англичане собрали команду гениальных теоретиков и инженеров для того, чтобы взломать немецкие коды, используемые теми во время войны. Компьютер, названный Colossus, был первым полностью электронным, частично программируемым компьютером. Поскольку машина была предназначена для решения определенной задачи, она не была машиной общего назначения, но в его конструкции проявилось влияние Алана Тьюринга.
Тьюринг начал интересоваться кодами и криптологией осенью 1936 года, когда сразу после написания статьи «О вычислимых числах» прибыл в Принстон. Он объяснил свой интерес к криптологии в письме к матери в октябре того же года:
Я только что обнаружил возможное применение тех идей, над которыми я работаю в настоящее время. Они отвечают на вопрос: «Каков наиболее общий возможный вид кода или шифра» и в то же время (что довольно естественно) позволяют мне построить много специфических и интересных кодов. Один из них почти невозможно раскодировать без ключа, и им очень быстро кодировать. Я думаю, я мог бы продать их правительству его величества за довольно внушительную сумму, но сомневаюсь, что это этично. Что ты думаешь по этому поводу?[137]
В следующем году, поскольку Тьюринга тревожила угроза войны с Германией, он стал больше интересоваться криптографией и меньше — попытками заработать на ней деньги. В конце 1937 года, работая в механической мастерской физического факультета Принстонского университета, он сконструировал первые элементы кодирующей машины, в которой буквы превращались в двоичные числа, а затем это закодированное числовое сообщение умножалось с помощью электромеханических реле в качестве переключателей на огромное секретное число. В результате сообщение было практически невозможно расшифровать.
Одним из наставников Тьюринга в Принстоне был Джон фон Нейман — блестящий физик и математик, бежавший из родной Венгрии и работавший в Институте перспективных исследований, в то время располагавшемся в здании математического факультета Принстонского университета. Весной 1938 года, когда Тьюринг закончил докторскую диссертацию, фон Нейман предложил ему место своего ассистента. Над Европой в это время сгущались тучи приближающейся войны, так что предложение было заманчивым, но Тьюринг чувствовал, что остаться было бы непатриотично. Он решил вернуться к своей работе в качестве стипендиата в Кембридже, а вскоре после приезда присоединился к группе британских инженеров и ученых, работавших над взломом немецких военных кодов.
Школа кодирования и шифрования была в то время расположена в Лондоне, и там работали в основном гуманитарии, такие как Дилливан Нокс — «Дилли», профессор классической литературы из Кембриджа, и Оливер Стрэчи — дилетант, светский лев, периодически музицировавший на фортепиано и писавший об Индии. До осени 1938 года, когда Тьюринг присоединился к команде, среди восьмидесяти сотрудников не было математиков. Но следующим летом, когда Великобритания начала готовиться к войне, в отдел стали активно набирать математиков. В какой-то момент для отбора претендентов даже проводился конкурс, включавший решение кроссворда из Daily Telegraph. Отдел тогда переехал в унылый городок Блетчли, главным преимуществом которого было то, что он находился на пересечении железной дороги, связывающей Оксфорд с Кембриджем, и дороги из Лондона в Бирмингем. Команда из Британской службы внешней разведки (МИ-6), выдавая себя за «Стрелковый клуб капитана Ридли[138]», посетила усадьбу Блетчли-Парк — чудище, построенное в стиле викторианской готики, которое его владелец давно хотел снести, и незаметно купила его. Взломщики кодов помещались в коттеджах, конюшнях и нескольких сборных домиках-хижинах, возведенных в прилегающем к дому парке[139].
Тьюринг был приписан к команде, работающей в хижине № 8 и пытавшейся разгадать немецкий код Enigma («Загадка»), который генерировался с помощью одноименной портативной машины, включавшей механические роторы и электрические цепи[140]. Она кодировала секретные сообщения с помощью шифра, который после каждого удара по клавише изменял правило для замены буквы. Процесс дешифровки был таким сложным, что англичане в какой-то момент отчаялись когда-либо сделать это. Прорыв произошел, когда польские офицеры разведки создали машину на основе трофейной немецкой шифровальной машины, с помощью которой удалось взломать некоторые коды «Энигмы»[141]. Однако к тому времени, когда поляки показали британцам свою машину, она была уже более-менее бесполезной, поскольку к своей машине немцы добавили еще два ротора и подсоединили еще две коммутационные панели.
Тьюринг и его команда начали работать над созданием более сложной машины, получившей название «Бомба», которая могла бы расшифровать сообщения с обновленной «Энигмы», в частности приказы по военно-морскому флоту, позволяющие следить за перегруппировкой подводных лодок, истреблявших британские конвои. «Бомба» использовала разнообразные слабые места в кодировании, в том числе то, что никакие буквы не могли быть зашифрованы по отдельности, и то, что некоторые фразы немцы в своих сообщениях неоднократно повторяли. К августу 1940 года команда Тьюринга имела две работающие «Бомбы», которые смогли расшифровать 178 закодированных сообщений; к концу войны их было построено около двухсот машин.
«Бомба», сконструированная Тьюрингом, не стала крупным шагом вперед в развитии компьютерной технологии. Это было электромеханическое устройство с реле в качестве переключателей и роторами, а не электронное устройство на лампах и электронных схемах. Но следующая машина, сконструированная в Блетчли-Парке, — Colossus стала такой важной вехой.
Необходимость в Colossus возникла тогда, когда немцы начали кодировать важные сообщения, например приказы Гитлера и его верховного командования, с помощью электронной цифровой машины, которая использовала двоичную систему и двенадцать кодирующих дисков (роторов) неодинакового размера. Электромеханические «Бомбы», разработанные Тьюрингом, были бессильны расшифровать такие сообщения. Для них требовались устройства, использующие молниеносно работающие электронные схемы.
Ответственная за эту проблему команда расположилась в хижине її, она называлась «Ньюманри» в честь ее руководителя — Макса Ньюмана, преподавателя математики, который почти за десять лет до того познакомил Тьюринга с проблемами Гильберта. Техническим руководителем работ был назначен партнер Ньюмана, ас в электронике и специалист по электронным лампам Томми Флауэрс, который до того работал на исследовательской станции почтамта в Доллис-Хилл, пригороде Лондона.
Тьюринг не был частью команды Ньюмана, но придумал статистический подход, получивший название «Тьюрингери», с помощью которого обнаруживались любые отклонения от равномерного распределения символов в потоке зашифрованного текста. В результате была построена машина, которая с помощью фотоэлектрических головок могла сканировать два рулона перфорированной бумажной ленты и сравнивать все возможные изменения в двух последовательностях. Машина получила название «Хит Робинсон» в честь британского художника-карикатуриста, который, как и Руби Голдберг в Америке, любил изображать сложные, но бессмысленные механические устройства.
В течение почти десятилетия Флауэрс был увлечен конструированием электронных схем на лампах, которые он и другие британцы называли valves («вентили»). В 1934 году, когда он работал инженером телефонного подразделения почтамта, Флауэрс создал экспериментальную систему, в которой использовалось больше трех тысяч ламп для контроля соединений тысячи телефонных линий. Он первым предложил использовать электронные лампы для хранения данных. Тьюринг предложил пригласить Флауэрса для помощи в изготовлении «Бомб», а затем представил его Ньюману.
Флауэрс понял, что единственный способ достаточно быстро дешифровать закодированные сообщения немцев — попытаться сохранить по крайней мере одно из них во внутренней электронной памяти машины, а не сравнивать два рулона перфорированной бумажной ленты. Такая память потребовала бы использования 1500 электронных ламп. Сначала руководители из Блетчли-Парка были настроены скептически, но Флауэрс настоял на своем, и в декабре 1943 года, всего через одиннадцать месяцев, он закончил первый вариант Colossus. А к 1 июня 1944 года была готова еще более громоздкая версия, использующая 2400 электронных ламп. В первом декодированном перехваченном сообщении говорилось, что Гитлер не посылает дополнительные войска в Нормандию, и оно подтвердило информацию из других источников, уже поступившую к генералу Дуайту Эйзенхауэру, готовому вот-вот начать вторжение в Нормандию. В течение года было произведено еще восемь Colossus.
Это означало, что задолго до ENIAC, который так и не заработал до ноября 1945 года, британские взломщики кодов построили полностью электронный и цифровой (в действительности двоичный) компьютер. Вторая версия, построенная в июне 1944 года, была способна даже производить некоторое условное ветвление. Но в отличие от ENIAC, который включал в себя в десять раз больше ламп, Colossus был специализированной машиной, предназначенной для взлома кодов, а не компьютером общего назначения. Из-за ограниченной программируемости он не мог решать все вычислительные задачи, которые мог (в теории) ENIAC.
Так кто же изобрел компьютер?
В вопросе о том, кому отдать пальму первенства в создании компьютера, полезно начать с определения сущности компьютера. В самом общем виде под определение компьютера могут попасть всевозможные устройства — от арифмометра до айфона. Но при составлении хроники цифровой революции имеет смысл следовать принятым современным определениям компьютера. Вот некоторые из них:
«Программируемое, обычно электронное устройство, которое может хранить, извлекать и обрабатывать данные» (словарь Merriam-Webster).
«Электронное устройство, которое может получать информацию (данные) в определенной форме и выполнять последовательность операций в соответствии с предварительно заданным, но изменяемым набором процедурных инструкций (программой) для получения результата» (Оксфордский английский словарь).
«Устройство общего назначения, которое может быть запрограммировано для автоматического выполнения набора арифметических или логических операций» («Википедия», 2014).
Таким образом, идеальный компьютер — это машина, которая является электронным и программируемым устройством общего назначения. Какой же компьютер правильнее считать первым?
Модель K Джорджа Роберта Стибица, которую тот начал строить на своем кухонном столе в ноябре 1937 года, в январе 1940 года в Bell Labs трансформировалась в полнофункциональную модель и стала двоичным компьютером и первым устройством с удаленным доступом. Но в ней использовались электромеханические реле, и, таким образом, она не была полностью электронной. Она не была также ни программируемой, ни универсальной, а предназначалась для решения определенной задачи.
Строительство машины Z3 Германа Цузе было завершено в мае 1941 года, и она стала первым автоматически контролируемым, программируемым электрическим двоичным устройством. Она была разработана для решения инженерных проблем, а не для решения общих задач. Тем не менее позже было показано, что теоретически ее можно было бы использовать в качестве тьюринг-полной машины. Ее главное отличие от современных компьютеров состояло в том, что она была электромеханической, а не электронной. Скорость ее работы определялась медленно срабатывающими переключателями — щелкающими реле. Другим недостатком являлось то, что она никогда не пошла в серию, поскольку была разрушена в результате бомбардировок союзниками Берлина в 1943 году.
Создание компьютера, сконструированного Джоном Винсентом Атанасовым, было остановлено в тот момент, когда Атанасов перестал им заниматься, уйдя служить в ВМФ в сентябре 1942 года, и его компьютер так и не стал полноценно работающим. Он был первым электронным цифровым компьютером в мире, но все-таки не полностью электронным. В его устройствах сложения и вычитания действительно использовались электронные лампы, но блоки памяти и извлечения данных содержали механические вращающиеся барабаны. Другим его основным недостатком, не позволяющим считать его первым современным компьютером, было то, что он не был ни программируемым, ни универсальным, а, напротив, был жестко ориентирован на специальную задачу решения линейных уравнений. Кроме того, Атанасов никогда не смог заставить его работать полноценно, и он был похоронен в подвале Университета Айовы.
Colossus I, завершенный в декабре 1943 года Максом Ньюманом и Томми Флауэрсом (с участием Алана Тьюринга) в Блетчли-Парке, был первым цифровым полностью электронным компьютером, который был и программируемым, и работающим. Он не был, однако, компьютером общего назначения или тьюринг-полной машиной, поскольку предназначался для решения определенной задачи — взлома военных кодов Германии.
Компьютер Mark I Говарда Айкена, построенный с участием IBM и введенный в эксплуатацию в мае 1944 года, был, как мы увидим в следующей главе, программируемым, но это было электромеханическое, а не электронное устройство.
ENIAC, построенный Преспером Эккертом и Джоном Мокли в ноябре 1945 года, был первой машиной, включающей в себя полный набор черт современного компьютера. Он был полностью электронным, сверхбыстрым, и его можно было программировать с помощью подключения и отключения соответствующих кабелей, соединяющих различные его блоки. Он мог менять ветвь программы в зависимости от промежуточных результатов и считался компьютером общего назначения, тьюринг-полной машиной, то есть теоретически мог решать любую задачу. Самое главное его достоинство — в том, что он работал. «Важная черта изобретения, — позже сказал Эккерт, сравнивая их машину с машиной Атанасова, — когда вся ваша система работает как целое»[142]. Мокли и Эккерт сами проделали на своей машине некоторые очень сложные вычисления, и в течение последующих десяти лет она постоянно использовалась. Она стала прототипом для большинства последующих компьютеров.
Этот последний фактор имеет важное значение при определении того, кто должен стать наиболее известным в истории. Когда мы отдаем пальму первенства, мы смотрим в том числе на то, чей вклад оказал наибольшее влияние. Изобретение предполагает какое-то влияние и на ход истории в целом, и на развитие инноваций. Если использовать в качестве критерия роль в истории, то следует считать Эккерта и Мокли наиболее выдающимися инноваторами. Почти во всех компьютерах 1950-х годов прослеживается влияние ENIAC. Влияние Флауэрса, Ньюмана и Тьюринга сложнее оценить. Их работа была строжайшим образом засекречена, но все трое и после войны участвовали в создании британских компьютеров. Цузе, который работал в Берлине под обстрелом в одиночестве, оказал еще меньше влияния на повсеместное развитие компьютерной технологии. Что касается Атанасова, его основное влияние, а возможно и единственное, состояло в том, что во время визита к нему Мокли он вдохновил того несколькими своими идеями.
Вопрос о том, какие идеи Мокли присвоил в ходе своего четырехдневного визита к Атанасову в Айову в июне 1941 года, перешел в затяжной правовой спор. В связи с этим при оценке первенства на изобретение возникает еще один критерий — скорее юридический, чем исторический: кто в конечном итоге получил патент, если кто-то получил вообще? В случае с первыми компьютерами не получил патента никто. Но это произошло в результате одиозной судебной баталии, которая привела к тому, что патенты Эккерта и Мокли были аннулированы[143].
Эпопея началась в 1947 году, когда Эккерт и Мокли после ухода из Пенна подали заявку на патент на их работы по ENIAC, и в конце концов патент был получен в 1964 году (патентная система работает довольно медленно). К этому времени компания Эккерта — Мокли вместе с ее правами на патенты была продана компании Remington Rand, которая стала называться Sperry Rand, и она и потребовала от других компаний платить ей лицензионные отчисления. IBM и Bell Labs решили платить, но Honeywell отказалась и начала искать пути оспорить патенты. Наняли молодого адвоката — Чарльза Колла, который имел степень по инженерии и работал в Bell Labs. Его цель состояла в том, чтобы аннулировать патент Эккерта — Мокли, доказав, что патентуемые положения не были оригинальными.
Получив рекомендации от адвоката Honeywell, который съездил в Университет Айовы и почитал про сконструированный Атанасовым компьютер, Колл посетил Атанасова в его доме в штате Мэриленд. Атанасов был польщен осведомленностью Колла о деталях его компьютера и обижен тем, что так и не получил должного признания, поэтому он передал Коллу сотни писем и документов, доказывавших, что Мокли присвоил некоторые идеи во время своего визита в Айову. Тем же вечером Колл поехал в Вашингтон и прослушал лекцию Мокли, сидя в заднем ряду. В ответе на вопрос о машине Атанасова Мокли сказал, что он едва взглянул на нее. Колл понял, что если бы он мог вынудить Мокли сказать это же под присягой, то сумел бы дискредитировать его в суде с помощью документов, полученных от Атанасова.
Когда спустя несколько месяцев Мокли понял, что с помощью Атанасова Honeywell может оспорить его патенты, он сам приехал к Атанасову домой в Мэриленд, взяв с собой адвоката Sperry Rand. Это была неловкая встреча. Мокли утверждал, что во время его визита в Айову он не разбирался в подробностях докладной записки Атанасова и не рассматривал детали его компьютера, но Атанасов холодно возразил, что это не так. Мокли остался на ужин и попытался обаять Атанасова, но безрезультатно.
В июне 1971 года вопрос уже рассматривался в Миннеапо-лисском суде, председательствовал федеральный судья Эрл Ларсон. Мокли представил неубедительные свидетельства. Ссылаясь на плохую память, он сбивчиво рассказал о том, что увидел во время своего визита в Айову, неоднократно отказывался от утверждений, сделанных ранее, говорил, что он видел компьютер Атанасова только частично приоткрытым и в тусклом свете. Атанасов, напротив, был очень убедительным. Он описал построенную им машину, продемонстрировал модель и перечислил, какие идеи Мокли взял у него. Семьдесят семь свидетелей были вызваны для дачи показании, еще восемьдесят дали письменные показания под присягой, кроме того, было описано 32 600 вещдоков. Судебное разбирательство длилось более девяти месяцев, и таким образом оно стало самым длинным разбирательством федерального суда по подобным вопросам.
Судье Ларсону потребовалось еще девятнадцать месяцев, чтобы подготовить окончательное решение, которое и было оглашено в октябре 1973 года. В нем он постановил, что патент Эккерта — Мокли на ENIAC недействителен: «Эккерт и Мокли не первыми изобрели автоматический электронный цифровой компьютер, а позаимствовали этот объект изобретения у доктора Джона Винсента Атанасова»[144]. Вместо того чтобы подать апелляцию, Sperry договорился с Honeywell[145].
Мнение судьи, изложенное на 248 страницах, было тщательно выверенным, но в нем не были рассмотрены некоторые существенные различия между машинами. Мокли взял не так много из машины Атанасова, как, кажется, думал судья. Например, в электронной схеме Атанасова использовалась двоичная логика, в то время как у Мокли был десятичный счетчик. Если бы патентные претензии Эккерта — Мокли были менее амбициозными, патент бы, наверное, выжил.
Случай был неоднозначным даже с юридической точки зрения, поскольку суд должен был определить, в какой пропорции распределяются заслуги по изобретению современного компьютера. Но этот судебный процесс имел два важных последствия: он вывел Атанасова из забвения, и он очень ясно продемонстрировал (хотя это и не входило в намерения судьи или любой из сторон), что великие инновации, как правило, появляются в результате суммирования идей, зародившихся в большом количестве источников. Изобретение, особенно такое сложное, как компьютер, как правило, появляется не в результате отдельного мозгового штурма, а в процессе совместного творчества. Мокли посетил множество мест и разговаривал со многими людьми. Это, возможно, затруднило патентование изобретения, но не уменьшило влияния, которое оно оказало.
Мокли и Эккерт должны быть в верхней части списка людей, которым принадлежит заслуга изобретения компьютера, и не потому, что все их идеи были собственными, а потому, что они смогли выловить ценные идеи в разных местах, добавить свои разработки, воплотить в жизнь свое видение машины с помощью собранной ими компетентной команды и оказать сильнейшее влияние на ход последующих событий. Машина, которую они построили, была первой электронно-вычислительной машиной общего назначения. Эккерт позже сказал: «Атанасов хоть и выиграл процесс в суде, но он вернулся к преподаванию, а мы продолжили строительство первых реальных электронных программируемых компьютеров»[146].
Следует также признать большие заслуги Тьюринга и в разработке концепции универсального компьютера, и в последующем участии в работе команды в Блетчли-Парке. Как оценить исторический вклад других инноваторов — в какой-то степени зависит от критериев оценки. Если вам импонирует романтика творчества одиноких изобретателей и при этом вы меньше озабочены тем, кто в историческом плане больше повлиял на развитие компьютерной техники, вы можете поставить Атанасова и Цузе на первые места. Но главный урок, который можно извлечь из истории рождения компьютеров, состоит в том, что инновации, как правило, возникают, когда объединяются усилия «провидцев» и инженеров, и что творчество питается из различных источников. Только в сказках изобретение возникает подобно грому среди ясного неба или лампочке, загорающейся в голове одиночки, творящего в подвале, на чердаке или в гараже.
Глава 3
Программирование
До появления современного компьютера оставался еще один важный шаг. Все машины, построенные во время войны, проектировались, по крайней мере на начальном этапе, для выполнения конкретной задачи, например для решения уравнений или расшифровки кодов. Настоящий компьютер, как он виделся Аде Лавлейс, а затем Алану Тьюрингу, должен был уметь легко и быстро выполнять любую логическую операцию. Это потребовало создания машин, работа которых определялась бы не только их hardware (аппаратным устройством), но и software, то есть программным обеспечением — набором команд, по которым эти машины могли работать. Тьюринг изложил эту концепцию совершенно ясно. «Нам не нужно бесконечного количества различных машин, решающих различные задачи, — писал он в 1948 году. — Достаточно одной. Инженерная задача конструирования различных машин для выполнения различных задач заменяется интеллектуальной работой по „программированию“ универсальной машины для выполнения всех этих задач»[147].
Теоретически такие машины, как ENIAC, могут быть запрограммированы на разные задачи и даже сойти за машины общего назначения. Но на практике загрузка новой программы была трудоемким процессом и часто требовала переключения вручную кабелей, связывающих различные блоки компьютера. Машины военного времени не могли мгновенно переключаться с программы на программу, как это делают современные компьютеры. И для создания современного компьютера потребовался следующий гигантский шаг: выяснить, как сохранять программы внутри электронной памяти машины.
Грейс Хоппер
Начиная с Чарльза Бэббиджа, мужчины, конструировавшие компьютеры, сосредотачивались в первую очередь на аппаратном устройстве. Но во время Второй мировой войны в процесс развития вычислительных машин были вовлечены женщины, которые уже на начальной стадии поняли важность программирования, так же как раньше это поняла Ада Лавлейс. Они разработали способы кодирования инструкций, которые давали указания аппаратуре, какие операции выполнять. Именно в программном обеспечении заложены магические формулы, способные чудодейственным образом преобразить машины.
Самой колоритной из первых женщин-программисток была смелая и энергичная, но в то же время очаровательная и интеллигентная Грейс Хоппер, служившая офицером в ВМС США. Позже она работала с Говардом Айкеном в Гарварде, а затем с Преспером Эккертом и Джоном Мокли. Родилась Грейс Брюстер Мюррей в 1906 году в зажиточной семье, проживавшей в Верхнем Вест-Сайде на Манхэттене. Ее дед был инженером и брал ее с собой в поездки на топографические съемки в окрестностях Нью-Йорка, мать была математиком, а отец — страховым агентом. Она окончила Вассар, защитив диплом в области математики и физики, а затем поступила в Йельский университет, где в 1934 году получила докторскую степень по математике[148].
Полученное ею образование было не так уж необычно, как можно было бы подумать. Она была одиннадцатой женщиной, получившей докторскую степень по математике в Йельском университете, первая получила степень в 1895 году[149]. Для женщины, особенно из процветающего семейства, в 1930 году получение докторской степени по математике не было такой уж редкостью. На самом деле, тогда это было более распространено, чем в следующем поколении. В 1930-х годах 113 американских женщин получили докторскую степень по математике, то есть на них пришлось 15 процентов от общего числа всех американских докторских степеней по математике, полученных за эти годы. В 1950-х годах их было только 106 за десять лет, то есть 4 % от общего числа. (За первое десятилетие 2000-х годов ситуация стала более чем нормальной, и 1600 женщин, то есть 30 % от общего числа, получили докторские степени по математике.)
Выйдя замуж за профессора сравнительной литературы Винсента Хоппера, Грейс поступила на работу в Вассар и стала преподавать математику. В отличие от большинства преподавателей этого предмета она требовала, чтобы ее ученики умели письменно излагать мысли. Свой курс по теории вероятности она начинала с лекции об одной из своих любимых математических формул[150] и просила учеников написать эссе о ней. Этим она добивалась ясности в изложении и стиле. «Я могла испещрить их тексты [эссе] замечаниями, и поднимался бунт, они могли возмущаться, что это курс математики, а не английского, — вспоминала она. — Тогда я объясняла им, что нет смысла пытаться изучать математику, если они не могут общаться с другими людьми»[151]. На протяжении всей своей жизни она лучше всех справлялась с переводом научных задач (таких как нахождение траекторий, движение потока жидкости, динамика взрывов и погодных условий) в математические уравнения и с описанием их на обычном языке. Этот талант помог ей стать хорошим программистом.
К 1940 году Грейс Хоппер стало скучно. У нее не было детей, брак уже превратился в рутину, преподавание математики не настолько увлекало ее, как она надеялась. Она взяла на время отпуск в Вассаре и решила поучиться у известного математика Рихарда Куранта в Нью-Йоркском университете, сфокусировавшись на методах решения частных дифференциальных уравнений. Когда японцы напали на Перл-Харбор в декабре 1941 года, она все еще училась у Куранта. Вступление Америки во Вторую мировую войну предоставило ей шанс изменить свою жизнь, и она воспользовалась им: в течение следующих восемнадцати месяцев она бросила Вассар, развелась с мужем и в возрасте тридцати шести лет вступила в ВМС США. Ее послали в Школу мичманского резерва в колледже Смита в штате Массачусетс, и в июне 1944 года она окончила ее лучшей в своем классе, став лейтенантом Грейс Хоппер.
Она предполагала, что будет назначена в группу криптографии и кодирования, но, к ее удивлению, ей было приказано явиться в Гарвардский университет для работы на машине Mark I — исполинском цифровом компьютере с неуклюжими электромеханическими реле и поворотным валом, приводимым в движение моторчиком. Эта машина, описанная выше, была сконструирована Говардом Айкеном в 1937 году. К тому времени, когда Хоппер была прикомандирована к машине, машиной распоряжались ВМС; Айкен по-прежнему работал с ней, но уже как офицер ВМС, а не как профессор Гарварда.
Когда в июле 1944 года Хоппер приступила к исполнению своих обязанностей, Айкен дал ей копию мемуаров Чарльза Бэббиджа, повел показать Mark I и сказал: «Это вычислительная машина». Некоторое время Хоппер просто молча на нее смотрела. «Все это выглядело как груда механизмов, издающих страшный грохот, — вспоминала она, — все было оголено, открыто и очень шумно»[152]. Понимая, что ей придется полностью в этом разобраться и научиться справляться с машиной, Хоппер ночи напролет изучала чертежи. Ее сильной стороной было умение понять, как перевести реальные задачи на язык математических уравнений (чем она занималась в Вассаре), а затем — в команды, которые машина сможет понять. «Я изучала терминологию, принятую в океанографии, во всех этих делах, связанных с разминированием, детонаторами, взрывателями дистанционного действия, в биомедицине, — рассказывала она. — Мы должны были выучить все их термины для того, чтобы иметь возможность решать их задачи. Я могла говорить о чем-то на сугубо техническом языке, а спустя несколько часов переключиться на совершенно другую лексику, говоря о том же с руководством». Инновациям необходимы словесные формулировки.
Оценив умение Хоппер точно излагать мысли, Айкен поручил ей написать инструкцию, которая должна была стать первым в мире руководством по компьютерному программированию. Однажды он сказал, стоя рядом с ее столом:
— Ты должна написать книгу.
— Я не могу написать книгу, — ответила она. — Я еще ни одной не написала.
— Ну, ты сейчас в армии, — сказал он. — И ты сможешь ее написать[153].
В результате появилась пятисотстраничная книга, которая и рассказывала об истории создания компьютера Mark I, и была руководством по программированию на нем[154]. В первой главе описывались счетные машины, построенные до него, в основном те, которые сконструировали Паскаль, Лейбниц и Бэббидж. На фронтисписе была картинка, изображающая часть разностной машины Бэббиджа, которую Айкен установил в своем кабинете, а в качестве эпиграфа Хоппер взяла фразу из книги Бэббиджа. Она поняла, как в свое время и Ада Лавлейс, что аналитическая машина Бэббиджа обладала особым свойством. И она, и Айкен надеялись, что этим же свойством будет обладать компьютер Mark I /Harvard (и это должно было отличать его от других современных ему компьютеров): как и непостроенная машина Бэббиджа, Mark I Айкена должен был уметь перепрограммироваться на новые инструкции, поскольку получал их с помощью перфокарт.
Каждый вечер Хоппер читала Айкену страницы, написанные за день, и он научил ее простому трюку, используемому хорошими писателями. Она рассказывала: «Он подсказал, что, если ты запинаешься, пытаясь прочитать какое-то место вслух, фразу лучше исправить. Каждый день я должна была прочитать ему пять страниц, которые я за этот день написала»[155]. Ее тексты стали простыми, емкими и понятными. Тесное сотрудничество Хоппер и Айкена напоминает нам сотрудничество Ады Лавлейс и Бэббиджа. Чем больше Хоппер узнавала об Аде Лавлейс, тем больше отождествляла себя с ней. «Она впервые написала цикл в программе, — говорила Хоппер. — И я никогда этого не забуду. Никто из нас никогда не забудет»[156].
В исторических главах своего руководства Хоппер сосредоточилась на вкладе разных людей в развитие компьютерной техники, и в результате ее книга подчеркивала роль отдельных персонажей.
Но вскоре после того, как книга Хоппер была закончена, ведущие сотрудники IBM написали собственную историю создания компьютера Mark I, в которой доказывалось, что главный вклад в строительство данной машины принадлежал команде IBM, работавшей в городе Эндикотте, штат Нью-Йорк. «Интересам корпорации IBM больше всего отвечала не история индивидуальных открытий, а история успешной работы организации, — писал историк Курт Байер в своей книге о Грейс Хоппер. — Местом, где зарождались технологические инновации, по мнению IBM, была именно корпорация. Миф о гениальном изобретателе-одиночке, работающем в лаборатории или подвале, был заменен на реальную историю работы команды безликих инженеров корпорации, постепенно усовершенствовавших машину»[157]. В версии истории от IBM в компьютер Mark I было внесено множество мелких новаторских решений, например счетчик, использующий храповый механизм, а также двухплатформенное устройство подачи карт. Как утверждают авторы книги IBM, эти новшества были внесены в компьютер командой малоизвестных инженеров, работавших совместно в Эндикотте[158].
Различие между версиями Хоппер и IBM на самом деле глубже, чем вопрос о том, кому принадлежат главные заслуги. Оно демонстрирует противоположные взгляды на историю возникновения инноваций. В некоторых исследованиях по истории науки и техники подчеркивается, как это сделала Хоппер, роль изобретателей, совершающих инновационные прорывы. В других исследованиях подчеркивается роль команд и организаций, таких как Bell Labs и IBM, сумевших организовать коллективную работу на своих предприятиях. При втором подходе авторы пытаются показать: то, что может показаться творческим прорывом, моментом озарения, на самом деле является результатом эволюционного процесса, который возникает в тот момент, когда идеи, концепции, технологии и инженерные методы созревают одновременно. Ни одна из точек зрения на технологическим прогресс не является единственно правильной. Большинство великих инноваций цифровой эпохи возникали при взаимодействии творческих личностей (Мокли, Тьюринга, фон Неймана, Айкена) с командами, которые сумели реализовать их идеи.
Партнером Хоппер в работе с компьютером Mark I был Ричард Блох, математик из Гарварда, в студенческие годы игравший на флейте в любительской университетской музыкальной группе, а потом служивший в ВМС США. Прапорщик Блох начал работать с Айкеном за три месяца до Хоппер, и когда она появилась, взял ее под свою опеку. Он вспоминал: «Я помню, как мы сидели до глубокой ночи, разбираясь, как работает эта штуковина и как ее программировать». Они с Хоппер сменяли друг друга каждые двенадцать часов, подстраиваясь к требованиям машины и ее неуравновешенного командира — Айкена. «Иногда он появлялся в четыре утра, — рассказывал Блох, — и спрашивал: „Мы считаем?“ Он очень нервничал, когда машина останавливалась»[159].
Подход Хоппер к программированию был систематическим. Она разбивала все физические проблемы или математические уравнения на мелкие арифметические шаги. «Вы просто говорите компьютеру, что делать, шаг за шагом, — поясняла она. — Нужно взять это число, и добавить его к тому числу, и положить результат туда-то. Теперь взять это число, и умножить его на то число, и положить его туда-то»[160]. Когда программа уже была набита на ленту и наставал момент ее проверять, команда, обслуживающая Mark I, сначала в шутку, ставшую потом ритуалом, вытаскивала молитвенный коврик, становилась на него лицом на восток и молилась, чтобы их работа оказалась успешной.
Иногда по ночам Блох слегка переделывал что-то в аппаратуре компьютера, что создавало проблемы для компьютерных программ, которые писала Хоппер. Она была человеком несдержанным, бывало, использовала крепкие словечки, и отборная брань, которой она поливала остолбеневшего долговязого Блоха, стала предвестником той смеси вражды и товарищества, которая возникнет между разработчиками аппаратных средств и программного обеспечения. «Каждый раз, когда я запускаю программу, он приходит ночью и меняет схемы в компьютере, а на следующее утро программа перестает работать, — сетовала она. — К тому же утром он уже дома, и спит, и не может рассказать мне, что переделал». Как в таких случаях говорил Блох: «Разверзались ворота ада. Айкен не умел воспринимать это с юмором»[161].
Из-за таких случаев Хоппер заработала репутацию грубиянки. Такой она и была. Но она также могла сочетать грубоватость с умением работать в команде — способность, присущая программистам экстра-класса. Это ощущение командного «пиратского» братства — то, что роднит Хоппер с программистами последующих поколений, — не ограничивало ее, а скорее делало более свободной. Как писал Бейер, «именно способности Хоппер к работе в команде, а не ее дерзкий характер, способствовали самостоятельности ее мышления и действий»[162].
На самом деле не у импульсивной Грейс Хоппер, а у спокойного Блоха были более сложные отношения с командиром Айкеном. «У Дика всегда возникали неприятности, — вспоминала Хоппер. — Я пробовала объяснить ему, что Айкен похож на компьютер. Он сконструирован определенным образом, и если собираешься работать с ним, ты должен понимать, как он собран»[163]. Айкен, который сначала был недоволен присутствием женщины в его подразделении, вскоре сделал Хоппер не только главным программистом, но и своим первым заместителем. Много лет спустя он вспоминал с благодарностью ее вклад в рождение компьютерного программирования. Как он говорил, «Грейс была хорошим парнем»[164].
Среди методов программирования, которые Хоппер в Гарварде довела до совершенства, было создание подпрограмм — частей программы, предназначенных для выполнения конкретных задач. Подпрограммы загружаются один раз, но их можно вызывать всякий раз, когда это необходимо, — в любой момент выполнения основной программы. «Подпрограмма — это четко определенная, удобно закодированная, часто повторяемая программа, — писала она. — В компьютере Mark I / Harvard имелись подпрограммы для вычисления sin х, log10 х, и 10x, каждая из которых могла вызываться одним операционным кодом»[165]. Это была та самая концепция, которую Ада Лавлейс впервые описала в своих «Примечаниях» к статье об аналитической машине. Хоппер собирала библиотеку этих подпрограмм, которая все время пополнялась. В процессе работы над программированием компьютера Mark I она разработала концепцию компилятора — устройства для перевода исходного кода на машинный язык, используемый различными компьютерными процессорами, что в конечном итоге облегчило написание одной и той же программы для множества машин.
Кроме того, ее команда внедрила общепринятые в настоящее время термины bug (в переводе — насекомое), означающий ошибку в программе, и debugging (устранение насекомых), означающий отладку программы. Вторая версия машины — компьютер Mark II /Harvard был установлен в здании, где на окнах не было противомоскитных сеток. Однажды ночью машина вышла из строя, и команда стала искать причину проблемы. Внутри они нашли разбившуюся и застрявшую в одном из электромеханических реле ночную бабочку с размахом крыльев в десять сантиметров. Она была извлечена и приклеена в журнал записей скотчем. Запись гласила: «Панель F (бабочка) в реле. Первая конкретная причина программной ошибки найдена»[166]. С тех пор поиски глюков, то есть отладку программы, называли «поиском багов в машине».
К 1945 году, во многом благодаря Хоппер, компьютер Mark I / Harvard стал самым легко программируемым в мире большим компьютером. Он мог переключаться с одной задачи на другую, просто получив новые инструкции с бумажной перфоленты, и не требовал аппаратной переделки или перепайки кабелей. Тем не менее эта замечательная особенность в значительной степени осталась незамеченной и тогда, и в истории компьютеров, поскольку в компьютере Mark I (и даже в его преемнике, Mark II, построенном в 1947 году) использовались медленные электромеханические реле, а не электронные компоненты, в первую очередь электронные лампы. «К тому времени, когда кто-то что-то узнал о нем, — рассказывала Хоппер о компьютере Mark II, — он уже был малоэффективен, и все переходили на электронику»[167].
Инноваторы в области компьютерных технологий, как и другие первопроходцы, могут оказаться в отстающих, если зациклятся на своих решениях. Те же черты характера, которые делают их изобретательными, например упрямство и умение сконцентрироваться, могут сделать их невосприимчивыми к новым идеям. Стив Джобс был известен своим упрямством и целеустремленностью, но он же поражал и сбивал с толку своих коллег, когда внезапно менял подход, поняв, что теперь необходимо направить мысли в другом направлении. Айкену не хватало гибкости. Он не был достаточно гибким, чтобы в нужный момент исполнить пируэт. Он инстинктивно вел себя как капитан корабля, наделенный единоличной властью, поэтому у его экипажа не было привычки свободно выдвигать новые идеи, как это было в команде Мокли и Эккерта в Пенне (Пенсильванском университете). Кроме того, Айкен ставил на первое место надежность, а не скорость. Поэтому он держался за использование проверенных временем и надежных электромеханических реле даже после того, как инженеры из Пенна и Блетчли-Парка поняли, что будущее за электронными лампами. Его Mark I мог выполнять только около трех операций в секунду, в то время как ENIAC, строившийся в Пенне, мог выполнять за то же время пять тысяч операций.
Когда Айкен поехал в Пенн посмотреть на ENIAC и прослушать лекции, был написан отчет, где об этой встрече сказано: «Айкен был зациклен на своем собственном подходе и, кажется, не понял значения новых электронных машин»[168]. То же самое можно отнести и к Хоппер, посетившей ENIAC в 1945 году. Ей казалось, что Mark I лучше, поскольку его было легче программировать. В ENIAC, сказала она, «вы вставляете разные блоки и по сути конструируете новый компьютер для каждой задачи, а мы привыкли к концепции программирования и управления компьютером с помощью нашей программы»[169]. Для того чтобы перепрограммировать ENIAC, может потребоваться целый день, и это убивало его преимущество в скорости обработки, если только не нужно было все время решать одну и ту же задачу.
Но в отличие от Айкена у Хоппер был достаточно гибкий ум, и она вскоре изменила свой подход. В том году были придуманы способы более быстрого перепрограммирования ENIAC. И к радости Хоппер, эту революцию в программировании совершили в первую очередь женщины.
Женщины и ENIAC
Все инженеры, конструировавшие ENIAC, были мужчинами. Менее запомнившейся в истории оказалась группа женщин, особенно шесть из них, сыгравшие, пожалуй, не менее важную роль в развитии современной компьютерной техники. Поскольку ENIAC строился в Пенне в 1945 году, считалось, что он все время будет выполнять одни и те же определенные расчеты, например расчеты траекторий ракеты при разных условиях. Но война закончилась, и машина могла понадобиться для различных других расчетов — акустических волн, погодных условий, мощности взрывов новых типов атомных бомб, а это означало, что ее придется часто перепрограммировать.
Для этого требовалось вручную переключить кабели ENIAC и сбросить переключатели в начальное положение. Сначала программирование казалось рутинным занятием, возможно, даже черновой работой, и может быть, поэтому она была поручена женщинам, которым в то время не очень просто было стать инженерами. Но женщины, программировавшие ENIAC, вскоре доказали (и мужчины это позже поняли), что программирование компьютера могло быть не менее важным, чем его конструирование.
История Джин Дженнингс является типичной для женщин-программисток, работавших с первыми компьютерами[170]. Она родилась на ферме, расположенной на окраине поселка Алантус-Гроув в штате Миссури (население 104 человека), в семье, в которой практически не было денег, но очень ценилось образование. Ее отец преподавал в школе, помещавшейся в одной комнате, и Джин считалась лучшей в школе подающей в бейсболе и единственной девчонкой в футбольной команде. Ее мать, хотя и бросила школу в восьмом классе, помогала обучать детей алгебре и геометрии. Джин была шестым ребенком из семи детей, и все они пошли учиться в колледж. В то время это было реально, поскольку государственные власти ценили образование и понимали экономическую и социальную ценность его доступности. Она училась в Северо-Западном Миссурийском государственном педагогическом колледже в Мэривилле, где обучение стоило 76 долларов в год.
(В 2013 году оно стоило около уже 14 тысяч долларов в год даже для жителей штата, то есть увеличилось в двенадцать раз с учетом инфляции.) Она сначала решила учиться журналистике, но вскоре возненавидела своего преподавателя и переключилась на математику, которую любила с детства.
Когда она окончила колледж в январе 1945 года, ее преподаватель по математическому анализу показал ей объявление: в Пенсильванском университете требовались женщины-математики. Женщины там выполняли функции «компьютеров», то есть считали рутинные математические задачи — в основном рассчитывали артиллерийские траектории и составляли баллистические таблицы для армии. В одном объявлении было написано:
Требуются женщины с высшим математическим образованием… Женщинам предлагается работа в научной и инженерной областях, на которую раньше предпочитали брать мужчин. Сейчас пришло время для вас подумать о работе в области науки и техники. Вы увидите, что здесь, как сейчас везде, актуален лозунг «Требуются женщины!»[171]
Дженнингс, которая никогда не выезжала за пределы штата Миссури, послала заявление. Когда она получила телеграмму о том, что ее приняли, то села в полночь на поезд железнодорожной компании Wabash, идущий на восток, и прибыла в Пенн сорок часов спустя. Она вспоминала: «Не стоит и говорить, что они были поражены тем, что я оказалась там так быстро»[172].
Когда двадцатилетняя Дженнингс появилась в Пенне в марте 1945 года, там уже работало около семидесяти женщин, пользующихся настольными счетными машинками и испещрявших цифрами огромные листы бумаги. Жена капитана Германа Голдстайна Адель была ответственной за вербовку и подготовку кадров. «Никогда не забуду, как я впервые пришла на лекцию Адели, — рассказывала Дженнингс. — Она вошла в класс с сигаретой в углу рта, подошла к столу, забросила одну ногу на него и заговорила с отчетливым бруклинским акцентом». Для Дженнингс, которая в детстве была сорванцом и вскипала каждый раз, когда сталкивалась с бесчисленными случаями сексизма, это был опыт, перевернувший ее представления о жизни. «Я поняла, что уехала далеко от Мэривилля, где женщинам приходилось прятаться в сараях, чтобы тайком покурить»[173].
Через несколько месяцев после того, как Дженнингс приехала в Пенн, среди женщин была распространена служебная записка об открытии шести вакансий для работы на таинственном устройстве, скрывавшемся за закрытыми дверями на первом этаже электротехнической школы Мура при Пенне. «Я понятия не имела, что это была за работа и что такое ENIAC, — вспоминала Дженнингс. — Все, что я понимала, — это то, что я могла бы там узнать что-нибудь новое, и я верила, что смогу научиться делать что-либо не хуже всех остальных». Еще ей хотелось заняться чем-то более интересным, чем расчет траекторий.
Когда она пришла на интервью, Голдстайн спросил ее, что она знает об электричестве. Она вспомнила закон Ома, который определяет, как электрический ток связан с напряжением и сопротивлением, и сказала, что «прослушала курс физики и знает, что U равно IR». «Нет-нет, — сказал Голдстайн, — меня не это заботит, я спрашиваю, не боитесь ли вы электричества?»[174] Работа состояла в том числе в переключении проводов и управлении переключателями, пояснил он. Она сказала, что не боится. Во время интервью пришла Адель Голдстайн, взглянула на нее и кивнула. Дженнингс была принята.
Кроме Джин Дженнингс (позже Бартик), были взяты на работу Мэрлин Весков (позже Мельцер), Рут Лихтерман (позже Тейтель-баум), Бетти Снайдер (позже Холбертон), Фрэнсис Байлас (позже Спенс) и Кей Макналти (которая впоследствии вышла замуж за Джона Мокли). Они были типичной командой, оказавшейся вместе благодаря войне: Весков и Лихтерман были еврейками, Снайдер — из квакеров, Макналти — католичкой ирландского происхождения, а Дженнингс принадлежала к церкви, отколовшейся от протестантской. «Мы замечательно проводили время вместе, в основном потому, что никто из нас никогда раньше не имел близких контактов с кем-либо принадлежащим к другой религии, — вспоминала Дженнингс. — У нас было несколько важных споров о религиозных догмах и верованиях. Несмотря на наши различия или, возможно, благодаря им, мы очень полюбили друг друга»[175].
Летом 1945 года шесть женщин были направлены на Абердинский испытательный полигон, где их учили работать с перфокартами IBM и подключать коммутационные панели. «Там у нас происходили длинные споры о религии, наших семьях, политике и нашей работе, — вспоминала Макналти. — Нам всегда было что сказать друг другу»[176]. Дженнингс стала лидером в группе. Она вспоминала: «Мы работали вместе, жили вместе, ели вместе и засиживались часами, обсуждая все на свете»[177]. Поскольку все они были свободными, а вокруг было много одиноких солдат, в кабинках клуба офицеров, где распивались коктейли «Том Коллинз», вспыхнуло несколько ярких романов. Весков нашла себе морпеха, «высокого и довольно красивого». Дженнингс встретила сержанта по имени Пит, который был «привлекательным, но не очень красивым». Он был родом из Миссисипи, а Дженнингс откровенно выражала свое неприятие расовой сегрегации: «Пит сказал мне однажды, что никогда не повезет меня в Билокси, потому что я так откровенно высказываюсь по вопросам дискриминации, что меня там убьют»[178].
После шестинедельных тренировок шесть девушек-программисток, отправив своих приятелей в архивы памяти, вернулись в Пенн, где им дали диаграммы размером с плакат и схемы ENIAC. Макналти рассказывала: «Некто вручил нам целую пачку чертежей (это были электрические схемы всех блоков) и сказал: „Нужно выяснить, как работает машина, а затем научиться ее программировать“»[179]. Для этого потребовалось проанализировать дифференциальные уравнения, а затем понять, как перекинуть кабели к нужным электронным схемам. «Самое большое преимущество изучения компьютера ENIAC по диаграммам состояло в том, что мы начали понимать, что можно на нем сделать, а что нельзя, — говорила Дженнингс. — В результате мы могли локализовать проблему, почти наверняка знали, какая именно электронная лампа барахлит». Они со Снайдер разработали систему, позволяющую обнаружить, какая из восемнадцати тысяч электронных ламп сгорела. «Так как мы знали, как система работает, мы научились диагностировать проблемы так же, если не лучше, чем инженеры. Должна сказать вам, что инженерам это нравилось. Они могли переложить отладку на нас»[180].
Снайдер рассказала, как тщательно они составляли диаграммы и графики для каждой новой конфигурации кабелей и переключателей. Она сказала, что фактически они «делали тогда то, что было началом составления программы», хотя они еще не знали слова для этого. Они писали каждую новую последовательность на бумаге, чтобы обезопасить себя. Дженнингс вспоминала: «Мы все чувствовали, что с нас скальп снимут, если мы испортим машину»[181].
Однажды Дженнингс и Снайдер сидели в реквизированном ими двухэтажном учебном помещении и рассматривали листы, содержащие диаграммы множества блоков ENIAC, когда в класс вошел человек, инспектирующий некоторые конструкции. «Привет, меня зовут Джон Мокли, — сказал он, — я просто проверял, не провалился ли потолок». Ни одна из женщин не встречалась до этого с изобретателем ENIAC, но они ни в малейшей степени не смутились и не испугались. «Рады вас видеть, — заявила Дженнингс, — расскажите, как этот проклятый сумматор работает». Мокли подробно ответил на этот, а потом и на другие вопросы. Когда они закончили, он сказал им: «Ну вот, мой кабинет находится по соседству. Так что в любое время, когда я там, вы можете прийти и задать мне вопрос».
Они и заходили почти каждый день. Если верить Дженнингс, «он был чудесным учителем». Он помог женщинам понять, как много других задач (кроме расчета артиллерийских траекторий) ENIAC сможет со временем решать. Он знал, что для того, чтобы сделать его настоящим компьютером общего назначения, он должен вдохновить программистов, которые могли заставить аппаратное устройство выполнять различные задачи. «Он всегда старался заставить нас думать о других проблемах, — рассказывала Дженнингс. — Он всегда просил нас найти обратную матрицу или что-то в таком же духе»[182].
Женщины-программистки придумали, как сделать подпрограммы для ENIAC, примерно в то же время, что и Хоппер в Гарварде. Они боялись, что логические схемы не настолько мощны, чтобы просчитать некоторые траектории. Придумала решение Макналти. «О, я знаю, я знаю, я знаю, — возбужденно воскликнула она однажды. — Мы можем использовать главную программу для повторения части программы». Они попытались, и это сработало.
«Мы начали обдумывать, как нам написать подпрограммы, вложенные подпрограммы и все такое, — вспоминала Дженнингс. — Это было очень полезно для задач по расчету траекторий, потому что идея состояла в том, чтобы повторять не всю программу, а только ее куски. Для этого нужно было так составить основную программу, чтобы она реализовала это. После того как вы научились делать это, вы понимаете, как составить свою программу в модульном виде. Разработка подпрограмм и модульной организации основной программы были самыми важными этапами в освоении программирования»[183].
Джин Дженнингс Бартик скончалась в 2011 году, а незадолго до смерти с гордостью рассказывала, что все программисты, участвовавшие в создании первого компьютера общего назначения, были женщинами: «Несмотря на то, что мы достигли совершеннолетия в то время, когда карьерные возможности женщин были, как правило, довольно ограниченными, мы приняли участие в становлении компьютерной эры». Это произошло потому, что все-таки многие женщины тогда учились математике и их навыки были востребованы. Была также и забавная причина: парни, с детства помешанные на игрушечных машинках, считали, что именно сборка оборудования была самой важной задачей и, следовательно, мужской работой. «Американская наука и техника была еще более сексистской, чем сегодня, — говорила Дженнингс. — Если бы руководители ENIAC знали, насколько важным окажется программирование для функционирования ЭВМ и насколько сложным оно окажется, они, возможно, трижды подумали бы, прежде чем отдать такую важную роль женщинам»[184].
Сохранение программ
С самого начала Мокли и Эккерт понимали, что существуют более легкие способы перепрограммировать ENIAC. Но они не пытались этого сделать, потому что потребовалось бы усложнить аппаратное устройство, и к тому же в этом не было необходимости, поскольку для решения первоначально поставленных задач этого не требовалось. «Не было сделано ни одной попытки обеспечить автоматический выбор настроек под определенную задачу, — написали они в своем годовом отчете за 1943 год по усовершенствованию ENIAC. — Это было сделано из-за желания упростить конструкцию и потому, что предполагалось, что ENIAC будет использоваться в основном для задач определенного типа, в которых одна настройка будет использоваться много раз, прежде чем машину заставят решать другую задачу»[185].
Но больше чем за год до окончания создания ENIAC, уже в начале 1944 года, Мокли и Эккерт поняли, что существует хороший способ сделать компьютеры легко перепрограммируемыми: хранить программы в памяти компьютера, а не загружать их каждый раз заново. Они чувствовали, что это было бы следующим большим шагом вперед в развитии компьютеров. Структура машины с «сохраняемой программой» предполагает, что постановки задач для компьютера могут быть изменены практически мгновенно, без изменения вручную конфигурации кабелей и переключателей[186].
Для сохранения программы внутри машины нужно иметь большой объем памяти. Эккерт перебрал много способов для этого. В докладной записке, составленной в январе 1944 года, он написал: «Программы можно сохранять временно, используя запись на дисках из сплавов или постоянно — на протравленных дисках»[187]. Поскольку такие диски еще не были сделаны, в следующей версии ENIAC он предложил использовать вместо этого более дешевый метод хранения, названный памятью на акустической линии задержки. Она была впервые сконструирована в Bell Labs инженером Уильямом Шокли (о котором ниже будет рассказано гораздо подробнее) и усовершенствована в Массачусетском технологическом институте. Принцип работы акустической линии задержки состоял в сохранении данных в виде импульсов в длинной трубке, заполненной тяжелой, вязкой жидкостью, такой как ртуть. На одном конце трубки электрический сигнал, несущий информацию, в кварцевом преобразователе превращался в волны, какое-то время распространяющиеся в трубке вперед и назад. Поскольку импульсы затухают, их с помощью усилителей восстанавливают. Когда приходит время извлечь данные, импульсы в кварцевом преобразователе опять превращаются в электрические сигналы, и цикл повторяется. В каждой такой трубке могло храниться примерно тысяча бит данных при стоимости, равной одной сотой от стоимости схемы, собранной на электронных лампах. В докладной записке, составленной летом 1944 года Эккертом и Мокли, они предложили следующее поколение компьютеров — преемников ENIAC — снабдить стеллажами с этими линиями задержки на ртутных трубках и хранить в них как исходные данные, так и основную информацию по программам в цифровом виде.
Джон фон Нейман
В этот момент в истории компьютеров снова появляется один из самых интересных персонажей. Джон фон Нейман — математик, родившийся в Венгрии, — был руководителем Тьюринга в Принстоне и предлагал ему остаться там работать в качестве ассистента. Восторженный эрудит и изысканный интеллектуал, он внес значительный вклад и в математическую статистику, и в теорию множеств, и в геометрию, и в квантовую механику, и в конструкцию ядерной бомбы, и в динамику жидкостей, и в теорию игр, и, конечно, в компьютерную архитектуру. В конечном итоге он значительно усовершенствует архитектуру компьютера, обеспечивающую сохранение программ, которую начали разрабатывать Эккерт и Мокли и их коллеги, и она станет называться его именем, и большая часть заслуг достанется именно ему[188].
Фон Нейман родился в зажиточной еврейской семье в Будапеште в 1903 году в благополучное время, когда в Австро-Венгерской империи были отменены законы, ограничивающие права евреев. Император Франц Иосиф в 1913 году наградил банкира Макса Неймана наследуемым дворянским титулом за «заслуги в финансовой сфере», таким образом семья стала назваться маргиттаи Нейманами, а по-немецки — фон Нейманами. Янош (в детстве его называли Янчи, а затем — в Америке — Джоном или Джонни) был старшим из трех братьев, и они все после смерти отца перешли в католичество (как один из них признался — «для удобства»)[189].
Фон Нейман был еще одним первооткрывателем, чьи интересы лежали на пересечении гуманитарных и естественных наук.
«Наш отец писал любительские стихи и считал, что поэзия может передать не только эмоции, но и выразить философские идеи, — вспоминал брат Джона Николас. — Он считал поэзию языком в языке, и в этом, возможно, берут начало будущие рассуждения Джона о языках компьютера и мозге». О матери он написал: «Она считала, что музыка, искусство и прочие эстетические удовольствия должны занимать важное место в нашей жизни и что утонченность — весьма уважаемое качество»[190].
Существует огромное количество историй о многочисленных талантах молодого фон Неймана, и некоторые из них, вероятно, правдивы. В возрасте шести лет, как позже рассказывали, он перебрасывался с отцом шутками на древнегреческом и мог в уме разделить два восьмизначных числа. На вечеринках он проделывал фокус — запоминал страницу из телефонной книги и называл в обратном порядке имена и номера. Он мог воспроизвести дословно прочитанные страницы из романов или статей на любом из пяти языков. «Если раса людей со сверхчеловеческими мыслительными способностями когда-либо возникнет, — сказал как-то разработчик водородной бомбы Эдвард Теллер, — принадлежащие ей особи будут напоминать Джонни фон Неймана»[191].
Кроме школы, он занимался с репетиторами математикой и языками и в пятнадцать лет полностью овладел высшей математикой. Когда Коммунистическая партия во главе с Белой Куном в 1919 году на короткое время взяла власть в Венгрии, занятия фон Неймана были перенесены в Вену и на курорт на Адриатическом море, а в нем выработалось стойкое отвращение к коммунизму. Он изучал химию в Швейцарском федеральном технологическом институте (Политехникуме) в Цюрихе (откуда уже ушел Эйнштейн), а математику — и в Берлине, и в Будапеште, и в 1926 году получил докторскую степень. В 1930 году он отправился в Принстонский университет изучать квантовую физику и остался там после того, как был назначен (наряду с Эйнштейном и Гёделем) одним из первых шести профессоров только что образованного Института перспективных исследований[192].
Фон Нейман и Тьюринг, которые встретились в Принстоне, считаются парой великих теоретиков, разработавших концепцию компьютера общего назначения, но в личном плане и по темпераменту они были полными противоположностями. Тьюринг вел спартанский образ жизни, жил в пансионах и дешевых гостиницах и был погружен в себя. Фон Нейман же был элегантным бонвиваном, и они с женой один-два раза в неделю устраивали блестящие приемы в своем огромном доме в Принстоне. Тьюринг любил бегать на длинные дистанции, а про фон Неймана шутили, что на свете очень мало мыслей, никогда не приходивших ему в голову, но идея бега на длинные расстояния (впрочем, и на короткие тоже) была среди них. Мать Тьюринга как-то сказала о своем сыне: «В одежде и привычках он обычно был неряшлив». Фон Нейман, наоборот, почти всегда носил костюм-тройку, в том числе в поездке на осле на дно Большого каньона. Даже будучи студентом, он так хорошо одевался, что, как рассказывали, при первой встрече с ним математик Давид Гильберт задал только один вопрос: «Кто его портной?»[193]
Фон Нейман любил на своих приемах рассказывать анекдоты и читать шуточные стихи на разных языках, а ел так много, что его жена однажды сказала, что он может сосчитать все, кроме съеденных калорий. Он безрассудно водил машину, иногда попадал в аварии и любил покупать шикарные новые «кадиллаки». Историк науки Джордж Дайсон писал: «По крайней мере раз в год он приобретал новый автомобиль, независимо от того, пострадал ли в аварии предыдущий»[194].
В конце 1930-х годов, работая в Институте, фон Нейман заинтересовался способами математического моделирования взрывных ударных волн. Это привело к тому, что в 1943 году он стал участником Манхэттенского проекта, и ему пришлось совершать частые поездки на секретные объекты Лос-Аламоса и Нью-Мексико, где разрабатывалось атомное оружие. Поскольку количества урана-235 было недостаточно, чтобы построить больше одной бомбы, ученые в Лос-Аламосе попытались создать бомбу, в которой бы использовался плутоний-239. Фон Нейман сосредоточился на способах построения взрывных линз, которые бы сжимали плутониевое ядро бомбы для достижения критической массы[195].
Для расчета параметров этого взрыва требуется решение множества уравнений для вычисления скорости волны сжатия воздуха или других веществ, образовавшейся после взрыва. Поэтому фон Нейману захотелось изучить возможности высокоскоростных компьютеров.
Летом 1944 года эта проблема привела его в Bell Labs, и он стал изучать обновленную версию калькулятора комплексных чисел Джорджа Стибица. В последней версии имелось нововведение, которое произвело на него особенное впечатление его: на той же перфорированной ленте, где были набиты закодированные инструкции для каждой задачи, рядом с ними помещались и исходные данные. Фон Нейман провел какое-то время и в Гарварде, пытаясь выяснить, можно ли использовать компьютер Mark I Говарда Айкена для расчетов бомбы. Все лето и осень того года он перемещался на поезде между Гарвардом, Принстоном, Bell Labs и Абердином, исполняя роль пчелки, прямо и перекрестно опыляющей различные команды идеями, которые возникали в его голове. Так же как Джон Мокли ездил повсюду, подбирая идеи, которые в результате привели к созданию первого работающего электронного компьютера, фон Нейман курсировал между лабораториями, собирая воедино элементы и понятия, которые стали потом частью архитектуры компьютера с сохраняемыми программами.
В Гарварде, в конференц-зале, расположенном рядом с компьютером Mark I, Грейс Хоппер и ее партнер, программист Ричард Блох, обустроили рабочее место для фон Неймана. Он и Блох должны были писать уравнения на доске и вводить их в машину, а Хоппер должна была считывать готовые промежуточные результаты. Пока машина «переваривала числа», рассказывала Хоппер, фон Нейман часто выбегал из конференц-зала и подбегал к ней, чтобы предсказать, какими будут результаты. «Я просто никогда не забуду, как они прибегали из задней комнаты, а затем снова убегали обратно и исписывали этим [числами] всю доску, и фон Нейман предсказывал, какие результаты должны были получиться, и в девяносто девяти процентах случаев он угадывал результат с фантастической точностью, — восклицала Хоппер в восторге. — Казалось, он просто знал или чувствовал, как происходят вычисления» [196].
Для команды Гарварда стиль работы фон Неймана в коллективе был непривычным. Он впитывал их идеи, выдвижение некоторых из них считал своей заслугой, но в то же время ясно давал понять, что никто не должен считать какую-либо концепцию своей. Когда пришло время писать отчет о том, что они делают, фон Нейман настаивал, чтобы имя Блоха стояло первым. Блох рассказывал: «На самом деле я не считал, что заслуживал этого, но так вышло, и я дорожу этим»[197]. Айкен тоже считал, что нужно открыто обмениваться идеями. «Не бойтесь, что кто-то украдет у вас идею, — сказал он однажды студенту. — Если она оригинальная, им придется ее принять». Тем не менее даже он был поражен и немного смущен достаточно бесцеремонной позицией фон Неймана в отношении того, кому принадлежит заслуга выдвижения данной идеи. «Он говорил о концепциях, не ссылаясь на их авторов»[198].
Проблема, с которой фон Нейман столкнулся в Гарварде, состояла в том, что Mark I с его электромеханическими переключателями считал мучительно медленно. Расчеты атомной бомбы заняли бы несколько месяцев. Хотя ввод с помощью бумажной ленты делал процесс перепрограммирования компьютера более удобным, каждый раз, когда возникала команда перехода к подпрограмме, необходимо было вручную менять ленту. Фон Нейман пришел к убеждению, что единственное решение — создать компьютер, который работал бы на электронных скоростях и мог хранить и изменять программы с помощью внутренней памяти.
Таким образом, он созрел для того, чтобы стать участником следующего большого прорыва — разработки архитектуры компьютера с программами, сохраняемыми в памяти. Поэтому становится понятным, какой удачей было то, что в конце августа 1944 года он оказался на платформе железнодорожной станции полигона Абердин.
Фон Нейман в Пенне
Капитан Герман Голдстайн, военный связист, который работал с Мокли и Эккертом на ENIAC, в это же время случайно оказался в Абердине на той же платформе, что и фон Нейман, в ожидании поезда на север. Они никогда раньше не встречались, но Голдстайн узнал его мгновенно. Встретив фон Неймана — знаменитость в мире математики — он пришел в возбуждение, поскольку всегда преклонялся перед выдающимися личностями. «Было большим нахальством с моей стороны подойти к этому всемирно известному человеку, представиться и начать разговор, — вспоминал он. — К счастью для меня, фон Нейман оказался милым и дружелюбным, он всегда всячески старался сделать так, чтобы люди чувствовали себя спокойно». Беседа стала еще оживленней, когда фон Нейман узнал, чем занимается Голдстайн. «Когда фон Нейман понял, что я был связан с разработкой электронного компьютера, способного проделывать 333 умножения в секунду, тональность нашего разговора изменилась, из легкой и шутливой она превратилась в ту, что бывает на устном экзамене при соискании докторской степени по математике»[199].
По приглашению Голдстайна несколько дней спустя фон Нейман посетил Пенн, чтобы взглянуть на ENIAC в процессе его строительства. Пресперу Эккерту было любопытно познакомиться со знаменитым математиком, и он подумал, что если его первым вопросом будет вопрос о логической структуре машины, то он «действительно гений». Как раз таким на самом деле и оказался первый вопрос, заданный фон Нейманом, и он таким образом заработал уважение Эккерта[200].
ENIAC мог решить менее чем за час дифференциальное уравнение в частных производных, которое Mark I /Harvard решал бы около восьмидесяти часов. Это впечатлило фон Неймана. Тем не менее перепрограммирование ENIAC на другие задачи могло занять несколько часов, и фон Нейман понял, насколько это серьезный недостаток, поскольку в этот момент нужно было решать кучу разнородных проблем. Весь 1944 год Мокли и Эккерт пытались найти способ хранения программ внутри машины. Прибытие фон Неймана, набитого идеями Гарварда, Bell Labs и других мест, подняло на более высокий уровень обсуждение конструкции компьютера с сохраненными программами.
Фон Нейман, который стал консультантом команды ENIAC, выдвинул идею о том, что компьютерная программа должна быть сохранена в той же памяти, что и исходные данные, и тогда программу можно будет легко модифицировать во время работы. Его деятельность в команде Пенна началась с первой недели сентября 1944 года, когда Мокли и Эккерт в деталях объяснили ему устройство машины и поделились своими мыслями о конструкции следующей версии, в которой будет «одно устройство хранения с адресуемыми ячейками», которое будет служить в качестве устройства для хранения и исходных данных, и команд программы. На той же неделе Голдстайн изложил эту идею в письме к своему армейскому командиру: «Мы предлагаем централизованное программируемое устройство, в котором стандартные программы хранятся в закодированном виде в тех же типах устройств хранения информации, которые были предложены ранее»[201].
Серия встреч фон Неймана с командой ENIAC, и в особенности четыре официальных совещания, которые он провел с ними весной 1945 года, оказались настолько важными, что протоколы этих встреч были сброшюрованы в отдельную книжицу под названием «Встречи с фон Нейманом». На совещаниях он вышагивал перед доской и руководил обсуждением в духе сократического диалога, впитывал идеи, пропускал через себя, очищал их, а затем выписывал на доске. «Он стоял в передней части комнаты, как профессор, консультирующийся с нами, — вспоминала Джин Дженнингс. — Мы ставили перед ним возникшую у нас конкретную проблему и всегда очень старались, чтобы проблема была фундаментальной, а не только технической»[202].
Фон Нейман был открытым человеком, но его интеллектуальное превосходство подавляло людей. Когда он утверждал что-то, редко кто отваживался возразить. Но Дженнингс иногда решалась. Однажды она поспорила с одним из его утверждений, и все в зале посмотрели на нее с удивлением. Но фон Нейман сделал паузу, склонил голову, а затем согласился с ее точкой зрения. Он умел хорошо слушать и к тому же мастерски умел притворяться застенчивым, что располагало к нему людей[203]. «В нем было удивительное сочетание черт характера блестящего человека, который осознает, что он выдающийся, и удивительной скромности и застенчивости, проявлявшихся при изложении им своих идей другим людям, — вспоминала Дженнингс. — Он был очень беспокойным, все время расхаживал по комнате, но когда он рассказывал о своих идеях, казалось, будто он извиняется за несогласие с вами или будто обдумывает лучшую идею».
Фон Нейман был особенно силен в разработке фундаментальных основ программирования, которое было все еще плохо определенным ремеслом, не очень изменившимся за век — с тех пор, как Ада Лавлейс описала последовательность операций для генерации чисел Бернулли на аналитической машине. Он понял, что создание элегантного набора инструкций — алгоритма — требовало как строгой логики, так и точности выражения. «Он очень тщательно разъяснял, почему нужно написать данную конкретную команду или почему мы могли бы обойтись без команд, — рассказывала Дженнингс. — Тогда я впервые осознала важность командных кодов, логики, на основании которой они строятся, и элементов, которые должны входить в полный набор команд. Я заметила, что фон Нейман, как и другие гении, обладал способностью выбрать в каждой конкретной проблеме нечто определяющее, то, что действительно было самым важным»[204]. В этом проявлялся его мощный талант, побуждавший его докапываться до сути каждой новой идеи.
Фон Нейман понимал, что они не просто усовершенствуют ENIAC для быстрого перепрограммирования. Они выполняли более важную задачу — воплощали идею Ады о создании машины, которая могла выполнять любую логическую задачу, заданную набором любых символов. «Компьютер с сохраняемыми программами, замысел которого принадлежал Алану Тьюрингу, а реализация — Джону фон Нейману, сломал различие между числами, которые описывают данные, и числами, которые описывают программы, — писал Джордж Дайсон. — Наша Вселенная уже никогда не будет прежней»[205].
Кроме того, фон Нейман быстрее, чем его коллеги, понял важность объединения данных и программных команд в одном и том же устройстве памяти. Память может быть стираемой — той, что мы сейчас называем памятью с оперативной записью и считыванием. Это означает, что сохраненные команды могут быть изменены не только в конце цикла, но в любой момент работы программы. Компьютер сам может изменить свою программу, основываясь на полученных результатах. Для облегчения этой процедуры Фон Нейман придумал язык программирования с переменным адресом ячейки памяти, который позволял легко менять команды во время выполнения программы[206].
Команда разработчиков из Пенна предложила армии построить на этих принципах новый улучшенный вариант ENIAC. Он должен был использовать двоичную систему, а не десятичную, использовать ртутные линии задержки в качестве устройства памяти и включать в себя многие, если и не все черты так называемой «архитектуры фон Неймана». В первоначальном варианте предложения для армии эта новая машина была названа «Электронным дискретным вариабельным автоматическим калькулятором». Все чаще, однако, команда начала называть его компьютером, поскольку он мог делать гораздо больше, чем просто вычислять. Впрочем, это не имело особого значения. Все просто называли его EDVAC.
В последующие годы в патентных разбирательствах, конференциях, книгах и противоречащих друг другу исторических документах возникали дебаты по поводу того, кто имеет больше прав на идеи, которые родились в 1944-м и в начале 1945 года и легли в основу компьютера с сохраняемой программой. Например, рассказанное выше говорит о том, что заслуга выдвижения концепции сохраняемой программы в первую очередь принадлежит Эккерту и Мокли. А заслуга фон Неймана в том, что он осознал важность способности компьютера изменять сохраненную в нем программу в процессе работы, а также в создании программ с переменным адресом для реализации этого. Но на самом деле рождение инноваций в Пенне является еще одним примером совместного творчества, и это более важно, чем разборки по поводу авторства тех или иных идей. Фон Нейман, Эккерт, Мокли, Голдстайн, Дженнингс и множество других разработчиков — все сообща обсуждали идеи, выпытывали нужные им сведения у инженеров, электронщиков, ученых-материаловедов и программистов.
Большинство из нас когда-нибудь участвовали в мозговых штурмах, в которых рождались творческие идеи. Уже спустя несколько дней разные люди могут по-разному вспоминать о том, кто предложил идею первым. Мы понимаем, что идеи формулируются в основном при постоянном взаимодействии членов группы, а не путем выдвижения совершенно оригинальной концепции кем-то одним. Искры вылетают при трении идей друг о друга, а не падают с ясного неба. Так было и в Bell Labs, и в Лос-Аламосе, и в Блетчли-Парке, и в Пенне. Одним из важнейших талантов фон Неймана, сделавшим его главным в этом коллективном творческом процессе, была его способность расспрашивать, слушать, формулировать и систематизировать чужие идеи, мягко и осторожно вносить свои предложения.
Склонность фон Неймана собирать и обрабатывать идеи, не заботясь о том, чтобы точно указать источник, из которого они появились, оказалась полезной для высевания и удобрения уже посеянных идей, которые стали частью EDVAC. Но иногда это обижало тех, кого больше беспокоило, как оценят их заслуги или признают ли за ними права на интеллектуальную собственность. Фон Нейман как-то раз заявил, что невозможно приписать кому-то одному рождение идей, обсуждавшихся в группе. Рассказывают, что Эккерт, услышав это, отреагировал репликой: «Вы уверены?»[207]
Преимущества и недостатки подхода фон Неймана проявились в июне 1945 года. После десяти месяцев кипучей работы в Пенне он предложил изложить ее итоги на бумаге. И приступил к этому во время своей долгой поездки на поезде в Лос-Аламос.
В своем рукописном отчете, отправленном в Пенн Голдстайну, фон Нейман в математически компактной форме подробно описал структуру предлагаемого компьютера с запоминаемыми программами и логическое управление им, а также причины, по которым оказалось «заманчивым рассматривать всю память как единый орган». Когда Эккерт спросил Голдстайна, почему, как ему кажется, фон Нейман единолично составляет документ, основанный на идеях, в развитии которых участвовали и другие, тот успокоил его: «Он просто пытается уяснить эти вещи для себя самого и делает это в письмах ко мне, чтобы мы могли ответить ему, если он что-то понял неправильно»[208].
Фон Нейман оставил пробелы для вставки ссылок на чужие работы, и в действительности в его тексте никогда не использовалась аббревиатура EDVAC. Но когда Голдстайн отдал текст (насчитывавший уже 101 страницу) в печать, он указал в качестве единственного автора своего героя — фон Неймана. На титульной странице Голдстайн написал название «Первый проект отчета о EDVAC Джона фон Неймана». Для получения двадцати четырех копий документа Голдстайн использовал мимеограф, и в конце июня 1945 года он разослал эти экземпляры по разным местам[209].
«Проект отчета» был очень полезным документом, и разработчики последующих компьютеров руководствовались им по крайней мере в течение последующего десятилетия. Решение фон Неймана написать его и позволить Голдстайну распространить отражало открытость академически ориентированных ученых, особенно математиков, которые обычно хотят публиковать в открытой печати и распространять результаты, а не пытаться доказать, что право на интеллектуальную собственность принадлежит им. Своему коллеге фон Нейман объяснил: «Я, безусловно, собираюсь сделать все возможное, чтобы как можно больше результатов этой деятельности оказалось в открытом доступе (с патентной точки зрения)». Позже он сказал, что, взявшись за написание отчета, преследовал две цели — «прояснить и скоординировать мысли группы, работающей над конструкцией компьютера EDVAC, и помочь усовершенствовать конструкцию высокоскоростных компьютеров». Кроме того, он сказал, что не пытался присвоить авторство на концепции и никогда не подавал на них патентные заявки[210].
Эккерт и Мокли смотрели на это по-другому. «Понимаете, мы под конец стали считать фон Неймана скупщиком чужих идей, а Голдстайна — основным продавцом, — сказал Эккерт позднее. — Фон Нейман крал идеи и пытался сделать вид, что работу в школе Мура [при Пенне] он проделал один»[211]. Джин Дженнингс согласилась с этим и позже сокрушалась, что Голдстайн «ревностно поддерживал несправедливые претензии фон Неймана и, по сути, помог ему присвоить работу Эккерта, Мокли и остальных членов группы из школы Мура»[212].
Что особенно расстроило Мокли и Эккерта, которые пытались запатентовать многие из концепций, лежащие в основе и ENIAC, и будущего EDVAC, так это то, что распространение отчета фон Неймана делало эти концепции открытыми и с юридической точки зрения запатентовать их становилось невозможно. Когда Мокли и Эккерт попытались запатентовать архитектуру компьютера с сохраняемой программой, им было отказано в этом, поскольку (так заключили и армейские юристы, и в конечном итоге суды) отчет фон Неймана был сочтен «предшествовавшей открытой публикацией», что запрещает выдачу патента.
Эти патентные споры положили начало дискуссии, возникшей в цифровую эру. Должны ли разработчики делиться своей интеллектуальной собственностью, и при любой возможности отправлять ее в общий доступ, и отдавать сообществам, распространяющим программы с открытыми исходными кодами? По этому пути шли в основном разработчики интернета и Web, и это может стимулировать развитие инноваций благодаря быстрому распространению идей и совершенствованию их в процессе краудсорсинга. Или же права на интеллектуальную собственность должны быть защищены и изобретателям нужно разрешить получать прибыль от их собственных идей и инноваций? Этим путем, как правило, следуют разработчики, работающие в области вычислительной техники, электроники и производства полупроводников, и в этом случае у авторов появляются финансовые стимулы, они получают инвестиции, способствующие появлению инноваций, и риски окупаются. В течение семидесяти лет после того, как фон Нейман разместил свой «Проект отчета» по EDVAC в общем доступе и он оказался очень полезным, защите авторских прав в компьютерной области уделялось все больше и больше внимания (с несколькими существенными исключениями). А в 20іі году произошло примечательное событие: Apple и Google потратили больше на судебные иски и выплаты, связанные с патентами, чем на исследования и разработки новых продуктов[213].
ENIAC рассекречивают
Даже теперь, когда команда Пенна занималась проектированием EDVAC, они по-прежнему должны были получать разрешение на то, чтобы запустить его предшественник ENIAC и поработать на нем. Шла осень 1945 года.
К тому времени война закончилась. Уже не было никакой необходимости вычислять артиллерийские траектории, но основные задачи, которые считались на ENIAC, были все-таки военными. В какой-то момент из Нью-Мексико, из Лос-Аламосской национальной лаборатории, занимавшейся разработкой атомного оружия, пришло секретное задание. Работавший там физик-теоретик венгерского происхождения Эдвард Теллер предложил конструкцию водородной бомбы, получившей название The Super, где устройство, в котором происходило деление атомных ядер, использовалось для инициирования реакции синтеза. Чтобы определить, как это будет работать, ученым необходимо было рассчитать, какова интенсивность реакции в каждую десятимиллионную долю секунды.
Суть проблемы была строго засекречена, но в Пенн в октябре были переданы гигантские уравнения для решения на ENIAC. Для ввода данных потребовался почти миллион перфокарт, и Дженнингс и некоторые ее коллеги были отправлены в комнату, где стоял ENIAC и где Голдстайн мог руководить процессом его работы. ENIAC решал уравнения, и в процессе расчета выяснилось, что конструкция Теллера не будет работать. Математик Станислав Улам, беженец из Польши, вместе с Теллером (и Клаусом Фуксом, оказавшимся позже русским шпионом), основываясь на результатах ENIAC, стали работать над изменением конструкции водородной бомбы, с тем чтобы в ней могла возникнуть интенсивная термоядерная реакция[214].
До тех пор пока это секретное задание не было выполнено, существование ENIAC держали в тайне. Он не демонстрировался широкой публике до 15 февраля 1946 года. На эту дату армейское начальство и Пенн запланировали гала-презентацию ENIAC, предварительно подготовив общественность с помощью нескольких публикаций[215]. Капитан Голдстайн решил, что кульминационным пунктом должна быть демонстрация расчета траектории ракеты. Поэтому за две недели до события он пригласил Джин Дженнингс и Бетти Снайдер к себе домой, и пока Адель готовила чай, спросил их, могли бы они быстро написать программу для ENIAC и закончить расчет вовремя. Дженнингс заявила: «Мы наверняка сможем это сделать». Она была взволнована, ведь это позволило бы им получить непосредственный доступ к машине, что случалось редко[216]. Они приступили к работе, подключив шины запоминающего устройства к нужным блокам и настроив блоки ввода программы.
Мужчины знали, что успех их демонстрации находился в руках этих двух женщин. Мокли пришел в одну из суббот с бутылкой абрикосового бренди, чтобы поддержать их силы. «Это было восхитительно, — вспоминала Дженнингс. — С этого дня я всегда держала бутылку абрикосового бренди в своем шкафу». Через несколько дней декан инженерной школы принес им бумажный пакет с бутылкой виски и сказал: «Пусть это облегчит вашу работу». Снайдер и Дженнингс никогда не были большими выпивохами, но подарок был для них важен. Дженнингс вспоминала: «Мы так поняли, насколько важной была эта демонстрация»[217].
Накануне презентации был День святого Валентина, но несмотря на то, что Снайдер и Дженнингс обычно любили пообщаться с друзьями, на этот раз в празднествах не участвовали. Дженнингс рассказывала: «Вместо этого мы закрылись вместе с этой удивительной машиной ENIAC, быстро внося последние исправления и проводя проверки программы». Но от одного глюка никак не получалось избавиться, и причину его они не могли понять: программа работала замечательно и послушно рисовала точки траектории артиллерийских снарядов, но не понимала, когда остановиться. Даже после того как снаряд ударялся о землю, программа продолжала рассчитывать траекторию, «как будто этот гипотетический заряд пролетал сквозь землю с той же скоростью, с которой он летел по воздуху». Как описывала это Дженнингс: «Мы знали, что, если не решим эту проблему, демонстрация провалится и изобретателям ENIAC и инженерам будет неловко»[218].
Дженнингс и Снайдер работали до самой пресс-конференции, состоявшейся поздним вечером, пытаясь исправить ошибку, но не могли. В середине ночи они, наконец, сдались и разошлись, поскольку Снайдер нужно было успеть на последний поезд — она жила в пригороде. Но и после того как Снайдер уже легла в постель и заснула, она продолжала искать причину: «Я проснулась посреди ночи, думая, в чем ошибка… Я встала, села на первый утренний поезд, чтобы проверить одно соединение». Проблема в том, что там была установка в конце цикла типа DO, которая отключала один разряд. Она щелкнула нужным выключателем, и глюк исчез. «Бетти смогла во сне сделать такое сложное логическое заключение, которое большинство людей не могло сделать наяву, — восхищалась Дженнингс позже. — Во время сна она в подсознании распутала узел, который ее сознание было не в состоянии распутать»[219].
На демонстрации ENIAC смог за пятнадцать секунд провести расчеты траектории ракеты, на которые расчетчики, даже работая с дифференциальным анализатором, потратили бы несколько недель. Все это выглядело очень впечатляюще. Мокли и Эккерт, как опытные инноваторы, сумели организовать хорошее шоу. Верхушки электронных ламп в сумматорах ENIAC, образующие решетку 1010, виднелись через отверстия в передней панели машины. Слабый свет от неоновых ламп, служивших индикаторами, был едва заметен. Эккерт взял мячи для пинг-понга, разрезал их пополам, написал на них цифры и нацепил на лампы. Когда компьютер начал обработку данных, свет в комнате выключили, и зрители пришли в восторг от мигающих пинг-понговых мячиков — зрелище, которое стало хитом в фильмах и телевизионных шоу. «Когда стала рассчитываться траектория, цифры начали накапливаться в сумматорах и передаваться из одного места в другое, огни начали мигать, как рекламные билборды в Лас-Вегасе, — рассказывала Дженнингс. — Мы сделали то, что хотели. Мы запрограммировали ENIAC»[220]. Это стоит повторить: они запрограммировали ENIAC.