Маргарет Гамильтон

Маргарет Гамильтон: Инженер, которая дала название программному обеспечению

В трех минутах от лунной поверхности бортовой компьютер «Аполлона-11» (Apollo 11) начал выдавать аварийные сигналы. Баз Олдрин (Buzz Aldrin) отправил восьмой одновременный запрос на выполнение задачи машине, рассчитанной на обработку семи. Посадку можно было бы прервать. Этого не сделали, потому что женщина, руководившая созданием ПО, за годы до этого предположила, что произойдет нечто подобное, и запрограммировала компьютер так, чтобы при перегрузке он отбрасывал второстепенные задачи, а не аварийно завершал работу. Позже она сказала: «Если бы компьютер не распознал эту проблему и не принял меры по восстановлению, я сомневаюсь, что „Аполлон-11“ совершил бы столь успешную посадку на Луну».

Поли, штат Индиана

Маргарет Элейн Хейфилд (Margaret Elaine Heafield) родилась 17 августа 1936 года в Поли, штат Индиана (Paoli, Indiana), в семье Кеннета (Kenneth) и Рут Эстер Хейфилд (Ruth Esther Heafield). Семья переехала в Мичиган, где она окончила среднюю школу Хэнкок (Hancock High School) в 1954 году. Ее отец был поэтом, а дед — директором школы, и дома ее направляли к философии так же твердо, как и к математике — в итоге она изучала обе дисциплины. Она училась в Мичиганском университете (University of Michigan) в 1955 году, затем переводчиком перевелась в Эрлхэм-колледж (Earlham College), получив степень бакалавра искусств по математике с дополнительной специализацией по философии в 1958 году. Она благодарила Флоренс Лонг (Florence Long), возглавлявшую кафедру математики в Эрлхэме, за поощрение ее интереса к абстрактной математике и академической карьере. Она вышла замуж за Джеймса Кокса Гамильтона (James Cox Hamilton) в июне 1958 года; их дочь Лорен (Lauren) родилась в следующем году.

Погода, хаос, греческий и латынь

Ее первой работой в области вычислительной техники стала работа с Эдвардом Нортоном Лоренцем (Edward Norton Lorenz) на метеорологическом факультете Массачусетского технологического института (MIT) с середины 1959 года, где она писала программное обеспечение для прогноза погоды для машин LGP-30 и PDP-1. Позже Лоренц признал ее вклад в работу, ставшую теорией хаоса. С 1961 по 1963 год в Лаборатории Линкольна Массачусетского технологического института (MIT Lincoln Laboratory) она программировала прототип AN/FSQ-7 для системы противовоздушной обороны полуавтоматической наземной среды (Semi-Automatic Ground Environment), где ей поручили невероятно сложную программу, комментарии к которой были написаны на греческом и латыни, и она стала первым человеком, заставившим ее работать. Обе работы имели общую черту, которая определила ее судьбу: ей давали системы, поведение которых никто другой не мог заставить себя вести правильно.

Лаборатория приборостроения

В 1965 году она присоединилась к Лаборатории приборостроения Массачусетского технологического института (Instrumentation Laboratory, позже ставшей Лабораторией Чарльза Старка Дрейпера 〔Charles Stark Draper Laboratory〕) в качестве первого программиста — и первой женщины-программиста, нанятой для проекта «Аполлон». Она дослужилась до должности директора отдела программной инженерии, отвечая за бортовое программное обеспечение полета для бортового компьютера «Аполлона» как в командном модуле, так и в лунном модуле, а впоследствии — для систем «Скайлэб» (Skylab). Это был код без права на ошибку: никаких патчей, никаких перезагрузок на траектории снижения, никаких способов добраться до машины после того, как она покинула стартовую площадку.

1202

Ответом Гамильтон было рассматривать ошибку не как исключение, а как проектное допущение. Ее программное обеспечение включало процедуры обнаружения и устранения ошибок и, что крайне важно, схему «отображения приоритетов»: когда компьютер перегружался, он отказывался от задач с низким приоритетом и сохранял функции, необходимые для посадки. Она также продумала человеческий фактор в этом процессе, спроектировав процедуру так, чтобы астронавты, увидев отображение приоритетов, считали до пяти, давая время на задержку обработки данных программным обеспечением.

БЕСПЛАТНЫЙ ТЕСТ
А какой у вас?

Двадцать вопросов, восемь минут на часах и процентиль, измеренный по всем, кто его проходил. Без регистрации.

Пройти тест IQ →

20 июля 1969 года механизм сработал точно так, как было задумано. Сработали тревоги, компьютер отбросил то, чем мог пожертвовать, а инженер компьютера управления полетами НАСА (NASA) Джек Гарман (Jack Garman) распознал коды и крикнул: «Давай, давай!» (Go, go!) «Игл» (Eagle) прилунился.

Название дисциплины

Гамильтон приписывают утверждение термина «программная инженерия» (software engineering) в первые годы программы «Аполлон». Ее цель была в равной степени юрисдикционной и описательной. «Я начала использовать термин „программная инженерия“, чтобы отличать его от аппаратного обеспечения и других видов инженерии, — пояснила она, — и в то же время рассматривать каждый тип инженерии как часть общего процесса системной инженерии». Специалисты по аппаратному обеспечению не были впечатлены. «Это долгое время было постоянной шуткой, — вспоминала она. — Им нравилось подшучивать надо мной из-за моих радикальных идей». Эта шутка теперь стала названием индустрии, в которой заняты десятки миллионов людей.

Разработка до факта

Остаток своей карьеры она посвятила развитию этой идеи. В 1976 году она стала соучредителем компании Higher Order Software («Программное обеспечение высшего порядка») вместе с Сейдин Зелдин (Saydean Zeldin) для формализации методов предотвращения ошибок, которым ее научил «Аполлон»; их продукт USE.IT поддерживал правительственные программы, включая «Спейс шаттл» (Space Shuttle) и проекты ICAM Военно-воздушных сил. В марте 1986 года она основала компанию Hamilton Technologies в Кембридже, штат Массачусетс, где разработала Универсальный язык систем (Universal Systems Language) и набор инструментов 001 на основе парадигмы, которую она назвала «разработкой до факта» (development before the fact) — аргумента о том, что ошибки должны быть исключены в момент проектирования, а не выискиваться во время тестирования.

Признание приходило медленно, а затем лавинообразно: премия Августы Ады Лавлейс (Augusta Ada Lovelace Award) в 1986 году; Награда НАСА за исключительные заслуги в космической деятельности (NASA Exceptional Space Act Award) в 2003 году в размере 37 200 долларов, ставшая крупнейшей индивидуальной наградой в истории агентства; Президентская медаль свободы (Presidential Medal of Freedom) от Барака Обамы (Barack Obama) в 2016 году; Награда стипендиата Музея истории компьютера (Computer History Museum Fellow Award) в 2017 году; Вашингтонская премия (Washington Award) в 2019 году; включение в Национальный зал славы авиации (National Aviation Hall of Fame) в 2022 году.

Почему Маргарет называют гением

Этот талант представляет собой радикальный переворот в том, как мыслила ее сфера. В 1960-х годах программное обеспечение понималось как инструкции, которые должны работать, а ошибки рассматривались как прискорбные инциденты, которые будут обнаружены позже. Гамильтон рассматривала сбой как главный объект проектирования: что должна делать система, когда лежащие в ее основе допущения перестают выполняться? Отображение приоритетов — ярчайший артефакт этого мышления. Оно не предотвращает перегрузку, которую предотвратить невозможно; оно заранее определяет в условиях, которые еще никто не испытывал, от чего машина должна быть готова отказаться, чтобы продолжать делать то единственное, что имеет значение. Это философский шаг в такой же степени, как и технический. Ее вторая заслуга — концептуальное авторство: название «программная инженерия», данное ей вопреки насмешкам, переорганизовало то, как вся профессия осознала себя.

Честные оценки таковы. Послужной список ее наград, сколь бы обширным он ни был, не содержит официального применения слова «гений»; в нем указаны медали за значимые результаты. Спасение «Аполлона-11» было системой, а не сольным выступлением — ее ПО подняло тревогу, но Джек Гарман должен был распознать коды, руководитель полета должен был дать отмашку «давай», а проект зависел от того, следовали ли астронавты человеческой процедуре. И индустрия переняла ее слово гораздо полнее, чем ее метод: «программная инженерия» стала универсальной, в то время как «разработка до факта» остается уделом специалистов. Ее гениальность лучше всего проявляется в такой формулировке проблемы, которая пережила каждый инструмент, созданный ею для ее решения.

Наследие

Написанный под ее руководством код — причина того, почему фраза «тревога 1202» стала триумфом, а не эпитафией. Большее наследие — это предположение, сегодня настолько стандартное, что оно невидимо, — о том, что программное обеспечение создается инженерным путем, выдерживает допуски и способно грациозно сбоить. Она предоставила как имя, так и первое великое доказательство.

Сравнить с великими

Erwin Schr Dinger vs PythagorasAdam Smith vs Garry KasparovClaude Monet vs Edgar Allan PoeJohn Von Neumann vs Stephen Hawking
Все рейтинги →Все сравнения →

Вундеркинды

Momiji NishiyaMomiji NishiyaFirst Olympic women's street champion, winning gold at age 13Emily BearEmily BearPlayed the White House at six, won a Grammy at twenty, scored a…Summer McintoshOlympic finalist at 14, world-record holder and triple Olympic…Laurent SimonsGraduated University at 11 — Belgian Prodigy with Electrical…
Вундеркинды →

Сыграй и возвращайся завтра

Ежедневный вызов гения · Brain teaser
A farmer has 17 sheep. All but 9 run away. How many are left?
Нажмите ответ ↓
Какой ты гений? Бесплатный IQ-тест