Миссия «Аполлон»: как Маргарет Гамильтон помогла NASA высадить космонавтов на Луне

На черно-белой фотографии молодая женщина стоит рядом с высоченной стопкой распечатанных кодов для космической программы «Аполлон». Эту девушку зовут Маргарет Гамильтон, и она сделала возможной высадку на Луну.
Единственная женщина на занятиях по математике
Отец Маргарет был философом и поэтом, дед — писателем, учителем и священником-квакером; вероятно, они и привили ей интерес к философии. Среднюю школу она окончила в Мичигане, после выпуска поступила в Мичиганский университет, но затем перевелась в колледж Эрлхэм, где изучала философию и математику (там же встретила и своего будущего мужа Чарльза Гамильтона).
«Несмотря на то, что чаще всего я была единственной женщиной на занятиях по математике и физике как в Мичиганском университете, так и в колледже Эрлхэм, одним из профессоров математики в колледже была женщина по имени Флоренс Лонг. Ее любили все студенты-математики, и она была замечательным человеком», — вспоминала Маргарет об учебе.
После получения степени бакалавра она некоторое время работала учительницей в средней школе. Затем вместе с мужем переехала в Бостон — собиралась изучать фундаментальную математику в Университете Брандейса, но в итоге получила работу в Массачусетском технологическом институте (MIT). И снова она замечала гендерный дисбаланс: «Когда я начинала как программист в 1959 году, в каждой организации и в каждом проекте, в котором я участвовала, всегда мужчин было гораздо больше, чем женщин. И это все еще так. Женщины всегда были в меньшинстве, а мужчины всегда были в большинстве».
Сначала Гамильтон разрабатывала программное обеспечение для прогнозирования погоды. Потом, в начале 1960-х, устроилась в лабораторию Линкольна, где вместе с другими специалистами работала над SAGE (Semi-Automatic Ground Environment) — первой системой противовоздушной обороны современного типа в США. Система объединяла несколько вычислительных центров и радиолокационные станции в единую сеть, которая получала и обрабатывала радиосигналы, формируя единое унифицированное изображение воздушного пространства.
Затем Гамильтон перешла в Лабораторию приборостроения (ныне независимую лабораторию Чарльза Старка Дрейпера), выполнявшую заказы для незадолго до того созданного NASA. В те же годы была принята программа «Аполлон», поставившая целью высадку человека на Луне.
Программа «Аполлон»
В течение первой половины 1960-х в рамках программы «Аполлон» шли испытания ракеты-носителя и космического корабля. На февраль 1967-го был запланирован первый пилотируемый полет программы, но во время предполетных испытаний произошел пожар, и весь экипаж погиб. Следующие три миссии были непилотируемыми — NASA снова и снова тестировало оборудование, отрабатывало выход на орбиту.
Во время первой успешной пилотируемой миссии в рамках программы — «Аполлон-7» — экипаж провел 11 дней на околоземной орбите. Еще три миссии стали подготовкой к высадке на Луну — экипажи отрабатывали маневры, управление навигационным оборудованием.
Системы наведения и управления для программы разрабатывала как раз Лаборатория приборостроения, в которой трудилась Гамильтон. Она возглавляла команду, которая работала над ПО для двух модулей — лунного Eagle (он должен был совершить посадку на Луну) и командного Columbia (он должен был остаться на лунной орбите, а затем вернуть астронавтов на Землю).
В отличие от собственно приборостроения, программирование в те годы не считалось чем-то серьезным. Чтобы это изменить, Гамильтон начала использовать термин «программная инженерия» — сегодня он означает системный подход к созданию программного обеспечения, который включает сбор и анализ требований, проектирование архитектуры ПО, собственно написание кода, тестирование, документирование, поддержку и развитие. Всем этим и занималась команда Гамильтон. Причем создавать этот новый подход ей пришлось буквально на ходу — в университетах такому не учили.
«Не было ни школы, ни научной области, где можно было бы изучить то, что сегодня известно как «разработка программного обеспечения» или «системная инженерия». Когда ответы не находились, нам приходилось их изобретать; мы проектировали вещи, которые должны были работать с первого раза, и наши системы должны были быть безопасны для человека. Многие в команде начинали как бесстрашные 20-летние: чем сложнее была задача, тем больше удовольствия мы получали. И все же главными были преданность делу и целеустремленность. Нам было некогда быть новичками», — вспоминала Гамильтон.
Насколько важна работа программных инженеров, показала миссия «Аполлон-11». Именно тогда человек впервые высадился на Луне — но этого могло не случиться, если бы не код, созданный Маргарет Гамильтон.
«Аполлон-11»
«Все шло по плану, пока не произошло нечто совершенно неожиданное как раз в тот момент, когда астронавты собирались совершить высадку на Луну. Некоторые вещи никогда не забываются, даже спустя 40 лет, — вспоминала в интервью 2009 года Гамильтон. — Я стояла в [одной из комнат] в Лаборатории приборостроения Дрейпера, слушая разговоры между астронавтами и Центром управления полетами, когда внезапно нормальный ход миссии был прерван сигналами тревоги 1201 и 1202 — это значило, что астронавты должны решить: продолжать или нет».
Позже стало известно, что переключатель одного из приборов был приведен в неправильное положение (ошибку допустили составители инструкции для астронавтов), и сигнал от прибора, поступая в систему, перегружал ее. Центральный процессор в любой момент мог зависнуть и отключиться, после чего бортовой компьютер просто не смог бы работать. Посадка лунного модуля грозила бы крушением.
Однако подход Гамильтон к созданию ПО спас ситуацию. Достигая пика нагрузки, операционная система бортового компьютера автоматически сбрасывала лишние задачи, оставляя только те, что относились к выполняемому маневру, и хоть и работала на пределе возможностей, но не зависала. «Быстро стало ясно, что программное обеспечение не только информировало всех о проблеме, связанной с оборудованием, но и справлялось с ней, — рассказывала потом Гамильтон. — Оставалось всего несколько минут, и было принято решение совершить посадку. Остальное — история».
20 июля 1969 года астронавты Нил Армстронг и Базз Олдрин спустились на поверхность Луны в лунном модуле, затем благополучно вернулись в командный модуль, которым управлял Майк Коллинз, а затем вернулись на Землю.
Признание
Работа бортовых компьютеров в условиях перегрузки так впечатлила NASA, что созданное Маргарет Гамильтон ПО адаптировали для Skylab (первая космическая станция США), «Спейс шаттл» (провел более 100 успешных миссий на околоземной орбите) и первых электронных интерфейсов в самолетах. В 2003 году за заслуги перед аэрокосмической отраслью Гамильтон получила награду от NASA. А в 2016-м исходный код операционной системы бортовых компьютеров «Аполлон-11» был выложен в репозитории GitHub исходный код «Аполлон-11». Его первая строчка выглядит так:
МАРГАРЕТ Х. ГАМИЛЬТОН ДАТА: 28 МАРТА 69 / М.Х.ГАМИЛЬТОН, РУКОВОДИТЕЛЬ ПРОГРАММИРОВАНИЯ COLOSSUS / РУКОВОДСТВО И НАВИГАЦИЯ APOLLO
В середине 1970-х годов Гамильтон ушла из MIT и основала собственную компанию Higher Order Software, а десять лет спустя — Hamilton Technologies. Обе компании занимались разработкой программного обеспечения и особенно специализировались на отказоустойчивости технических систем.
В 2016 году Гамильтон была награждена Президентской медалью Свободы, высшей гражданской наградой США. В 2017-м компания LEGO выпустила в ее честь именную фигурку. Хотя знаковым событием была сама высадка, Гамильтон говорила: «С моей точки зрения, сам опыт работы с программным обеспечением (его проектирование, разработка, развитие, наблюдение за его производительностью и обучение на нем для будущих систем) был по меньшей мере таким же захватывающим, как и события, связанные с миссией».
Сегодня Маргарет Гамильтон 90 лет. Она поддерживает молодых женщин, которые мечтают о карьере в IT и в аэрокосмической сфере. «Не позволяйте страху мешать и не бойтесь сказать: «Я не знаю» или «Я не понимаю» — ни один вопрос не является глупым. И не всегда слушайте так называемых экспертов!» — говорит она.
