Думал написать "решающая роль", но передумал - звезды их там знают, что стало решающим. Текст не мой, это чистая копипаста из одного источника. Я знаю, что на ресурсе довольно много людей, кому это может быть интересно. Впрочем, они, наверняка, это уже читали.
Косвенно этот материал отвечает на вопрос о том, как прилунялись Аполлоны.
«Когда я только начинала работать в этой сфере, все это было для нас как Дикий Запад — мы были первооткрывателями неизведанных земель. Никто нас ничему не учил» Маргарет Гамильтон.
Это Маргарет. Она пишет код хорошо. Делайте как Маргарет.
А еще:
программист-самоучка;
написала код для навигационного компьютера программы «Аполлон»;
когда американцы ступили на поверхность Луны ей был 31 год;
Маргарет НЕ автор термина «software engineering»;
часто брала на работу 4х-летнюю дочку;
дочка помогла найти баг в программе.
Под руководством Маргарет Гамильтон писались программы для бортового компьютера КА Аполлон. В один из самых ответственных моментов миссии Аполлон 11 именно работа Маргарет и ее команды предотвратила возможный срыв высадки на Луну. За три минуты до прилунения сработало несколько аварийных сигнальных устройств. Компьютер был перегруженн входящими данными – в стыковочной радарной системе произошло непроизвольное обновление счетчика, что привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Благодаря устойчивой архитектуре компьютер продолжил свою работу: в разработке бортового ПО использовался подход асинхронного исполнения (asynchronous executive). Процессы с высоким приоритетом (критичные для прилунения) могли прервать низкоприоритетные процессы.
«После расстыковки командно-служебного и лунного модулей выключатель радара стыковки был поставлен в неправильное положение из-за ошибки в инструкции для астронавтов, радар посылал ошибочные сигналы бортовому компьютеру. Обработка ложных сигналов занимала 15% машинного времени. Бортовой компьютер (точнее, вшитое в него ПО) оказался достаточно разумным для того, чтобы распознать, что на выполнение запрашивается больше операций, чем должно. Далее он выслал оповещение, означавшее для астронавта следующее: «Я перегружен бОльшим количеством задач единовременно, чем предусмотрено, и я продолжу выполнять только наиболее важные, то есть те, что необходимы для прилунения...» По сути, компьютер был запрограммирован на большее, чем просто распознавание ошибочных состояний. В ПО был предусмотрен полный набор программ по восстановлению. В данном конкретном случае реакцией ПО было приостановить работу низкоприоритетных задач и перезапустить (re-establish) наиболее важные. Если бы компьютер не распознал эту проблему и не принял восстановительные меры, я не уверена, что Аполлон 11 совершил бы успешную посадку на Луну.» Маргарет Гамильтон
Железо.
Лунный модуль.
Навигационная схема.
Навигационная программа
фазы прилунения
Interfaces Among PGNS, ATCA and the Rendezvous Radar
Бортовой управляющий компьютер.
Бортовой управляющий компьютер КА Аполлон (Apollo Guidance Computer, AGC) проводил вычисления и контролировал движение, навигацию, и управлял командным и лунным модулями в ходе полётов по программе Аполлон.
AGC был разработан для программы Аполлон в начале 1960-х годов в лаборатории приборов Массачусетского технологического института. Отличительной особенностью конструкции компьютера являлось применение микросхем, что было сделано впервые.
Также при полёте к Луне использовались два дополнительных компьютера:
Цифровой компьютер ракеты-носителя (Launch Vehicle Digital Computer, LVDC), расположенный в приборном отсеке ракеты-носителя Сатурн-5 и
Аварийная система наведения (Abort Guidance System, AGS), расположенная на борту лунного модуля на случай отказа PGNCS. AGS могла быть использована для взлёта с поверхности Луны и стыковки с командным модулем, но не для посадки.
Прошивка
Сам процесс программирования был не менее трудоемким, чем написание кода. Бортовой компьютер «Аполлонов» использовал систему памяти на магнитных сердечниках, которая хранила данные в двоичной системе. Если провода проходили через ферритовые сердечники в форме кольца, это означало единицу, если шли снаружи – ноль.
Таким образом, программы физически создавались вручную, на фабриках, где работали в основном женщины. Среди инженеров память на магнитных сердечниках даже получила прозвище LOL-память, где LOL расшифровывалось как little old lady, «маленькая старая леди».
Угадайте, что это такое....
Как происходит «прошивка» в прямом смысле слова. Смотрим на 21-й минуте
Интерфейс бортового управляющего компьютера КА Аполлон, установленный в командном модуле. Над интерфейсом виден индикатор FDAI.
Source code
Аполлон-8
Пока 4-летняя Лорен мирно спала на полу лаборатории, мама создавала программы, которые лягут в основу главного командного компьютера «Аполлона».
При подготовке полета «Аполлона-8», первого пилотируемого космического корабля, добравшегося до орбиты Луны, Маргарет Гамильтон удалось обнаружить серьезную уязвимость, но никто не поверил, что она представляет реальную угрозу. Найти эту уязвимость помогла дочь Гамильтон, которая играла с симулятором компьютера «Аполлона-8», пока ее мать работала. В какой-то момент она включила последовательность P01, запускаемую перед стартом космического корабля, когда симулятор был уже в «полете». Запуск P01 в неподходящий момент привел к сбою; и хотя у космонавтов нет никаких причин допускать такую ошибку, Гамильтон решила добавить несколько строчек кода — сделать своего рода «защиту от дурака». В NASA воспротивились, сочтя, что прекрасно подготовленные астронавты никогда в жизни не смогут так ошибиться. Тогда Гамильтон включила строчку «Не запускайте P01 во время полета» в документацию, но и это показалось руководству излишней мерой предосторожности.
Вскоре после рождества в 1968 году, когда «Аполлон-8» должен был покинуть орбиту Луны и отправиться на Землю, астронавт Джеймс Ловелл сделал именно то, чего от него никак не ждали — по ошибке запустил P01. В итоге из компьютера «Аполлона» исчезли навигационные данные, и он не мог точно определить свое положение в пространстве. Экипажу корабля пришлось быстро сориентироваться по звездному небу и ввести правильные данные в компьютер, а специалистам NASA, в том числе и Маргарет Гамильтон — провести девять часов в поисках решения, как отправить на «Аполлон» из Хьюстона другие необходимые компьютеру сведения. «Аполлон-8» успешно приземлился, а Ловелл спустя год с лишним применил свои навыки ручного перепрограммирования компьютера космического корабля во время полета «Аполлона-13», экипажем которого он командовал. Миссия «Аполлона-13» завершилась неудачей из-за аварии по пути к Луне, но космическому кораблю удалось вернуться на Землю. Ловелл потом признавался, что ему очень помог в нештатной ситуации «Аполлона-13» прошлый опыт «Аполлона-8» и называл тот инцидент с потерей навигационных данных «плановой тренировкой». Позднее астронавт все-таки признался, что стер данные по собственной оплошности. [источник]
Software engineering
Успехи Маргарет в проекте SAGE открыли ей двери в NASA. Маргарет вспоминает:
«В этой компании принято давать новичкам программу, в которой никто не может разобраться и тем более запустить. Когда я была стажером, мне тоже дали такую задачку. Это была весьма заковыристая программа, и более того, автор кода находил удовольствие в написании комментариев к коду исключительно на греческом и латинском. Так, мне дали эту задачу, и, собственно, я заставила ее работать. Она даже результат выводила на печать на греческом и латинском. Я была первой, кто смог ее запустить.»
Свободное плавание
В 1986 году она основала и стала генеральным директором Hamilton Technologies, в Кембридже, штат Массачусетс, компании разработчика языка программирования Universal Systems Language. «Язык универсальных систем», предупреждающем, а не исправляющем сбойные ситуации, который основывается на теории систем и опирается на уроки проекта по разработке бортового программного обеспечения кораблей «Аполлон».
Больше фото и видео можно
Этот материал ничего не доказывает, но, как я писал раньше, я не планировал что-то доказывать. Очевидно, что есть люди, которым эта тема интересна - этот материал для них. Я даже и не знаю, как этот материал могут покритиковать те, кто раньше с умным видом обсуждал космические памперсы или делал вид, что разбирается в радиации. Впрочем, посмотрим.
Читайте нас: