Маргарет Гамильтон – программист, которая спасла полет на Луну.




Эмблема Аполлон 11.
Эмблема Аполлон 11.

 20 июля, 1969 года,  космический модуль «Аполлон-11,» под управлением Нила Армстронга и Базза Олдрина, приземлился на поверхность Луны. Это было событие огромной важности не только для США, но и для всего мира. Однако, посадка могла не состояться, если бы не гениальность Маргарет Гамильтон, которая разработала бортовое программное обеспечение для программы Apollo.

Маргарет Гамильтон. Официальное фото НАСА, 1989 го
Маргарет Гамильтон. Официальное фото НАСА, 1989 го

Маргарет Хэфилд  Гамильтон,  (Margaret Heafield Hamilton ) родилась 17 августа 1936, Паоли, Индиана, США, в семье Кеннета Хэфилда и Рут Эстер Хэфилд. В 1954 году, окончила среднюю школу Хэнкок и в 1958 году, получила степень бакалавра, в области математики, со специализацией по философии, в колледже Эрлхам. После окончания учёбы, она некоторое время преподавала в средней школе математику и французский, пока её муж заканчивал обучение на степень бакалавра. Затем Маргарет переехала в Бостон, штат Массачусетс.
Она ничего не знала о программировании, пока не получила работу в Массачусетском технологическом институте, где она научилась писать программное обеспечение для компьютеров. Другого способа научиться программировать, кроме самообразования, тогда не существовало.
“Когда я только начинала работать в этой сфере, все это было для нас как Дикий Запад — мы были первооткрывателями неизведанных земель. Никто нас ничему не учил:”-писала Маргарет Гамильтон.
С 1961 по 1963 годы, Маргарет  участвовала в работе проекта SAGE (Semi-Automatic Ground Environment) лаборатории Линкольна, где была одним из программистов, которые писали программное обеспечение для первого компьютера AN/FSQ-7(XD-1). Задача программного обеспечения – поиск “недружественных” воздушных судов. Маргарет Гамильтон также участвовала в разработке программного обеспечения для Кембриджской научно-исследовательской лаборатории Военно – Воздушных Сил США.

Маргарет Гамильтон и ее коллега перед прототипом компьютера XD-1 AN/FSQ-7 SAGE.
Маргарет Гамильтон и ее коллега перед прототипом компьютера XD-1 AN/FSQ-7 SAGE.

Успехи Маргарет в проекте SAGE открыли ей двери в NASA (National Aeronautics and Space Administration – Космическое Агентство США). Маргарет вспоминает:
В этой компании принято давать новичкам программу, в которой никто не может разобраться и, тем более, запустить. Когда я была стажером, мне тоже дали такую задачку. Это была весьма заковыристая программа, и более того, автор кода находил удовольствие в написании комментариев к коду, исключительно на греческом и латинском. Так, мне дали эту задачу, и, собственно, я заставила ее работать. Она даже результат выводила на печать на греческом и латинском. Я была первой, кто смог ее запустить.”
B конце концов, Маргарет Гамильтон стала директором и научным руководителем разработки программного обеспечения для космической программы «Аполлона».

Маргарет Гамильтон с распечаткой кода
Маргарет Гамильтон с распечаткой кода

На этой фотографии, ведущий программист космической программы”Аполлон,” Маргарет Гамильтон, запечатлена с распечаткой кода, который использовали для осуществления полета на Луну в 1969 году:
На этой фотографии я стою рядом с исходниками кода, на котором работал Apollo Guidance Computer (AGC). Уточню, что в этой стопке только код — там нет отчётов по устранению ошибок или другой лишней информации”.
Процесс написания кода был трудоёмким. Компьютер AGC использовал особый вид памяти – так называемую, core rope memory: связи проходили через металлическое ядро особым образом, чтобы код сохранялся в бинарном виде.

“Если связь проходила сквозь ядро, это кодировалось единицей, если мимо ядра — нулём”, — рассказывала Гамильтон в документальном фильме «Лунные машины».

Все коды писались, а потом печатались вручную, затем объединяясь в программы. Этот вид памяти назвали «LOL memory». Дословно его можно перевести, как «память маленьких старых леди» («Little Old Lаdies»). Ведь печатали коды, в основном, женщины.
Как вспоминала потом Маргарет Гамильтон: “Это не значит, что менеджеры прошлого больше уважали женщин, чем сегодня. Им просто казалось, что программирование — лёгкая работа. Оно выглядело как простое печатание, поэтому отдел софта никогда не был настолько важным, как отдел «железа». Так что женщины писали код, программировали и даже давали советы своим коллегам-мужчинам из «железного» отдела, как улучшить их изделия”.




Гамильтон во время её пребывания в качестве ведущего разработчика ПО для Аполлона
Гамильтон во время её пребывания в качестве ведущего разработчика ПО для Аполлона

Я начала использовать словосочетание «software engineering» (разработка программного обеспечения), чтобы отделить наше дело от «железа» и других инженерных направлений, — рассказывала Маргарет Гамильтон в одном из интервью. — “Поначалу, оно казалось забавной фразой, и мы долгое время использовали его как шутку. Когда-то, меня любили подкалывать, по поводу моей уверенности в важности того, чем мы занимаемся. Сегодня же разработка софта стала не менее важным, чем всё остальное в технологиях”.
При подготовке полета «Аполлона-8», первого пилотируемого космического корабля, добравшегося до орбиты Луны, Маргарет Гамильтон удалось обнаружить серьезную уязвимость, но никто не поверил, что она представляет реальную угрозу.

Маргарет с дочерью Лорен
Маргарет с дочерью Лорен

Найти эту уязвимость помогла дочь Маргарет Гамильтон – Лорен, которая играла с симулятором компьютера «Аполлона-8», пока ее мать работала. В какой-то момент она включила последовательность P01, запускаемую перед стартом космического корабля, когда симулятор был уже в «полете». Запуск P01 в неподходящий момент привел к сбою; и хотя у космонавтов нет никаких причин допускать такую ошибку, Гамильтон решила добавить несколько строчек кода — сделать своего рода «защиту от дурака». В NASA воспротивились, сочтя, что прекрасно подготовленные астронавты, никогда в жизни не смогут так ошибиться. Тогда Гамильтон включила строчку «Не запускайте P01 во время полета» в документацию, но и это показалось руководству излишней мерой предосторожности.

Джеймс Ловелл -астронавт NASA
Джеймс Ловелл -астронавт NASA

Вскоре, после рождества, в 1968 году, когда «Аполлон-8» должен был покинуть орбиту Луны и отправиться на Землю, астронавт Джеймс Ловелл, сделал именно то, чего от него никак не ждали, — по ошибке запустил P01. В итоге, из компьютера «Аполлона» исчезли навигационные данные, и он не мог точно определить свое положение в пространстве.

Экипажу корабля пришлось быстро сориентироваться по звездному небу и ввести правильные данные в компьютер, а специалистам NASA, в том числе и Маргарет Гамильтон — провести девять часов в поисках решения, как отправить на «Аполлон» из Хьюстона, другие необходимые компьютеру сведения. «Аполлон-8» успешно приземлился, а Ловелл, спустя год с лишним, применил свои навыки ручного перепрограммирования компьютера космического корабля, во время полета «Аполлона-13», экипажем которого он командовал. Миссия «Аполлона-13» завершилась неудачей, из-за аварии по пути к Луне, но космическому кораблю удалось вернуться на Землю.

Бортовой управляющий компьютер КА Аполлон
Бортовой управляющий компьютер КА Аполлон (Apollo Guidance Computer, AGC)

Джеймс Ловелл потом признавался, что ему очень помог в нештатной ситуации «Аполлона-13,» прошлый опыт «Аполлона-8» и называл тот инцидент, с потерей навигационных данных, «плановой тренировкой». Позднее, астронавт, все-таки признался, что стер данные по собственной оплошности.

Что же произошло 20 июля 1969 года и чем обязано человечество 31-летней программистке-самоучке?

Эдвин Олдрин и Нил Армстронг -астронавт
Эдвин Олдрин и Нил Армстронг -астронавты NASA, совершившие успешную посадку на Луну.

Когда Нил Армстронг и Эдвин Олдрин, были уже почти у Луны, система внезапно дала сбой. Радар, который никаким образом не был задействован в процессе посадки модуля, вдруг начал посылать огромный объем информации компьютеру, что привело к его перегрузке.

«Аполлон 11» ждала неминуемая гибель, если бы Маргарет не предусмотрела подобный сценарий. Специалисты осуществили максимально быструю перезагрузку, и бортовой компьютер выбрал приоритетные данные по посадке корабля на Луну. Посадка состоялась.

«После расстыковки командно-служебного и лунного модулей, выключатель радара стыковки был поставлен в неправильное положение, из-за ошибки в инструкции для астронавтов, радар посылал ошибочные сигналы бортовому компьютеру. Обработка ложных сигналов занимала 15% машинного времени. Бортовой компьютер (точнее, вшитое в него ПО) оказался достаточно разумным для того, чтобы распознать, что на выполнение запрашивается больше операций, чем должно. Далее он выслал оповещение, означавшее для астронавта следующее: «Я перегружен большим количеством задач единовременно, чем предусмотрено, и я продолжу выполнять только наиболее важные, то есть те, что необходимы для прилунения…» По сути, компьютер был запрограммирован на большее, чем просто распознавание ошибочных состояний. В ПО был предусмотрен полный набор программ по восстановлению. В данном конкретном случае реакцией ПО было приостановить работу низкоприоритетных задач и перезапустить (re-establish) наиболее важные. Если бы компьютер не распознал эту проблему и не принял восстановительные меры, я не уверена, что Аполлон 11 совершил бы успешную посадку на Луну.» – Маргарет Гамильтон.

Эдвин Олдрин и Нил Армстронг -астронавты NASA,
Первый человек на Луне.

За свой вклад в успех программы «Аполлон» и в области разработки программного обеспечения, она была отмечена несколькми наградами:
1. 1986, Augusta Ada Lovelace Award, Association for Women in Computing.
2. 2003, NASA Exceptional Space Act Award for scientific and technical contributions. Награда включала в себя денежную награду в $37200, наибольшая персональная сумма награды в истории НАСА.
3. 2009, Outstanding Alumni Award, Earlham College
4. 2016, Presidential Medal of Freedom, врученная президентом Бараком Обамой – самая почетная гражданская награда в США.
5. 2017, Computer History Museum Fellow Award. Присуждается выдающимся мужчинам и женщинам, чьи идеи изменили мир.

Гамильтон опубликовала более 130 научных работ, трудов и отчетов по 60 проектам и шести крупным программам, в которых она принимала участие.
Сегодня, Маргарет Гамильтон, более 80 лет. Она возглавляет компанию Hamilton Technologies, Inc в Кембридже, штат Массачусетс – разработчика языка программирования Universal Systems Language (Язык универсальных систем), который предупреждаeт, a не исправляeт сбойные ситуации. Oн основывается на теории систем и опирается на уроки проекта, по разработке бортового программного обеспечения, кораблей «Аполлон». В течении своей замечательной жизни, эта выдающаяся женщина стала свидетелем того, как разработка программного обеспечения, превратилась из не очень серьезного занятия в престижную профессию программиста компьютерных программ.

Вручение Почетной медали президентом Бараком Обамой.
Вручение Почетной медали президентом Бараком Обамой.