Вверху — миноносец ВМС США «Хоппер». Внизу — контр-адмирал Грейс Хоппер в январе 1984 года. Грейс Хоппер — единственная женщина-математик, именем которой назван корабль.
* * *
В ВАШЕМ КОМПЬЮТЕРЕ ЗАВЕЛСЯ «БАГ»
Однажды, давным-давно, один компьютер постоянно совершал ошибки, и некоторые сомневались, что его программа правильно написана. Этим компьютером был Mark II, на дворе стоял 1947 год. После тщательного анализа оказалось, что причиной ошибок было обычное насекомое, застрявшее между контактами. Оно было обнаружено и «заархивировано», то есть вклеено в журнал происшествий. Так окончилась жизнь бедного насекомого — «бага» (по-английски bug означает «жук»). Хотя жука обнаружила не Г рейс, считается, что именно с ее легкой руки это слово вошло в обиход. С тех пор «баг» в программе обозначает уже не настоящего жука (сегодня это совершенно немыслимо), а ошибку в аппаратном или программном обеспечении. Ранее слово «баг» уже использовалось для обозначения неполадок в аппаратном обеспечении, и вот этот «жук» навсегда занял свое место в языке.
К компьютерным багам следует относиться со всей серьезностью. Они встречаются достаточно часто, обнаружить их порой очень сложно, и они могут нанести моральный и материальный ущерб на миллионы евро. Чтобы вы могли понять, как сложно бывает обнаружить баги, приведем всего один пример. Может случиться так, что несколько программ конфликтуют при выполнении единственной операции (это случается постоянно). Хотя по отдельности обе функционируют корректно, при одновременной работе обеих в неподходящий момент всегда возникает ошибка.
Некоторые происшествия, вызванные багами, весьма известны: в 1980-е годы баг в компьютерной программе медицинского оборудования привел к изменению дозы облучения при радиотерапии, что стало причиной смерти множества пациентов. Меньший резонанс среди широкой публики вызвал баг в управляющей программе прототипа ракеты «Ариан-5», ставший причиной падения ракеты. Цена этой ошибки составила 1 млрд долларов. По официальным оценкам американской комиссии, ежегодно в результате багов теряется 0,6 % валового национального продукта. Объявим же войну багам: эти мелкие ошибки могут нанести огромный ущерб.
Первый «баг» в истории, хранящийся в Национальном музее американской истории. В отличие от современных, этот «баг» был настоящим.
* * *
Взгляд в будущее
По окончании войны Грейс была зачислена в резерв ВМС. В течение всей жизни она постоянно занимала сразу несколько должностей. В 1949 году она также занялась делами частной компании, которая меняла названия: Remington, Sperry, Sperry-Rand и в конечном итоге получила название UNIVAC. Когда Грейс была принята на должность ведущего математика, компания называлась Eckert-Mauchly Corporation. Отметим, что Джон Преспер Экерт (1919–1995) и Джон Уильям Мокли (1907–1980), чьи имена носила компания, были создателями первого электронного многоцелевого компьютера, также имевшего огромные размеры, — легендарного ENIAC. Теперь они занимались не только военными задачами, связанными с баллистикой и взломом шифров, но и вопросами бизнеса. Информатика стала обычной наукой, и ее бурное развитие было уже не остановить.
В развитие информатики немалый вклад внесла Грейс Хоппер: она работала над компилятором, который со временем получил название FLOW-MATIC. 1952 год повсеместно считается годом рождения первого компилятора. Но сделаем небольшое отступление, чтобы объяснить, что это такое.
В информатике различают машинный язык, который, если можно так выразиться, понятен компьютеру, и язык программирования, который используют программисты. Машинный язык проще, чем языки программирования, так как машина «глупа», но выполняет действия быстро, а программист намного «умнее», но выполняет действия медленнее. Компиляция — крайне трудоемкий этап: его смысл заключается в том, чтобы изложить процесс, придуманный человеком, так, чтобы компьютер его понял. В 1950 году Грейс Хоппер предвидела, что программы в будущем станут дороже аппаратного обеспечения. Она отстаивала свою точку зрения вопреки всеобщему скепсису, и время подтвердило ее правоту.
Работа Грейс Хоппер над компиляторами имела неожиданный результат: так как в информатике правят бал байты, состоящие из восьми бит, ей пришлось научиться проводить расчеты в восьмеричной системе счисления. Грейс овладела этой наукой в совершенстве и часто выполняла в ней обычные расчеты, например стоимости покупок в магазине. Она забыла десятичную систему счисления, рискуя при этом личными финансами.
Любой другой удовольствовался бы тем, что создал столь ценную программу, как компилятор, позволяющий компьютерам выплачивать зарплату и формировать счета, но не такова была Грейс Хоппер. Компьютеры стали не просто машинами, способными быстро выполнять арифметические действия, — они умели «мыслить» на языке математики и понимать пользователей. Грейс совершила еще один шаг вперед: рассказывают, что ей было неудобно работать с чековой книжкой и банковским счетом, и она попыталась сделать так, чтобы машина «понимала» английский язык — язык самой Грейс, язык бизнеса и большинства пользователей. В 1956 году ей удалось добиться того, что UNIVAC при помощи ее компилятора «понял» два десятка команд на английском языке. Так началось развитие языка COBOL. Чтобы четко определить его стандарты, в 1959 году был создан специальный комитет.
В 1966 году в силу возраста Грейс Хоппер была вынуждена уйти в отставку из военно-морских сил. Но не стоит думать, что ее история на этом заканчивается. ВМС предприняли бесчисленное множество попыток внедрить электронную систему выплат по огромной и запутанной системе расчетных листов. После неудачной попытки под номером 823 руководство выбросило белый флаг и попросило Грейс вернуться на службу — всего на шесть месяцев, чтобы покончить с этим кошмаром. Грейс вернулась на флот, решила проблему и больше не оставляла ВМС. Она еще много лет служила на флоте и выступала с лекциями. В 1973 году Грейс вышла в отставку в чине капитана.
В то время Хоппер направила все усилия на выработку дополнительных неофициальных стандартов для языков программирования FORTRAN и COBOL, которые позднее были утверждены в качестве образцов Национальным бюро стандартов. Смысл этих норм сводился к следующему: системы должны строиться с учетом их фактического использования и административных возможностей. Такие системы обходятся очень дешево и не нарушают работу уже имеющегося оборудования.
В 1983 году Грейс присвоили звание командующего эскадрой. В 1985 году это звание было упразднено и ему на смену пришло звание контр-адмирала. В 1986 году, когда Грейс окончательно оставила ВМС — только ВМС, но не работу, — ей исполнилось 80 лет. Хоппер была старейшим действующим офицером, и к ней относились как к живой легенде. Тогдашний президент США Джордж Буш-старший наградил ее медалью Министерства обороны «За выдающуюся службу» (к тому времени Грейс уже имела множество наград, но ни одна из них не могла сравниться с этой). Грейс Хоппер умерла 1 января 1992 года. Она была похоронена с воинскими почестями на Арлингтонском национальном кладбище.
В числе самых необычных почестей, которых она удостоилась, стал запуск в 1996 году миноносца, названного в ее честь. Менее масштабным, но столь же необычным стало присвоение ей премии «Человек года»: в 1969 году она стала первой женщиной — лауреатом премии «Человек года» (дословно «Man of the year», что также можно перевести как «Мужчина года»), присуждаемой Ассоциацией профессионалов индустрии информационных технологий. В 1991 году, незадолго до смерти, Хоппер получила высшую американскую награду в своей области — Национальную технологическую медаль.