Кошка Ночной Луны. Morgenmuffel
05.02.2020 в 03:59
Пишет Санди Зырянова:Полет на Луну и МаргаретURL записи
Маргарет Гамильтон с кодом, который она написала для «Аполлона-11 // Wikimedia Commons
читать дальшеПрограммистка Маргарет Гамильтон возглавляла команду, отвечавшую за разработку бортового программного обеспечения при высадке астронавтов NASA на Луну. Благодаря ее коду компьютер лунного модуля «Аполлона-11» справился с нештатной ситуацией, и его экипаж смог выйти на поверхность Луны.
Маргарет Гамильтон родилась 17 августа 1936 года. После окончания средней школы Хэнкок в 1954 году, она изучала математику в Мичиганском университете. В 1958 году она получила степень бакалавра по математике и философии в колледже Эрлхэм. Летом 1959 года ей подвернулась возможность поработать с известным математиком и метеорологом Эдвардом Лоренцом, автором теории хаоса, в отделе метеорологии в MIT. Там Маргарет Гамильтон разработала программное обеспечение для прогнозирования погоды для компьютеров LGP-30 и PDP-1 в проекте MAC Марвина Мински.
С 1961 по 1963 год Маргарет занималась военными разработками в проекте SAGE, где выполняла прототип системы AN/FSQ-7 — программного обеспечения для поисков самолетов противника.
«Когда вы приходите в эту организацию, то обычно вам, как новичку, дают эту программу, которую никто и никогда не мог ни понять, ни запустить; и со мной было также. Программирование этого оказалось сложной задачей, а тот, кто писал код программы, получал кайф, оставляя комментарии на греческом и латыни. Я стала первой, кто заставил её работать», — рассказывала Гамильтон.
Именно работа в этом проекте помогла Маргарет Гамильтон стать кандидатом на должность ведущего разработчика программного обеспечения для полетов «Аполлона».
Гамильтон присоединилась к Лаборатории Дрейпера в Массачусетском технологическом институте (MIT) и возглавила команду, которая разработала программное обеспечение для «Аполлона» и Skylab. Исследователи должны были заставить работать алгоритмы для бортовых компьютеров командного и лунного модулей «Аполлона» и спроектировать системное программное обеспечение. Это была очень трудная задача: программисты работали сутками. В то время не было курсов по программированию, все приходилось познавать опытным путем.
Часто по вечерам и в выходные дни Маргарет брала на работу свою дочь Лорен, которая наблюдала за тем, как мама использует блок дисплея и клавиатуры симулятора (DSKY) для тестирования программного обеспечения. Однажды девочка решила поиграть в астронавта и случайно сломала симулятор. Маргарет заметила, что ребенок выбрал предзапускную программу P01 во время «полета». Это испугало ее: ведь то же самое мог случайно сделать астронавт во время реальной миссии. Гамильтон стала убеждать сотрудников MIT и руководство NASA в необходимости изменения кода, чтобы программа могла проверять ошибки пользователей. Код был переписан, а сама Гамильтон даже добавила программную заметку с надписью «Не выбирайте P01 во время полета».
Чтобы успешно посадить корабль на поверхность, бортовой компьютер Apollo Guidance Computer должен был ежесекундно обрабатывать огромное количество данных. Он должен был знать, где находится лунный модуль, куда он движется, на какой высоте, с какой скоростью и какова производительность двигателя, и поддерживать правильную ориентацию корабля на основе этих данных. Также было необходимо постоянно корректировать траекторию прерывания, по которой экипаж мог вернуться на орбиту в случае нештатной ситуации.
Чтобы упростить задачу астронавтам и компьютеру, каждое событие миссии (посадка, стыковка и т.д) было разбито на части. Эти управляемые модули можно было запускать индивидуально, делая всю систему более надежной. Программы не могли запускаться одновременно, так как Apollo Guidance Computer был однопроцессорным: они были запланированы и выполнялись на основе приоритета. Если нужно было запустить какой-то жизненно важный процесс, компьютер мог в любой момент прервать менее важную работающую программу.
...20 июля 1969 года, когда лунный модуль Eagle («Орел») стремительно приближался к поверхности Луны, астронавты «Аполлона-11» Базз Олдрин и Нил Армстронг не отрывали глаз от бортовых компьютеров. Им оставалось преодолеть всего 9 км до места посадки. На Земле диспетчеры слушали сообщения астронавтов и пристально следили за числами, заполняющими экраны, в поисках любой маленькой аномалии, которая могла бы вызвать прерывание посадки. Внезапно раздался голос Армстронга: «Это 1202… Что это? Дайте расшифровку программного сигнала 1202…» Выяснилось, что, когда лунный модуль «Аполлона-11» спускался к поверхности Луны, произошла непредвиденная ситуация: память компьютера переполнилась. На дисплеях загорелись аварийные сигналы ошибок 1201 и 1202, предупреждающих о том, что компьютер не может выполнить все команды. Впоследствии оказалось, что это произошло из-за неправильного положения переключателя радара, который отслеживал положение командного модуля на орбите, чтобы в случае аварийной ситуации отправить лунный модуль назад. В фоновом режиме он отправлял на компьютер блоки данных, которые забивали память.
Именно благодаря коду Маргарет Гамильтон вычислительная система лунного модуля просто сбрасывала задания с низким приоритетом и выполняла важные. С Земли было отправлено решение о приземлении, и через несколько минут Нил Армстронг сказал: «Хьюстон, База Спокойствия здесь. “Орел” приземлился».
Код для Apollo Guidance Computer (AGC), который написала Маргарет Гамильтон и ее команда, находится в открытом доступе. На его основе было создано программное обеспечение для первой космической станции США Skylab, шаттлов, которые выполнили более 100 успешных миссий на околоземной орбите, и первых цифровых электродистанционных систем управления в летательных аппаратах. Сама Маргарет Гамильтон была удостоена многочисленных наград, в том числе премии имени Ады Лавлейс.
По материалам "Постнауки"