_«Когда я только начинала работать в этой сфере, все это было для нас как Дикий Запад — мы были первооткрывателями неизведанных земель. Никто нас ничему не учил»_ Маргарет Гамильтон. ![][1] Это [Маргарет][2]. Она пишет код хорошо. Делайте как Маргарет. А еще:
* программист-самоучка;
* написала код для навигационного компьютера программы «Аполлон»;
* когда американцы ступили на поверхность Луны ей был 31 год;
* Маргарет **НЕ** автор термина «software engineering»;
* часто брала на работу 4х-летнюю дочку;
* дочка помогла найти баг в программе.
Под руководством Маргарет Гамильтон писались программы для бортового компьютера КА Аполлон. В один из самых ответственных моментов миссии Аполлон 11 именно работа Маргарет и ее команды **предотвратила возможный срыв высадки на Луну**. За три минуты до прилунения сработало несколько аварийных сигнальных устройств. Компьютер был перегруженн входящими данными – в стыковочной радарной системе произошло непроизвольное обновление счетчика, что привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Благодаря устойчивой архитектуре компьютер продолжил свою работу: в разработке бортового ПО использовался подход асинхронного исполнения (asynchronous executive). Процессы с высоким приоритетом (критичные для прилунения) могли прервать низкоприоритетные процессы.
> _«После расстыковки командно-служебного и лунного модулей выключатель радара стыковки был поставлен в неправильное положение из-за ошибки в инструкции для астронавтов, радар посылал ошибочные сигналы бортовому компьютеру. Обработка ложных сигналов занимала 15% машинного времени. Бортовой компьютер (точнее, вшитое в него ПО) оказался достаточно разумным для того, чтобы распознать, что на выполнение запрашивается больше операций, чем должно. Далее он выслал оповещение, означавшее для астронавта следующее: «Я перегружен бОльшим количеством задач единовременно, чем предусмотрено, и я продолжу выполнять только наиболее важные, то есть те, что необходимы для прилунения...» По сути, компьютер был запрограммирован на большее, чем просто распознавание ошибочных состояний. В ПО был предусмотрен полный набор программ по восстановлению. В данном конкретном случае реакцией ПО было приостановить работу низкоприоритетных задач и перезапустить (re-establish) наиболее важные. Если бы компьютер не распознал эту проблему и не принял восстановительные меры, я не уверена, что Аполлон 11 совершил бы успешную посадку на Луну.»_
>
> Маргарет Гамильтон
> _«Девушка молоток! Но я бы не хотел себе такую жену, ибо смотрелся бы на ее фоне жалко, хоть и программист… LOL»_
>
>
>
> [Коммент][3]
>
> с GeekTimes
[Читать дальше →][4]
[1]:
https://habrastorage.org/files/6d2/307/ed7/6d2307ed76054232bc1d3d17513047ae.jpg
[2]:
https://en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
[3]:
https://geektimes.ru/post/242925/#comment_8192555
[4]:
https://habrahabr.ru/post/278585/#habracut