Когда в 1969 году астронавты «Аполлона-11» сделали первые шаги по лунной поверхности, мир знал их имена. Но имя девушки, чьи строки кода, возможно, спасли эту миссию от катастрофы, осталось в тени. Маргарет Гамильтон, самостоятельно освоившая программирование в годы его зарождения, смогла предусмотреть непредсказуемое. И вдохновением для её решения стала дочь, которая «сломала» симулятор космической миссии.
Из школьной учительницы в космическую программистку
Маргарет родилась в 1936 году в небольшом городке Паоли, штат Индиана. С юных лет она увлекалась Oral History of Margaret Hamilton / CHM математикой, пела в хоре, каталась верхом и играла в бейсбол наравне с мальчишками.
После школы Маргарет поступила в Мичиганский университет, но вскоре перевелась в колледж Эрлхэм. Там она получила степень бакалавра математики с дополнительной специализацией по философии. После выпуска её пригласили преподавать Margaret Hamilton / Britannica математику в средней школе.
О карьере в космической отрасли Маргарет тогда даже не задумывалась — мечтала о поступлении в аспирантуру по абстрактной математике. Но её муж Джеймс Гамильтон решил продолжить образование в Гарвардской школе права. Маргарет пришлось отложить свои академические амбиции и найти работу, чтобы обеспечивать семью.
В 23 года она одновременно осваивала Technical Innovation in American History: An Encyclopedia of Science and Technology / Rosanne Welch, Peg A. Lamphier программирование и материнство. Молодая мама, начавшая свою карьеру самоучкой Margaret Hamilton: The Untold Story of the Woman Who Took Us to the Moon / Futurism , шагнула в мир программирования в Массачусетском технологическом институте. Первым её проектом стала программа для прогнозирования погоды. Потом Маргарет помогала создавать Margaret Hamilton Reflects on Life, Career, and SAGE / Lincoln Laboratory прототип системы противовоздушной обороны, которая должна была отличать реальные самолёты от помех.
Всего одно объявление изменило её жизнь. Лаборатория приборостроения искала специалистов для работы над проектом NASA по отправке человека на Луну. Маргарет решила рискнуть и подала заявку. И риск оправдался: её приняли в штат. На тот момент ей было 30 лет. Так Маргарет стала первой женщиной Margaret Hamilton: ‘They worried that the men might rebel. They didn’t’ / The Guardian и первым программистом в проекте.
«Меня привлекла как сама идея, так и тот факт, что этого никогда раньше не делали».
Код, который спас лунную миссию
На дворе был июль 1969 года. Космический корабль «Аполлон-11» совершает свою историческую миссию. В его состав входило два модуля. «Орёл» отвечал за посадку на небесное тело. В это время «Колумбия», командный модуль, оставался на орбите Луны, чтобы доставить экипаж на Землю после выполнения задач.
Когда экипаж модуля «Орёл» начал прилунение, что-то пошло не так. Ручной переключатель радара системы сближения, который обычно не используется при посадке, оказался в неправильном положении из-за ошибки Recalling the 'Giant Leap' / MIT News в контрольном чек-листе астронавтов.
Дело в том, что у радиолокационной системы для выхода с Луны и автоматизированной системы наведения в лунном модуле были несовместимые источники питания Apollo 11 Program Alarms / NASA . Из-за этого в бортовой компьютер начало поступать огромное количество данных — случайных электрических помех.
Возможности бортового компьютера Apollo Guidance Computer, несмотря на его внушительные размеры и вес в 32 килограмма, по современным меркам были крайне скромными. Он имел всего лишь 36 килобайт постоянной памяти и два килобайта оперативной. Для сравнения: сейчас в 152 килобайта памяти можно уместить всего пару изображений с очень низким разрешением.
На экране астронавтов возникли ошибки 1201 и 1202 Apollo 11's "1202 Alarm" Explained / Discover — сигнал о том, что система не справляется с объёмом вычислительных задач. Благодаря Маргарет компьютер был запрограммирован Recalling the 'Giant Leap' / MIT News на автоматическую перезагрузку: ПО очистило свою очередь процессов из задач низкого приоритета, позволив выполнить задачи для посадки модуля.
«Это было полное облегчение, когда они приземлились. И то, что астронавты были в безопасности, и то, что программное обеспечение работало идеально».
Без механизмов обнаружения перегрузки Нил Армстронг, возможно, не смог бы произнести легендарное «Это один маленький шаг для человека, но гигантский скачок для всего человечества». Как Маргарет это удалось? Ошибка ПО была обнаружена случайно — учёной помогла её маленькая дочь Лорен.
«Ошибка Лорен»
Иногда Маргарет брала на работу свою дочь Лорен. Однажды девочка «играла в астронавта» на симуляторе лунной миссии. Лорен случайно ввела команду P01, предназначенную для подготовки корабля к взлёту с Земли, в тот момент, когда «корабль» уже находился в пути. Компьютер вышел из строя In Their Own Words: Margaret Hamilton on Her Daughter's Simulation / Hack the Moon , так как программа перезаписала все навигационные данные, делая продолжение полёта невозможным.
Маргарет заметила результат игры Лорен и поняла: если такая ошибка произойдёт во время реальной миссии, экипаж рискует «ослепнуть» и потерять возможность вернуться домой. Гамильтон предложила NASA исправить эту уязвимость, добавив код для проверки ошибок. Но специалисты управления отказались, посчитав это излишним Margaret Hamilton: ‘They worried that the men might rebel. They didn’t’ / The Guardian : «Астронавты слишком хорошо обучены, чтобы совершить такую ошибку».
Во время миссии «Аполлон-8» астронавт Джим Ловелл случайно запустил P01 на пятый день полёта — на обратном пути к Земле. Системы стёрли навигационные данные, и команда Маргарет потратила девять часов Her Code Got Humans on the Moon—And Invented Software Itself / Wired , чтобы исправить ситуацию. После этого Маргарет добилась внедрения Apollo Guidance Computer History Project / Apollo Guidance Computer Activities своих предложений по отладке, усилив надёжность систем.
«У нас не было выбора, кроме как стать первопроходцами»
Вернёмся назад — на пять лет до лунной экспедиции. Когда Маргарет только пришла в Лабораторию приборостроения MIT, её первой задачей стала разработка программ для беспилотных миссий, которые строили таблицы лунных ориентиров Apollo Guidance Computer History Project / Apollo Guidance Computer Activities . Своего рода карты, помогающие космическим кораблям ориентироваться среди звёзд.
Через два года Маргарет возглавила команду инженеров Margaret Hamilton Led the NASA Software Team That Landed Astronauts on the Moon / Smithsonian Magazine , которые занимались бортовым программным обеспечением для пилотируемых миссий «Аполлон-11». Её группа состояла Scene at MIT: Margaret Hamilton’s Apollo code / MIT из таких же энтузиастов, как и она: тогда им было за 20 лет и ни у кого не было опыта работы над проектами подобного масштаба.
«Оглядываясь назад, мы были самыми счастливыми людьми в мире; у нас не было выбора, кроме как стать первопроходцами».
Когда Гамильтон возглавила группу учёных, один из её руководителей выразил опасения Margaret Hamilton: ‘They worried that the men might rebel. They didn’t’ / The Guardian . Он считал, что мужчины, работающие под её началом, могут взбунтоваться при мысли о том, что они должны будут подчиняться женщине. Тот факт, что молодая девушка возглавит проект, казался ему более странным, чем сама прогулка по Луне. Но никакого бунта не случилось Margaret Hamilton: The Untold Story of the Woman Who Took Us to the Moon / Futurism . Коллектив, поглощённый задачей исторической важности, сплотился вокруг цели, которая была выше любых стереотипов.
Женщина, которая не испугалась быть первой
Команде Маргарет поручили задачу, от которой даже у самых опытных специалистов могли задрожать руки: разработать с нуля навигационные и посадочные системы для миссии на Луну. Никто до этого даже не пытался сделать нечто подобное. Компьютер на корабле, летящем в космос, должен был уметь сам справляться с ошибками, перегрузками и даже действиями самих астронавтов, если те случайно нажмут не на ту кнопку. Нужно было предусмотреть всё, даже непредсказуемое, в ситуациях, которые никогда раньше не моделировались. Тогда не было ни учебников по «космическому программированию», ни готовых решений, ни современных языков — команде Маргарет приходилось изобретать всё на ходу Margaret Hamilton: The Untold Story of the Woman Who Took Us to the Moon / Futurism .
«Второго шанса не было. Мы знали это».
Маргарет придумала алгоритм, который автоматически обнаруживал системные ошибки и восстанавливал всё необходимое без вмешательства экипажа и командного центра. Но самое главное — её код умел расставлять приоритеты. Когда мы играем в видеоигру, где против нас пять врагов, мы фокусируемся на самом опасном, чтобы выжить. Так и работала уникальная асинхронная обработка процессов, которую внедрила команда Гамильтон: в критических ситуациях система обрабатывала только важные задачи.
Надёжность системы была чрезвычайно важна для астронавтов. Программы Маргарет должны были взаимодействовать не только с «железом» на борту корабля и центром управления на Земле, но и с кодом, написанным другими командами. Сотни людей работали над кодом для миссий Oral History of Margaret Hamilton / CHM , добавляя новые функции и исправляя старые ошибки. Более того, программное обеспечение для разных миссий разрабатывали одновременно Margaret Hamilton: The Untold Story of the Woman Who Took Us to the Moon / Futurism , что требовало невероятной синхронизации.
Один из самых знаковых моментов карьеры Маргарет запечатлён на культовой фотографии: девушка стоит рядом со стопкой записей исходного кода компьютера Apollo-11.
«Моя работа не подразумевала какого-то особого уважения. Всем казалось, что программирование — это самая лёгкая работа, что-то наподобие стенографирования на печатной машине. Основной работой считались процессы, связанные с „железом“».
Работа Маргарет продемонстрировала, что даже небольшой вклад в общее дело может изменить ход истории человечества. Её упорство и дотошность не только обеспечили безопасность и успех космической миссии, но и помогли изменить отношение Remembering the Apollo 11 Moon Landing With the Woman Who Made It Happen / The Time к женщинам в программировании.
«Её пример говорит об американском духе первооткрывателя, который есть в каждой маленькой девочке и маленьком мальчике, которые знают, что каким-то образом заглянуть за небеса — значит заглянуть глубоко внутрь себя», — сказал Remarks by the President at Presentation of the Presidential Medal of Freedom президент Барак Обама в 2016 году, когда награждал Гамильтон Президентской медалью Свободы, высшей гражданской наградой США.