Грейс Хоппер
Грейс Хоппер
Начиная с Чарльза Бэббиджа, мужчины, конструировавшие компьютеры, сосредотачивались в первую очередь на аппаратном устройстве. Но во время Второй мировой войны в процесс развития вычислительных машин были вовлечены женщины, которые уже на начальной стадии поняли важность программирования, так же как раньше это поняла Ада Лавлейс. Они разработали способы кодирования инструкций, которые давали указания аппаратуре, какие операции выполнять. Именно в программном обеспечении заложены магические формулы, способные чудодейственным образом преобразить машины.
Самой колоритной из первых женщин-программисток была смелая и энергичная, но в то же время очаровательная и интеллигентная Грейс Хоппер, служившая офицером в ВМС США. Позже она работала с Говардом Айкеном в Гарварде, а затем с Преспером Эккертом и Джоном Мокли. Родилась Грейс Брюстер Мюррей в 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. И к радости Хоппер, эту революцию в программировании совершили в первую очередь женщины.
Данный текст является ознакомительным фрагментом.