Почти все, имеющие отношение к IT, слышали историческую байку о первом баге в истории. Баг (английское bug, «жук») был вполне буквальным: в 1947 году в реле гарвардского компьютера Mark II застрял мотылёк. Куда меньшее количество наших современников знают, что процесс его извлечения из недр ЭВМ окрестила «дебаггингом» некая Грейс Хоппер — да так метко, что термин «дебаггинг» жив по сей день.
Ну и тем более немногие в курсе, что Грейс Хоппер отметилась в истории компьютерных технологий далеко не только этим курьёзом, но и куда более весомыми вещами. И вообще была впечатляющей особой, каррамба, сумевшей «войти в айти» на самой его заре — до того, как это стало мейнстримом. В конце концов, в честь абы кого не будут называть разом эсминец, суперкомпьютер, трансатлантический подводный кабель связи и колледж в Йельском университете!
Будь как бабуля Хоппер, юзернейм, и в твою честь тоже назовут эсминец
Грейс Хоппер — в девичестве Мюррей — родилась в Нью-Йорке в далёком уже декабре 1906 года в почтенной семье шотландско-голландского происхождения. Море у девочки было буквально в крови: её прадед Александр Уилсон Рассел, адмирал ВМС США, участвовал в разгроме эскадры конфедератов в заливе Мобил в 1864-м. Грейс была старшим ребёнком и заводилой младших — ей неоднократно влетало за то, что она подбивала сестру и брата на всевозможные похождения.
Впрочем, взгляды её семья имела вполне прогрессивные, да ещё и с математико-техническим уклоном: отец и дед Грейс служили страховыми брокерами и отменно умели считать, а мать была дочерью нью-йоркского инженера-строителя и хорошо разбиралась в математике. Неудивительно, что девочка росла любознательной: как-то раз, заинтересовавшись устройством часов, она разобрала семь будильников подряд — пока от неё не потребовали ограничить разрушительные эксперименты только одним устройством.
Маленькая Грейс Хоппер по версии нейросети Kandinsky 2.1
В частной школе для девочек из Грейс, по тогдашней традиции, пытались сделать образцовую леди и будущую жену, но как-то не сложилось. Зато отец одобрил её план поступить в женский колледж Вассар и получить хорошее образование: ведь большая часть наследства должна была отойти единственному сыну.
При первой попытке Грейс завалила латынь (и в самом деле, зачем она математику), но со второй всё-таки прошла в колледж. А затем поступила не куда-нибудь, а в Йельский университет — известный оплот иллюминатов с рептилоидами, — где за отличия в учёбе даже получила почётный диплом студенческого братства «Phi Beta Kappa». Грызение гранита науки не помешало ей одновременно с получением магистерской степени в 1930-м выйти замуж за профессора литературы Нью-Йоркского университета Винсента Фостера Хоппера — и обрести ту самую фамилию, под которой Грейс и войдёт в историю IT.
В 1934-м Грейс Хоппер защитила в Йеле диссертацию «Новые типы критериев неприводимости» на соискание степени доктора математики и математической физики. Её научным руководителем был Ойстин Оре — знаменитый норвежский математик, специалист в области алгебры, теории чисел и теории графов. Его открытия и наработки позже весьма пригодились в развития программирования, в том числе и самой Хоппер. В том же 1934-м Грейс сама начала преподавать математику в колледже Вассар, откуда недавно выпустилась. В 1941-м она получила звание доцента — и тут до США добралась Вторая мировая война в лице ударивших по Перл-Харбору палубных самолётов адмирала Нагумо.
Хрупкая барышня-математик незамедлительно попыталась записаться в военно-морской флот по стопам прадеда-адмирала. Однако её не взяли, причём вовсе не за принадлежность к женскому полу. Во-первых, как раз через два дня после вступления страны в войну Грейс стукнуло 35 лет — многовато по тогдашним меркам, а во-вторых, она весила всего лишь 47 кило — на семь килограммов меньше минимального веса для женщин-военнослужащих. В довершение всего ей сказали, что хорошим преподавателем математики она принесёт стране больше пользы, а на флоте и без неё людей хватит.
Грейс Хоппер в 40-е годы
Однако Грейс была упорна в своём новообретённом стремлении надеть военно-морской мундир. В 1943-м она взяла отпуск в колледже и вступила в WAVES — женский добровольческий корпус резервистов при военно-морском флоте, призванный освободить флотских мужчин от офисной работы в тылу. В декабре 43-го её в порядке исключения приняли в школу курсантов резерва, Грейс окончила её лучшей на курсе и уже спустя год была назначена в бюро артиллерийских вычислительных проектов при Гарвардском университете в звании младшего лейтенанта ВМС США.
Тут-то и начался её путь в IT. Потому что Грейс как талантливого математика направили в команду Говарда Эйкена, работавшую над новейшим электромеханическим компьютером Harvard Mark I (он же IBM Automatic Sequence Controlled Calculator): монстром площадью в несколько десятков квадратных метров. Работа была увлекательной, но сложной и требовала очень много времени. Постоянно мотаться между Бостоном и Нью-Йорком было затруднительно — посему личная жизнь пошла под откос, и в 1945-м Грейс развелась со своим профессором литературы. Замуж она больше не вышла, предпочтя карьеру айтишника, а фамилию Хоппер оставила себе.
Грейс стала одним из трёх первых программистов новоявленного чуда техники массой 4,5 тонн, работавшего на перфокартах и вычислявшего логарифмы по целой минуте. Даже для сложения требовалась треть секунды, а для умножения — уже шесть секунд. Грейс написала для Harvard Mark I 561-страничное руководство, а также участвовала в вычислениях для расчёта траекторий снарядов корабельных зениток, которые в итоге превратились в почти непреодолимую преграду даже для японских камикадзе. Ну, и для Манхэттенского проекта покодила с Джоном фон Нейманом — результатом чего стало появление американского ядерного оружия вкупе с Хиросимой и Нагасаки.
Говард Эйкен, Грейс Хоппер и другие члены команды на фоне компьютера Harvard Mark I
Война окончилась, но Грейс уже была увлечена компьютерными вычислениями, а флотский мундир по-прежнему нравился ей больше любого платья. В гарвардской лаборатории она продолжила работать с новыми компьютерами: сначала Harvard Mark II, а затем и Harvard Mark III. Именно при работе с Harvard Mark II жарким летом 1947 года и случилась та самая история с «первым багом». В какой-то момент компьютер начал «глючить», сотрудники лаборатории принялись искать причину сбоя — и нашли слегка поджаренного мотылька, зачем-то забравшегося в реле панели F под номером 70.
Тот самый «первобаг», который теперь заботливо хранится в Национальном музее американской истории Смитсоновского института
Вот только Грейс Хоппер, вопреки популярной легенде, могла быть в этом деле довольно-таки ни при чём.
Термин «баг» применительно к различным конструктивным проблемам в технике использовался в американском английском как минимум с 1870-х годов: его упоминал в переписке ещё Томас Эдисон в 1878-м. В годы Второй мировой термин применялся особенно активно, часто в сочетании с другой живописной лексикой — в связи с большим количеством свежеразработанной и потому «сырой» военной техники в распоряжении американских военнослужащих. Даже у роботов Айзека Азимова в рассказе «Как поймать кролика» 1944 года технические проблемы в устройстве назывались именно багами:
THE VACATION WAS LONGER THAN TWO WEEKS. That, Mike Donovan had to admit. It had been six months, with pay. He admitted that, too. But that, as he explained furiously, was fortuitous. U. S. Robots had to get the bugs out of the multiple robot, and there were plenty of bugs, and there are always at least half a dozen bugs left for the fieldtesting.
В классическом русском переводе Алексея Иорданского (1964 год) этот фрагмент звучит так:
Отдых продолжался более двух недель — этого Донован не мог отрицать. Они отдыхали шесть месяцев, с сохранением заработной платы. Это тоже факт. Но, как сердито объяснил Донован, так получилось чисто случайно. Просто специалисты «Ю. С. Роботс» хотели выловить все недоделки составного робота. Недоделок хватало — и всегда по меньшей мере десяток оставался до полевых испытаний.
В общем, к тому моменту, когда 9 сентября 1947 года в недрах реле компьютера Harvard Mark II нашли насекомое, термин был вполне употребителен — именно поэтому бедолагу-мотылька так и охарактеризовали.
Со словом «дебаггинг», которое часто приписывают Грейс, тоже не всё понятно. Дело в том, что в тот день Хоппер попросту не присутствовала в лаборатории, где работали над Harvard Mark II, — и непосредственно в процессе событий изобрести термин «дебаггинг» не могла.
Более того, слово debugging к тому времени тоже успело появиться. Правда, не у американцев, а у англичан: уже в 1945 году Оксфордский словарь цитировал это понятие в значении «исправление конструктивных дефектов при испытании авиационных двигателей». В том же году он упоминался в британском авиационном журнале в контексте работы с авиационными камерами. Так что первыми его придумали, похоже, авиамеханики Королевских ВВС в годы Второй мировой.
Примерно так выглядел дебаггинг в изначальном смысле слова
Вот только гарвардские компьютерщики, в отличие от офицеров действующих войск, вряд ли имели хоть какой-то опыт общения с персоналом британской авиации. Общепонятным слово debugging в конце 40-х было только в среде Королевских ВВС. Впрочем, его нашли и в письме ядерного физика Роберта Оппенгеймера за 1944 год — так что, в теории, через «несколько рукопожатий» оно могло опосредованно дойти и до команды также работавших на Манхэттенский проект компьютерщиков Гарварда.
Вполне возможно, в американском английском оно было изобретено заново — и именно в среде тех, кто работал над первыми американскими компьютерами. Возможно, что и самой Грейс Хоппер. Проблема в том, что мы не знаем.
Зато мы знаем, что Хоппер пришла в восторг от каламбурной истории с поимкой «бага» и всю жизнь очень любила рассказывать её своим многочисленным студентам. На своём приоритете в изобретении слова она никогда не настаивала — но из-за большого количества слушателей и частого упоминания этой истории термин мог попросту «приклеиться» к харизматичной и уважаемой IT-специалистке с офицерским званием.
В любом случае, байка про баг — лишь забавный курьёз. Настоящий вклад Грейс Хоппер в историю разработки компьютеров гораздо весомее. Дело в том, что именно она «научила компьютеры понимать по-английски», изобретя первый компилятор.
В 1949 году Грейс Хоппер ушла из лаборатории Гарварда и — оставаясь офицером резерва ВМС США — начала работать на компанию Eckert-Mauchly Computer Corporation, которую вскоре купила Remington Rand. И не просто работать: Грейс стала главным математиком команды, работавшим над созданием первого коммерческого компьютера UNIVAC I. Он был куда совершеннее недавних «Марков»: сложение выполнялось примерно за 500 микросекунд, а умножение — за 2000 микросекунд.
Грейс Хоппер за консолью UNIVAC I
Машина предназначалась для использования частными компаниями, где вполне могло не оказаться математиков уровня Гарварда. После некоторого объёма общения с клиентами и конечными пользователями Грейс пришла в голову ныне самоочевидная, но тогда революционная идея: а что, если вводить программный код на основе слов английского языка? Который затем будет преобразовываться, или компилироваться, специальной программой в понятные машине команды — и всё это вместо того, чтобы делать это посредством сложной для непосвящённого математической нотации.
В конце 1953 года Хоппер (уже в звании лейтенант-коммандера, или капитана третьего ранга для российского флота) донесла свою мысль до руководства Remington Rand, показав экспериментальный компилятор «A Compiler», он же A-0. Теперь каждая подпрограмма (например, возведение числа в степень) получала свой уникальный номер, записывалась в виде машинного кода на кассету и вызывалась в основной программе по этому номеру.
Пример машинного кода
Грейс Хоппер обосновывала свою позицию следующим образом:
Когда-то я была профессором математики. В те времена я обнаружила, что есть студенты, которые просто не могут изучить математику. Затем мне поручили сделать так, чтобы предпринимателям было легко пользоваться нашими компьютерами. Оказалось, что вопрос не в том, смогут ли они изучить математику, а в том, захотят ли они делать это. <...> Многие из них говорили: «Выбросьте эти символы — я не знаю, что они означают, у меня нет времени их изучать!» А тем, кто заявляет, будто люди, обрабатывающие данные, должны использовать математическую нотацию, я посоветую для начала обучить математической записи вице-президента, полковника или адмирала. Уверяю вас, я уже пробовала.
Поначалу от неё отмахнулись, несмотря на представленные наработки. «В это не могли поверить, — вспоминала позже Хоппер. — У меня был работающий компилятор, и никто им не пользовался. Мне говорили, что компьютер может выполнять только арифметические операции».
Однако Грейс продолжила работу над созданием первого компилируемого языка — и стала-таки главой специально учреждённого под неё отдела автоматизации программирования. Уже в 1955 году её команда представила спецификацию к языку программирования FLOW-MATIC или B-0 (Business Language version 0), предназначавшегося для работы на UNIVAC I. Грейс реализовала прототип компилятора, который убедил руководство компании в осуществимости, полезности и коммерческих перспективах идеи. В 1958 году он стал доступен публично.
Ну а в 1959 году на свет появился разработанный уже коммандером (~капитаном второго ранга) Грейс Хоппер язык программирования COBOL: «common business-oriented language», «общий бизнес-ориентированный язык». Естественно, и тут не обошлось без ушей Пентагона, который считал введение единого стандарта для всё более массовых компьютерных систем (в том числе закупаемых для военных нужд) делом полезным. Именно Пентагон, закупавший в те годы солидную часть коммерческих компьютеров, настоял на необходимости предустановки на всех машинах компиляторов Кобола — ну и понеслось. А Грейс Хоппер получила почётное прозвище «бабушки Кобола» — и, соответственно, всех последующих языков программирования на основе перевода слов из человеческих языков компиляторами.
С тех пор Кобол настолько глубоко проник в компьютерные системы американского государства и его военных структур, а также больших старых банков, что по сей день используется на немалом числе старых мейнфреймов. И уходит под давлением новых систем медленно и нехотя. Ещё в 1997 году кодом на Коболе обрабатывалось около 90% глобальных финансовых транзакций и 75% коммерческих транзакций.
При этом Кобол — как «дедушка» поздних и более рационально устроенных языков — взрывал
IDENTIFICATION DIVISION.
PROGRAM-ID. HELLO-WORLD.
*
ENVIRONMENT DIVISION.
*
DATA DIVISION.
*
PROCEDURE DIVISION.
PARA-1.
DISPLAY «Hello, world.».
*
EXIT PROGRAM.
END PROGRAM HELLO-WORLD.
Взбешённый этим вязким «многабукафф», нидерландский учёный Эдсгер Дейкстра даже утверждал, что Кобол ни много ни мало калечит
Сыграв свою главную роль в истории IT, Грейс Хоппер и не подумала успокаиваться. В 1966 году и в 60-летнем возрасте она, в соответствии с правилами, была отправлена в отставку в звании коммандера. Но на «гражданке» провела всего полгода, вскоре вернув погоны и продолжив карьеру. С 1967 года Хоппер занимала пост директора Группы языков программирования в Департаменте информационных систем ВМФ США, в числе прочего продолжая развивать Кобол, а также настаивая на замене больших централизованных вычислительных систем компьютерными сетями:
Первопроходцы перевозили тяжести на быках. И, если бык не мог сдвинуть бревно, они не пытались вырастить быка побольше. Мы должны стремиться не к повышению мощности отдельных компьютеров, а к повышению численности компьютерных систем.
Также она разработала стандарты для тестирования компьютерных систем и компонентов (особенно для ранних языков программирования, таких как COBOL и FORTRAN), что изрядно поспособствовало унификации и универсализации софта и харда разных производителей. В 1973 году Грейс получила погоны капитана ВМС США — аналога капитана первого ранга по российской и советской системе флотских званий, ну а в 1985-ом, в знак заслуг перед американской компьютерной отраслью вообще и флотскими вычислительными системами в частности, стала одной из первых в мире женщин-адмиралов. Прадед мог бы гордиться!
Капитан Грейс Хоппер получает звание коммодора ВМС США
Правда, адмиральский мундир по службе Хоппер носила менее года. Уже в 1986-м она официально вышла в отставку в рекордном для морского офицера возрасте 79 лет, восьми месяцев и пяти дней. Церемония, опять же в знак особого признания, проходила на борту 188-летнего (!) 52-пушечного фрегата USS Constitution — старейшего парусного корабля на планете из находящихся на плаву. Ко всему прочему, Грейс стала единственной женщиной, награждённой медалью Министерства обороны США «За выдающуюся службу» — высшей наградой для американских военнослужащих за небоевые, но важные свершения.
Церемония выхода в отставку контр-адмирала Грейс Хоппер на борту парусного фрегата USS Constitution
Впрочем, запомнилась Грейс Хоппер не только заслугами в развитии IT — но и тем, что внесла огромный вклад в его популяризацию и обучение новых компьютерных специалистов. Параллельно с военной службой и сопутствующими разработками она читала лекции по информатике и программированию: сначала в Пенсильванском университете, а затем в Университете Джорджа Вашингтона.
Если вы спросите меня, каким из своих достижений я больше всего горжусь, ответом будут все молодые люди, которых я научила за годы преподавания. Это важнее, чем написанная мною первая программа-компилятор.
За свои научные и педагогические заслуги Грейс Хоппер получила более 40 почётных учёных степеней в университетах разных стран мира. Её лекции пользовались огромным интересом в том числе потому, что она была очень ярким рассказчиком, привыкшим объяснять сложные материи не только гикам-айтишникам, но и не слишком выдающимся по эрудиции коллегам-военным.
«— Ну и бестолковые студенты мне попались!
— Что такое?
— Представляешь, объясняю теорему — не понимают. Объясняю второй раз — не понимают. В третий раз объясняю, сам уже понял, — а они всё не понимают!..» (народное творчество)
Знаменитым и даже меметичным стало её наглядное объяснение того, почему сигнал со спутников идёт отнюдь не мгновенно, а вычислительным устройствам для ускорения работы лучше быть как можно более компактными. Для пояснения этой мысли Хоппер обычно приходила на лекцию с 30-сантиметровым телефонным шнуром компании Bell, поясняя, что именно такое расстояние свет проходит за одну наносекунду. Порой она прихватывала и 300-метровую бухту кабеля — демонстрируя, что именно столько свет проходит уже за одну микросекунду.
До самой своей смерти Грейс Хоппер работала старшим консультантом в Digital Equipment Corporation, одной из крупнейших цифровых компаний тогдашних США. Её задачей было не только консультирование, но и представительские функции: в IT-среде Хоппер была знаменитостью и пользовалась большим уважением.
Умерла Хоппер мирно, во сне, в первый день нового 1992 года в возрасте 85 лет. Как и полагается офицеру вооружённых сил США, она была похоронена на Арлингтонском кладбище. На могильном камне по традиции перечислены военные кампании, к которым она имела хотя бы формальное отношение как офицер на технической должности.
А ещё, несмотря на кабинетную карьеру, в которой ей так и не удалось добраться до службы на боевом корабле, Грейс Хоппер была достойной наследницей своего прадеда-адмирала. Об этом наглядно свидетельствуют её цитаты:
Кораблю безопасней в порту, но он не для этого строился.
Идите и делайте: успеете оправдаться потом.
Проще добиться прощения, чем разрешения.
Самая опасная фраза в языке: «Мы всегда так делали».
Меня всегда больше интересовало будущее, чем прошлое.
Мы переборщили с менеджментом и забыли о лидерстве. Быть может, стоит вышвырнуть парней с MBA из Вашингтона.
Грейс Хоппер остаётся верна себе даже в детских книжках
Джей Эллиот, основатель и гендиректор Nuvel, а также бывший высокопоставленный сотрудник Apple, Macintosh, IBM и Intel, характеризовал Хоппер так: «Она до
Если бы Грейс Хоппер дожила до 2010-х, эта песня определённо была бы про неё (а Facebook таки принадлежит компании Meta, считающейся экстремистской организацией и запрещённой в РФ)
Ещё при жизни Грейс была весьма популярной — ну а в XXI веке окончательно стала культовой фигурой. Всего лишь через четыре года после смерти в её честь назвали новейший эсминец УРО USS Hopper типа «Arleigh Burke», который и поныне базируется на Перл-Харбор в составе то 7-го (Тихий океан), то 5-го (Персидский залив и окрестности) флота:
В 2010-м году в честь Грейс Хоппер назвали суперкомпьютер Cray XE6 производительностью в 1,28 петафлопс, работающий в Исследовательском центре Министерства энергетики США:
Ну а в 2013-м Google отметил 107-ю годовщину её рождения специальным дудлом:
Одного не довелось Грейс Хоппер: покомандовать не кодом или командами разработчиков, а на мостике боевого корабля. Чего ей со всей определённостью хотелось… но не сложилось.
Зато сложилось очень многое другое.
Автор: Алексей Костенков