Гамильтон внутри макета командного модуля «Аполлона», 1969. Фото: NASA (общественное достояние).
Памяти
Margaret Hamilton
17 августа 1936 – 30 сентября 2026 · Учёный-компьютерщик · Руководитель бортового ПО «Аполлона» · Мать «программной инженерии»
Маргарет Гамильтон возглавляла команду MIT, написавшую бортовое программное обеспечение программы «Аполлон» — код, который вёл экипажи к Луне и обратно, на компьютере с долей памяти современных часов. Она делала это, изобретая дисциплину по ходу дела: именно она ввела термин программная инженерия — в то время, когда это словосочетание воспринимали как шутку.
Из Паоли в Кембридж
Маргарет Хифилд родилась в Паоли, штат Индиана, в 1936 году и частично выросла на Верхнем полуострове Мичигана; её отец был поэтом и профессором философии. Она изучала математику — с дополнительной философией — в колледже Эрлхэм и окончила его в 1958 году, в том же году выйдя замуж за Джеймса Гамильтона. Их дочь Лорен родилась в 1959 году.
Она собиралась поступать в аспирантуру Брандейса по абстрактной математике. Вместо этого, чтобы содержать мужа во время его учёбы на юридическом в Гарварде, она устроилась на должность, которая должна была быть временной, в MIT — писать ПО для прогнозирования погоды для Эдварда Лоренца (да, того самого Лоренца из теории хаоса) на компьютерах LGP-30 и PDP-1. Курсов программирования не существовало; учились на практике. Она сразу оказалась в этом хороша.
Это привело её в Линкольновскую лабораторию MIT и к проекту SAGE — континентальной системе ПВО, одной из первых потребовавшей ПО, которое не имело права отказать. В Линкольн-лаб Гамильтон заработала репутацию человека, чинившего программы, которые не мог починить никто другой; коллеги начали отдавать ей самые тяжёлые и странные баги. Она училась отказоустойчивости на машине, охранявшей континент.
«Аполлон»
В 1965 году Лаборатория приборостроения MIT — позже Draper — выиграла контракт NASA на бортовую навигацию «Аполлона». Гамильтон стала первым программистом, нанятым на проект «Аполлон» в MIT, и первой женщиной, писавшей для него код. Она начинала с беспилотных миссий и поднялась до руководителя команды, писавшей полётное ПО для пилотируемых командного и лунного модулей. К 1968 году она отвечала за ПО командного и служебного модуля; на пике работ более 400 человек писали код для «Аполлона».
Машина, которую должен был вести её код, была знаменита своей малостью: бортовой компьютер «Аполлона» работал на ~85 килогерцах и имел около 72 килобайт верёвочной памяти — буквально сотканной, провод за проводом, через ферритовые кольца «маленькими старыми леди» — фабричными работницами, вручную продевавшими каждый бит каждой программы. ПО не записывалось в эту память — оно в неё изготавливалось. Пропатчить потом было нельзя.
Знаменитая фотография: Гамильтон рядом с распечаткой ПО бортового компьютера «Аполлона» — почти с неё ростом. Каждая страница была заработана. (Draper Laboratory / общественное достояние.)
Её дочь нашла баг раньше NASA
Одна из лучших историй в истории ПО — про ребёнка. Лорен Гамильтон, которой было около восьми, приходила в лабораторию по выходным и играла в астронавта на тренажёре. Во время одного визита она нажала клавиши посреди симуляции и запустила предстартовую программу во время «полёта» — стёрв навигационные данные из компьютера. Гамильтон поняла, что произошло, и потребовала добавить проверку ошибки, чтобы эта последовательность никогда не могла запуститься в полёте. Ответ сверху: астронавты обучены никогда не ошибаться; такого не может быть.
На «Аполлоне-8» астронавт Джим Ловелл — сделав в точности то, что делала Лорен — случайно запустил ту же программу, стёрв навигационные данные на орбите Луны. Команда Гамильтон работала круглосуточно, восстанавливая таблицы и возвращая экипаж домой. Проверку, о которой она просила, добавили после. Каждый программист узнаёт урок: если человек может это сделать — человек это сделает.
Три минуты, доказавшие её правоту
Её глубочайшей одержимостью была обработка ошибок — радикальная для того времени позиция. От ПО ждали, что оно либо работает, либо падает; Гамильтон настаивала, что оно должно продолжать работать сквозь отказ: сообщать экипажу, что не так, и в первую очередь защищать самую приоритетную работу. ПО «Аполлона» работало под исполнительной системой приоритетного планирования с «приоритетными дисплеями», выводившими тревоги, а не прятавшими их.
20 июля 1969 года. «Аполлон-11» снижается к Морю Спокойствия, когда бортовой компьютер начинает выдавать тревоги переполнения исполнителя 1201 и 1202 — от машины требуют больше, чем она может, потому что радар сближения шлёт ей ненужные данные. Дизайн Гамильтон делает ровно то, для чего она его создала: сбрасывает низкоприоритетную работу, продолжает вести посадку и сообщает экипажу, что происходит. В Хьюстоне 24-летний инженер Джек Гарман — выучивший коды тревог наизусть — объясняет руководителю полёта Стиву Бейлсу, что они значат. Команда уходит наверх: «go». Армстронг и Олдрин садятся.
Урок, который она нам оставила: тревоги были не сбоем — они были системой, делающей ровно то, для чего её создали, в условиях, которые никто не мог полностью предвидеть. Писать ПО, которое говорит правду, когда ему тяжело; которое ранжирует важное и деградирует изящно, а не умирает молча. Эта идея — ошибки как спроектированное поведение, а не сюрпризы — до сих пор сердце хорошей инженерии, и тот же инстинкт стоит за инструментами, анализирующими код до его запуска.
«Программная инженерия»
Когда Гамильтон начала называть их работу «программной инженерией», старшие коллеги смеялись — инженерией было железо; ПО было тем, что набирают на клавиатуре. Она продолжала использовать термин, пока сама работа не сделала его неоспоримым: дисциплина с требованиями, проектированием, тестированием, симуляцией и ревью. Фраза пережила скептиков. Сегодня это название профессии — и она не просто придумала его, она показала, что оно значит, по пути к Луне.
После «Аполлона» — инженерия через конструирование
Гамильтон посвятила следующие десятилетия формализации того, чему её научил «Аполлон»: системы должны быть корректны по замыслу, а не отлажены до корректности постфактум. В 1976 году она стала соосновательницей Higher Order Software, создавшей инструмент проектирования USE.IT — системы, специфицированные по аксиоматическим правилам, так что целые классы ошибок предотвращаются до запуска хоть одной строки. В 1986 году она основала Hamilton Technologies в Кембридже, разработав Universal Systems Language (USL) и её 001 Tool Suite — «разработка до факта», системная инженерия, в которой ПО наследует строгость системы, которой служит. Этой работой она руководила до конца жизни.
Награды
1986 — Премия Августы Ады Лавлейс, Association for Women in Computing (первая лауреатка)
2003 — NASA Exceptional Space Act Award — крупнейшая награда NASA для отдельного человека
2007 — Почётный доктор, Bard College
2009 — Награда выдающейся выпускницы колледжа Эрлхэм (позже почётная степень)
2016 — Президентская медаль Свободы — высшая гражданская награда США
2017 — Увековечена в наборе LEGO «Women of NASA»
2019 — Intrepid Lifetime Achievement Award
Президент Обама вручает Гамильтон Президентскую медаль Свободы, 2016 — «она символизирует поколение невоспетых женщин, помогших отправить человечество в космос». (Фото Белого дома — общественное достояние.)
Последнее слово
Гамильтон умерла 30 сентября 2026 года в Кембридже — в пределах видимости лаборатории, где она впервые узнала, чем может быть ПО. Ей было 90. Остались её дочь Лорен — та самая девочка, чьи пальцы когда-то нашли баг, который процессы NASA найти не смогли, — зять, два внука и четыре правнука. Администратор NASA назвал её «пионером, чья работа помогла сделать «Аполлон» и первые полёты человечества к Луне возможными». Панихида запланирована в Кембридже.
"Второго шанса не было. Мы это знали. Мы относились к работе серьёзно, многие из нас начинали этот путь чуть за двадцать… Нам нужно было найти путь — и мы нашли. Оглядываясь назад, мы были счастливейшими людьми на свете; выбора не было — кроме как быть пионерами."
Почему она среди Гигантов
Этот сайт существует, чтобы учить людей программировать. Гамильтон — человек, доказавший, что программирование способно нести вес человеческих жизней, — и что для этого нужны строгость, смирение и готовность проектировать под отказ, который надеешься никогда не увидеть. Мать, отлаживающая код в лаборатории в полночь; компьютер, отказавшийся сдаваться на спуске к Морю Спокойствия; и слово — инженерия, — которое она сделала истинным, просто делая это. Именно для этого и есть Гиганты.