Перейти к материалам
истории

Ошибка «Аполлона-8» Как программистка NASA в 1968 году нашла уязвимость в космическом корабле: Wired

Источник: Wired
Фото: NASA

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

В 1960 году, когда 24-летняя Маргарет Гамильтон начала работать программистом в Массачусетском технологическом институте, девушек в этой специальности было еще меньше, чем сейчас. Тем не менее, Гамильтон выпала честь войти в число программистов, которые на протяжении многих лет разрабатывали программное обеспечение для «портативных» (весом в 30 килограмм) компьютеров на космических кораблях серии «Аполлон». Гамильтон не стеснялась приводить свою маленькую дочь Лорен на работу и доделывать программное обеспечение «Аполлона» по выходным и вечерам, пока ребенок спит в офисе. По словам Гамильтон, она любила свою работу, а особенно — заниматься чем-то совершенно новым и неизведанным, и чувствовала себя среди программистов «своим парнем». 

В оригинальной документации к проекту «Аполлон» термин «программное обеспечение» вообще не упоминался, не было и бюджета под него. В 1968 году, незадолго до высадки на Луну, над программным обеспечением для космического корабля по заказу NASA работали уже 400 человек, среди них была и Гамильтон. К этому времени она уже несколько лет работала над лунной программой США. 

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

У Гамильтон есть несколько конкретных заслуг. Одна из них имеет прямое отношение к высадке спускаемого модуля «Аполлона-11» с Нилом Армстронгом и Баззом Олдрином на борту. Незадолго до его приземления на лунную поверхность компьютер модуля начал выдавать одну ошибку за другой. Он начал выполнять больше операций, чем был способен обработать, хотя должен был сосредоточиться исключительно на приземлении модуля с первыми людьми на Луне. Благодаря настойчивости Гамильтон и других программистов команды NASA программное обеспечение было написано таким образом, что позволяло компьютеру заняться наиболее важной в данный момент задачей — высадкой — и не обращать внимание на выскакивающие ошибки. В итоге модуль успешно сел, а Армстронг первым в истории человечества ступил на поверхность Луны. 

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

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

Более двух тысяч человек пришли встретить экипаж «Аполлона-8» ночью 29 декабря 1968 года
Фото: NASA

К 1970-м годам Маргарет Гамильтон попрощалась с NASA и программой «Аполлон». Она основала несколько софтверных компаний. Одна из них, Hamilton Technologies, сейчас находится в нескольких кварталах от МТИ, где началась ее карьера <...>(англ. яз.).

Wired