Почти все, имеющие отношение к IT, слышали историческую байку о первом баге в истории. Баг (английское bug, «жук») был вполне буквальным: в 1947 году мотылёк застрял в реле гарвардского компьютера Mark II. Меньшее количество наших современников слышали, что процесс доставания означенного насекомого из недр ЭВМ назвала «дебаггингом» некто Грейс Хоппер — да так метко, что термин «дебаггинг» жив по сей день.
Ну и тем более не очень многие в курсе, что Грейс Хоппер отметилась в истории компьютерных технологий далеко не только этим курьёзом, но и куда более весомыми вещами. И вообще, была впечатляющей особой, каррамба, сумевшей «войти в айти» на самой его заре — до того, как это стало мейнстримом. В конце концов, в честь абы кого не будут называть разом эсминец УРО типа «Arleigh Burke», суперкомпьютер, трансатлантический подводный кабель связи и колледж в Йельском университете.
Грейс Хоппер, тогда ещё Грейс Мюррей, родилась в Нью-Йорке в далёком уже декабре 1906 года в почтенной семье шотландско-голландского происхождения. Море у девочки было буквально в крови: её прадед Александр Уилсон Рассел, адмирал ВМС США, участвовал в разгроме эскадры конфедератов в сражении в заливе Мобил в 1864-м. Грейс была старшим ребёнком и заводилой младших — ей неоднократно влетало за то, что она подбивала сестру и брата на всевозможные похождения.
Впрочем, помимо шалостей Грейс, как и полагалось тогдашней «девочке из хорошей семьи», вышивала крестиком и играла на фортепьяно. Впрочем, семья её имела взгляды вполне прогрессивные, да ещё и с математико-техническим уклоном: отец и дед Грейс были страховыми брокерами и умели много считать, а мать была дочерью нью-йоркского инженера-строителя и хорошо разбиралась в математике. Девочка была очень любознательной: как-то раз, заинтересовавшись устройством часов, она разобрала семь будильников подряд — пока от неё не потребовали ограничиться разрушительными экспериментами только над одним устройством.
В частной школе для девочек из Грейс, по тогдашней традиции, пытались сделать образцовую леди и будущую жену, но как-то не очень сложилось. Зато отец одобрил её план поступить в женский колледж Вассар и получить хорошее образование: ведь большая часть наследства должна была отойти единственному сыну.
С первой попытки Грейс завалила латынь — но со второй прошла в колледж. А затем поступила не куда-нибудь, а в Йельский университет, оплот всяческих иллюминатов с рептилоидами, по мнению конспирологов, где за отличия в учёбе получила в числе прочего почётный диплом студенческого братства «Phi Beta Kappa». Усилия в превозмогании гранита науки не помешали ей одновременно с получением магистерской степени в 1930-м выйти замуж за профессора литературы Нью-Йоркского университета Винсента Фостера Хоппера, и обрести ту самую фамилию, под которой Грейс и войдёт в историю IT.
В 1934-м Грейс Хоппер защитила в Йеле диссертацию «Новые типы критериев неприводимости» на соискание степени доктора математики и математической физики. Её научным руководителем был Ойстин Оре, знаменитый норвежский математик, специалист в области алгебры, теории чисел и теории графов. Его открытия и наработки позже весьма пригодились в развития программирования, в том числе и самой Хоппер. В том же 1934-м Грейс сама начала преподавать математику в колледже Вассар, откуда недавно выпустилась. В 1941-м она получила звание доцента — и тут до США добралась Вторая мировая война в лице ударивших по Пирл-Харбору палубных самолётов авианосного соединения адмирала Нагумо.
Хрупкая барышня-математик незамедлительно попыталась записаться в военно-морской флот по стопам прадеда-адмирала. Однако её не взяли, и не за принадлежность к женскому полу: во-первых, ей как раз спустя два дня после вступления страны в войну стукнуло 35 лет, многовато по тогдашним меркам, а, во-вторых, она весила всего лишь 47 кило — на семь кило меньше минимального веса для женщин-военнослужащих. В довершение всего ей сказали, что хорошим преподавателем математики она принесёт стране больше пользы, а на флоте и без неё людей хватит.
Грейс Хоппер в 40-е годы
Однако Грейс была упорна в своём новообретённом стремлении одеть военно-морской мундир. В 1943-м она взяла отпуск в колледже и вступила в WAVES: женский добровольческий корпус резервистов при военно-морском флоте, призванный освободить флотских мужчин от офисной работы в тылу. В декабре 43-го Грейс — в порядке исключения по слишком большому возрасту и слишком малому весу — поступила в школу курсантов резерва, окончила её лучшей на курсе, и уже спустя год была назначена в бюро артиллерийских вычислительных проектов при Гарвардском университете в звании младшего лейтенанта ВМС США.
Тут-то и начался её путь в IT. Потому что Грейс как талантливого математика направили в команду Говарда Эйкена, работавшую над новейшим электромеханическим компьютером Harvard Mark I, он же IBM Automatic Sequence Controlled Calculator (ASCC): монстру площадью в несколько десятков квадратных метров. Работа была увлекательной, но сложной и требовала очень много времени, постоянно мотаться между Бостоном и Нью-Йорком было затруднительно — посему личная жизнь пошла под откос, и в 1945-м Грейс развелась с мужем-профессором литературы. Замуж она больше не вышла, предпочтя карьеру айтишника, а фамилию мужа оставила себе.
Грейс Хоппер стала одним из трёх первых программистов новоявленного чуда техники массой 4,5 тонны, работавшего на перфокартах и вычислявшего логарифмы по целой минуте. Даже для сложения требовалась треть секунды, а для умножения — уже шесть секунд. Грейс написала для Harvard Mark I 561-страничное руководство, а также участвовала в вычислениях для расчёта траекторий снарядов корабельных зениток — превратившихся в результате в почти непреодолимую преграду даже для отчаянных японских камикадзе. Ну и для Манхэттенского проекта покодила с Джоном фон Нейманом, результатом чего стало появление американского ядерного оружия вкупе с Хиросимой и Нагасаки.
Говард Эйкен, Грейс Хоппер и другие члены команды на фоне компьютера Harvard Mark I
Война окончилась, но Грейс уже была увлечена компьютерными вычислениями, а флотский мундир — уже лейтенантский — нравился ей больше любого платья. В гарвардской лаборатории она продолжила работать с новыми компьютерами: сначала Harvard Mark II, а затем и Harvard Mark III. Именно при работе с Harvard Mark II жарким летом 1947 года и случилась та самая история с «первым багом»: в какой-то момент компьютер начал «глючить». Сотрудники лаборатории принялись искать причину сбоя — и нашли слегка поджаренного мотылька, зачем-то забравшегося в реле панели F под номером 70.
Компьютер Harvard Mark II, в недрах которого и нашли «первый компьютерный баг»
Вот только лично Грейс Хоппер, вопреки популярной легенде, могла быть в этом деле довольно-таки ни при чём.
Термин «баг» применительно к различным конструктивным проблемам в технике использовался в американском английском как минимум с 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 год) этот фрагмент звучит так:
Отдых продолжался более двух недель – этого Донован не мог отрицать. Они отдыхали шесть месяцев, с сохранением заработной платы. Это тоже факт. Но, как сердито объяснил Донован, так получилось чисто случайно. Просто специалисты «Ю. С. Роботс» хотели выловить все недоделки составного робота. Недоделок хватало – и всегда по меньшей мере десяток оставался до полевых испытаний.
Майкл Донован и Грегори Пауэлл пытаются разобраться в багах робота DV-5
В общем, к тому моменту, когда 9 сентября 1947 года в недрах реле компьютера Harvard Mark II нашли насекомое, термин был употребителен. В общем-то, именно поэтому бедолагу-мотылька так и охарактеризовали, в рамках общепонятного для технических специалистов каламбура.
Только вот и с «дебаггингом» как словом, придуманным Грейс, всё не очень понятно. Попробуем разобраться.
Дело в том, что в тот момент и вообще в тот день Хоппер попросту не присутствовала в лаборатории, где работали над Harvard Mark II. И непосредственно в процессе и на месте событий изобрести термин «дебаггинг» не могла.
Более того, слово debugging к тому времени тоже успело появиться. Правда, не у американцев, а у англичан: уже 1945 году Оксфордский словарь цитировал это понятие в значении исправления конструктивных дефектов при испытании авиационных двигателей. В том же году он применялся в британском авиационном журнале в контексте работы с авиационными камерами. В общем, первыми его придумали, похоже, авиамеханики Королевских ВВС в годы Второй мировой.
Примерно так выглядел дебаггинг в изначальном смысле слова
Вот только гарвардские военно-морские компьютерщики, в отличие от офицеров действующих войск, вряд ли имели хоть какой-то опыт общения с персоналом британской авиации. Общепонятным слово debugging было в конце 40-х только в среде Королевских ВВС. Впрочем, его нашли и в письме ядерного физика Роберта Оппенгеймера за 1944 год — и теоретически оно могло опосредованно дойти через «несколько рукопожатий» до команды также работавших на Манхэттенский проект компьютерщиков Гарварда.
Вполне возможно, в американском английском в компьютерном значении оно было изобретено заново. И именно в стенах Гарварда в среде тех, кто работал над первыми американскими компьютерами. Возможно, и Грейс Хоппер. Точных данных у нас нет.
Зато мы знаем, что Грейс Хоппер пришла в восторг от каламбурной истории с поимкой «бага» и всю жизнь очень любила её рассказывать своим многочисленным студентам и слушателям лекций. На своём приоритете в изобретении слова она никогда не настаивала — но из-за большого количества слушателей и частого упоминания этой истории термин вполне мог «приклеиться» к харизматичной и уважаемой многими IT-специалисткой с офицерским званием.
Что мы знаем более-менее точно — что впервые на бумаге этот термин, ещё в кавычках, появился в официальных отчётах о разработке американских компьютеров только в 1952 году. Зато к 1963 году он уже был общепонятен в компьютерной среде и не требовал ни кавычек, ни дополнительных разъяснений. В какой мере это стало следствием лекций Хоппер, обожавшей травить на них байки вообще и про «бага» в частности, а в каком — просто восприимчивости среды к удобному и интуитивно понятному термину (который мог быть изобретён независимо не раз и не два), мы попросту не знаем.
Однако легенда получилась всё равно хорошей и красивой.
Ныне тот самый первобаг, приклеенный к странице журнала испытаний Harvard Mark II, заботливо хранится в Национальном музее американской истории Смитсоновского института в Вашингтоне.
В любом случае, байка про баг — лишь забавный курьёз. Настоящий вклад Грейс Хоппер в историю разработки компьютеров — гораздо весомее. Дело в том, что именно она «научила компьютеры понимать по-английски», изобретя первый компилятор.
В 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 году на свет стараниями комитета по языкам систем обработки данных CODASYL появился основанный на разработанном уже коммандером (~капитаном второго ранга) Грейс Хоппер FLOW-MATIC язык программирования 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 года она занимала пост директора Группы языков программирования в Департаменте информационных систем ВМФ США, в числе прочего продолжая развивать Кобол, а также настаивая на замене больших централизованных вычислительных систем компьютерными сетями — впрочем, тут она пионером не была, первые сигналы по ARPANET прошли уже в 1969 году.
Она также разработала реализацию стандартов для тестирования компьютерных систем и компонентов, особенно для ранних языков программирования, таких как COBOL и FORTRAN, что изрядно способствовало унификации и универсализации софта и харда разных производителей. В 1973 году Грейс получила погоны капитана ВМС США — аналога капитана первого ранга по российской и советской системе флотских званий.
Ну а в 1985 году Грейс Хоппер, в знак заслуг перед американской компьютерной отраслью вообще и флотскими вычислительными системами (роль которых в военном деле стремительно росла с начала 1970-х) в частности, стала одной из первых в мире женщин-адмиралов. Строго говоря, ей ещё в 1983 году по коллективному обращению Палаты представителей к президенту Рейгану присвоили звание коммодора — промежуточное звание между самым старшим капитаном и самым младшим адмиралом. Но в 1985-м звание коммодора в очередной раз упразднили, коммодоры превратились в уникальных для американского флота «младших контр-адмиралов» (Rear Admiral (lower half)). Таким, слегка бюрократическим образом, Грейс Хоппер в последний год службы получила-таки адмиральские погоны — как её прадед.
Капитан Грейс Хоппер получает звание коммодора ВМС США, которое затем превратится в адмиральское
Правда, адмиральский мундир по службе носила она менее года. Уже в 1986-м она официально вышла в отставку в рекордном для морского офицера возрасте 79 лет, восьми месяцев и пяти дней. Церемония, опять же, в знак особого признания — проходила на борту 188-летнего парусного 52-пушечного фрегата USS Constitution — старейшего парусного корабля на планете из находящихся на плаву и выходящих в море. Ко всему прочему, она стала единственной женщиной, награждённой медалью Министерства обороны США «За выдающуюся службу» — высшей наградой для американских военнослужащих за небоевые, но важные свершения.
Церемония выхода в отставку контр-адмирала Грейс Хоппер на борту парусного фрегата USS Constitution
Впрочем, запомнилась Грейс Хоппер не только заслугами в развитии IT — но и тем, что внесла огромный вклад в его популяризацию и обучение новых компьютерных специалистов. Параллельно с военной службой и сопутствующими разработками она читала лекции по информатике и программированию: сначала в Пенсильванском университете, а затем в Университете Джорджа Вашингтона.
Если вы спросите меня, каким из своих достижений я больше всего горжусь, ответом будут все молодые люди, которых я научила за годы преподавания. Это важнее, чем написанная мною первая программа-компилятор.
Грейс Хоппер за свои научные и педагогические заслуги получила более 40 почётных учёных степеней в университетах разных стран мира. Её лекции пользовались огромным интересом в том числе потому, что она была очень ярким и опытным рассказчиком — привыкшим объяснять сложные компьютерные и физико-математические материи не только гикам-айтишникам, но и не слишком выдающимся по эрудиции или хотя бы интеллекту коллегам-военным.
Знаменитым и даже меметичным стало её наглядное объяснение того, сколько свет проходит за одну наносекунду — и именно поэтому сигнал со спутников идёт отнюдь не мгновенно. А вычислительным устройствам для ускорения работы лучше быть как можно более миниатюрными и компактными. Для пояснения этой мысли она обычно приходила на соответствующую лекцию с тридцатисантиметровым телефонным шнуром компании 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-ю годовщину её рождения специальным дудлом:
Про Грейс Хоппер пишут детские книги…
… и делают игры по ловле жуков-багов
Одного не довелось Грейс Хоппер: покомандовать не исполняемым кодом и не командами разработчиками, а на мостике боевого корабля. Чего ей со всей определённостью хотелось… но не сложилось.
Зато сложилось очень многое другое.
Автор: Алексей Костенков