?

Log in

No account? Create an account

das_foland


"Откуда я пришел, не знаю..."


Previous Entry Share Next Entry
Неженская профессия?
das_foland
Поздравляю всех женщин с международным женским днём!

Принято считать, что есть "женские" профессии, а есть "мужские". И профессия программиста как раз считается мужской профессией. А между тем, среди программистов немало женщин. В этой небольшой заметке хотелось бы рассказать как раз про одну замечательную программистку, активной участнице разработки американской лунной программы.


Ведущий инженер-программист в проекте пилотируемой программы полётов к Луне «Аполлон» Маргарет Гамильтон стоит у распечатки написанного ей кода для бортового компьютера «Аполлона-7»

Под руководством Маргарет Гамильтон писались программы для бортового компьютера КА Аполлон. В один из самых ответственных моментов миссии Аполлон 11 именно работа Маргарет и ее команды предотвратила возможный срыв высадки на Луну. За три минуты до прилунения сработало несколько аварийных сигнальных устройств. Компьютер был перегружен входящими данными – в стыковочной радарной системе произошло непроизвольное обновление счетчика, что привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Благодаря устойчивой архитектуре компьютер продолжил свою работу: в разработке бортового ПО использовался подход асинхронного исполнения (asynchronous executive). Процессы с высоким приоритетом (критичные для прилунения) могли прервать низкоприоритетные процессы.

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

Аполлон-8

Пока 4-летняя Лорен мирно спала на полу лаборатории, мама создавала программы, которые лягут в основу главного командного компьютера «Аполлона».

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

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

Кстати, в те времена, на заре развития компьютеров женщины участвовали и в прошивке программ в память компьютеров. Причём это была прошивка в прямом смысле, ибо выглядела эта память примерно так:



А сам процесс можно увидеть на этом видео:



Подготовлено по материалам этой статьи.



Tags: