Памяти мотылька, или бабушка-адмирал Грейс Хоппер

65 лет назад, 9 сентября 1947 года, из одного из первых компьютеров Mark II был извлечен застрявший между контактами реле мотылек, который оказался причиной сбоя в работе ЭВМ. С легкой руки руководителя группы программистов этого компьютера, Грейс Хоппер, понятие «жучка» и термин debugging в смысле «отладки программы» из малоизвестного жаргона инженеров перешли в разряд слов общеупотребительных. Впрочем, знаменита «потрясающая Грейс» далеко не только этим.

Урожденная Грейс Брюстер Мюррей, она появилась на свет в Нью-Йорке 9 декабря 1906 года и в детстве, в отличие от многих других девочек, больше всего интересовалась различного рода техникой. В 17 лет она поступила в один из первых в США женских университетов – колледж Вассар неподалеку от Нью-Йорка, а после окончания этого учебного заведения продолжила свое образование в аспирантуре гораздо более солидного Йельского университета, и даже стала первой в его истории женщиной – доктором математики. В 1930 г. она вернулась в Вассар в качестве преподавателя этой учебной дисциплины и практически одновременно вышла замуж за Винсента Хоппера, филолога из Нью-Йоркского университета. Хотя спустя 15 лет бездетные супруги развелись, Грейс до конца своей жизни продолжала носить фамилию бывшего мужа.

Наверное, Грейс Хоппер так и осталась бы никому не известным доцентом-математиком, если бы не Вторая мировая война. Вдохновленная всеобщим патриотическим порывом – а также памятью о собственном прадедушке, Александре Расселе, который был героем Мексиканской войны, дослужился до звания контр-адмирала и умер, когда Грейс было всего два года, – она поставила себе за цель поступить на службу в Военно-морские силы США.

Грейс в конце 1940-х годов

Однако женщин во флот стали брать только с 1942 года, и то лишь в специальное подразделение «Женского резерва», для работы, по большей части, в тылу – чтобы компенсировать нехватку мужчин, отправляемых на фронт. Но Хоппер потребовался еще целый год, чтобы убедить морское начальство одобрить ее кандидатуру: и по возрасту в 36 лет, и по весу в 47 кг (вместо минимальных 54-х) она казалась не очень-то подходящей фигурой для флотской службы. Старания Грейс увенчались успехом в декабре 1943 года, когда она сменила преподавание в колледже на учебу в Школе мичманов в штате Массачусетс.

Сидеть за партой рядом с девушками вдвое моложе было не очень вдохновляюще, как вспоминала потом Грейс Хоппер; тем не менее, учебу она закончила первой по успеваемости и в 1944 году, получив звание младшего лейтенанта, была направлена – не на фронт, как ей мечталось, а в вычислительный отдел Бюро боеприпасов, под начало Говарда Эйкена, как раз только что завершившего под крылом Гарвардского университета и на деньги от IBM конструирование первого американского программируемого компьютера – Марк I. Новинка была 17 м в длину и 2,5 м в высоту, весила 4,5 тонн и могла производить по три операции сложения или вычитания в секунду. Умножение требовало в 18 раз больше времени, т.е. 6 секунд, а одна операция деления выполнялась более 15 секунд.

Хотя Грейс Хоппер была математиком, а не физиком или инженером, как большинство других пионеров компьютерного дела, она сразу же нашла общий язык с новой ЭВМ. Ее первой задачей был расчет баллистических таблиц для корабельных орудий противовоздушной обороны: вычислив математические формулы для таких таблиц, Хоппер переводила их в инструкции для Марк I, записанные в двоичной системе. В дальнейшем компьютер производил расчеты сам, запрашивая только ввод переменных, таких как высота цели и расстояние до нее. Так Грейс Хоппер стала одним из первых в истории программистов, и в 1946 году даже опубликовала пионерскую книгу, посвященную этому роду деятельности: «Руководство по операциям с Автоматическим вычислителем, управляемом последовательностями» (Automatic Sequence Controlled Calculator – таково было громоздкое официальное название Марк I, придуманное ему руководством IBM).

Грейс Хоппер (как ни странно, в штатском) за пультом UNIVAC среди учеников

За Марк I последовали Марк II и Марк III – именно со вторым из них связана широко известная история с мотыльком. И хотя Грейс Хоппер не была первой, кто употребил понятие «bug» для обозначения непонятно откуда взявшейся ошибки в работе программы или прибора, – слово это достаточно древнее и происходит от названия одного из фольклорных чудищ, аналогичного русскому «буке», тоже недаром однокоренному с простой и безобидной «букашкой», – леди-офицер немало способствовала популяризации такого словоупотребления. Война тем временем уже заканчивалась; в 1945 году Грейс снова безуспешно пыталась добиться перевода из лаборатории во флот, а после победы отказалась вернуться в колледж Вассар на профессорскую должность и осталась в составе военно-морского резерва, продолжая работать над программами для новых ЭВМ. Правда, в Гарварде ей уже становилось тесновато: коллеги не понимали и не разделяли ее новой идеи – упростить сам процесс программирования до такого уровня, чтобы любые ученые и даже обычные люди могли работать с компьютерами непосредственно, не прибегая к помощи инженеров-специалистов.

Тот самый «баг» до сих пор хранится в музее военно-морского флота США

В 1949 году Хоппер перешла на работу в Eckert-Mauchly Computer Corporation в Филадельфии, как старший математик в команде разработки ПО для создававшегося «Универсального автоматического компьютера» – UNIVAC I, оставшись на этой должности и когда маленькая компания Эккерта и Мокли влилась в корпорацию Remington Rand, и после того, как эта последняя была в свою очередь поглощена Sperry Corporation. Новая ЭВМ должна была быть раз в 20 быстрее всех членов семейства Марк вместе взятых, состоять из электронных ламп, а не из электромеханических реле, и записывать данные на магнитную пленку, а не на перфокарты. В свою группу Грейс набрала по четыре человека женщин и мужчин: женский пол, – объясняла она, – более способен к программированию по той причине, что женщины склонны доводить все дела до конца, в отличие от представителей сильного пола.

Задачей, которую поставила своей команде Грейс Хоппер, была автоматизация процесса программирования: научить компьютер самостоятельно переводить команды в двоичный код и при необходимости обращаться к заранее подготовленной «библиотеке подпрограмм». В результате в 1952 году – практически одновременно с получением очередного воинского звания старшего лейтенанта – Хоппер успешно создает «Систему А-0», или «Арифметический язык нулевой версии» – первый в истории компилятор, то есть программу, переводившую спецификации вычислительных подпрограмм и аргументов в машинный код. Дальнейшие разработки Хоппер и ее команды привели к появлению усовершенствованных версий языков программирования, основанных на компиляции, – А-1, А-2 и А-3. Последний был уже выпущен и как коммерческий продукт, получив наименование ARITH-MATIC, а за ним последовали MATH-MATIC и FLOW-MATIC.

Хоппер, Кобол и Юнивак

FLOW-MATIC, или B-0, что означало «Бизнес-язык нулевой версии», был первым языком для обработки данных, в котором операции записывались не математическими формулами, а предложениями, состоявшими из слов вполне обычного человеческого языка. Именно на его основе под руководством Грейс Хоппер в 1959 году был создан КОБОЛ – «Common Business Oriented Language», быстро ставший популярным язык программирования для разработки бизнес-приложений, максимально приближенный к английскому. Благодаря этой последней своей особенности КОБОЛ до сих пор является рекордсменом по числу написанных на нем строк кода: 240 млрд. таких строк насчитывалось еще в 1997 году. И хотя в настоящее время КОБОЛ считается безнадежно устаревшим, он до сих пор активно используется в мире бизнес-приложений, особенно в сфере обработки финансовых транзакций.

В конце 1966 года Грейс Хоппер, достигшая и 60-летия, и максимально допустимого 20-летнего срока службы в качестве резервиста, была демобилизована из ВМС США. В утешение ей было присвоено звание капитана 2-го ранга, но в качестве пенсионерки «мама Кобола» чувствовала себя крайне неуютно – к счастью, спустя всего несколько месяцев флотское начальство передумало и в виде исключения снова приняла ее на службу. С 1967 по 1977 годы Хоппер возглавляла Группу языков программирования в отделе планирования информационных систем военно-морского флота. Очередной новаторской идеей Грейс была замена больших централизованных систем сетями небольших компьютеров – и, убеждая в перспективности такого решения министерство обороны, она занималась по большей части разработкой стандартов тестирования ЭВМ и их компонентов, включая стандартизирование диалектов языков КОБОЛ и ФОРТРАН.

Капитан Хоппер в своем рабочем кабинете (1976 г.)

К тому времени Грейс Хоппер была уже легендарной личностью – как во флоте, так и в мире компьютерных технологий. В 1983 году особым решением Конгресса США ей присваивается только что восстановленное историческое флотское звание коммодора – в торжественной обстановке и лично тогдашним президентом Рейганом. Всего через год с небольшим все коммодоры будут переименованы в контр-адмиралы младшей ступени, с одной звездой на погонах, – с этим званием Хоппер и войдет в историю, почти что догнав своего почитаемого прадедушку. К сожалению, в сентябре 1986 года, в возрасте неполных 80 лет старейший офицер ВМС США вторично выходит в отставку – как она всегда подчеркивала, «недобровольно».

Тем не менее, без дела Грейс Хоппер не остается: со дня отставки и до самой смерти она состояла старшим консультантом Digital Equipment Corporation. При этом занималась она, в основном, чтением лекций из истории компьютерной техники. В самых различных аудиториях, и даже на телевидении, маленькая «комическая старушка» в адмиральской форме становится неизменной звездой программы: всех привлекала не только ее слава одного из пионеров программирования, но и неподражаемое остроумие, живость и образность ее рассказов. Постоянной темой последних становится и пресловутый мотылек, и «наносекунды» – отрезки медного провода длиной около 30 см, наглядно представляющие путь, который ток проходит за 1 нс.

Грейс Хоппер: официальный портрет в форме коммодора

И все же самой значительной своей заслугой, помимо создания первого компилятора, Грейс считала дело воспитания молодежи и побуждения нового поколения к созданию всего самого нового и необычного. Ведь только человек, а вовсе не компьютер, – говорила Хоппер, – способен задавать вопросы и переводить информацию в новое знание! Казалось, возраста и времени для нее не существовало – даже настенные часы в ее комнате… шли в обратную сторону. Грейс Хоппер мечтала дожить до начала XXI века, однако умерла во сне в новогоднюю ночь 1992 года, в возрасте 85 лет.

«Грейс Хоппер» – не человек, а эсминец

К счастью, память о «бабушке программирования» жива до сих пор. В свое время контр-адмирал Хоппер стала лауреатом многих почетных наград, включая самую первую премию «Человек года в компьютерной технике» (1969 г.). Еще с 1971 г. Ассоциация вычислительной техники присуждает и награду ее имени – для молодого (до 35 лет) специалиста, сделавшего значительный вклад в области вычислительной техники, – первым такой чести был удостоен Дональд Эрвин Кнут, автор «Искусства программирования». Не забывают Грейс и на флоте – в ее часть был назван боевой корабль USS Hopper (DDG-70), входящий в состав Тихоокеанского флота США.

В качестве бонуса – великолепное выступление контр-адмирала Грейс Хоппер на шоу Late Night with David Letterman в русском дубляже. Если вам больше нравится английский вариант с субтитрами, его можно найти здесь.