Новатор в области информатики рассказывает о том, как руководила разработкой программного обеспечения для посадки миссии «Аполлон-11» на Луну



Барак Обама вручает Маргарет Гамильтон Президентскую медаль Свободы в 2016-м

Пионер информатики Маргарет Гамильтон сыграла ключевую роль в посадке астронавтов на Луну, впервые произошедшей 20 июля 1969 года, 50 лет назад, а также в безопасном возврате их домой спустя несколько дней. Молодая женщина-программист из MIT, с маленьким ребёнком, управляла командой, создававшей бортовое полётное ПО для миссий «Аполлон», включая и "Аполлон-11". Эта компьютерная система была одной из сложнейших для своего времени. Её строгий подход к программированию оказался настолько успешным, что неизвестно ни об одной программной ошибке, случавшейся во время пилотируемых миссий «Аполлон». «Она символизирует поколение невоспетых женщин, помогавших отправлять человечество в космос», — сказал президент Барак Обама в 2016 году, когда он наградил Гамильтон президентской медалью Свободы, высочайшей гражданской наградой в США. В 2017 году она стала одной из немногих женщин, работавших в НАСА, увековеченных в виде фигурки LEGO. В 50-ю годовщину первого прилунения Гамильтон, которой исполнилось уже 82 года, вспоминает о своей новаторской работе с вычислительной техникой.

Почему вы занялись программированием? Когда вы начинали работу, учёных степеней по информатике не существовало…

Я вышла замуж в 1958 году, сразу после получения диплома по математике и дополнительной степени по философии в колледже Эрлхэма. Мы оба могли поступить в аспирантуру – я по абстрактной математике, а мой муж по химии – но я год проработала учителем в старших классах, у нас появилась дочка, и муж решил, что хочет получать юридическое образование в Гарварде. Я нашла работу, чтобы обеспечивать семью в находившемся неподалёку MIT. Работа была в лаборатории профессора Эдварда Лоренца, отца теории хаоса, и заключалась в разработке системы, предсказывавшей погоду. Ему нужны были выпускники с математическим образованием. Мы наняли няньку, чтобы она заботилась о дочке. Там я и узнала, что такое компьютер и как писать ПО. Информатика и программирование ещё не существовали в виде отдельных дисциплин; программисты учились прямо на работе. Любовь Лоренца к экспериментам с ПО оказалась заразительной, ну я и заразилась.

Как вы попали в проект «Аполлон» в 1964?

От написания программ я перешла к обнаружению вражеских воздушных судов в лаборатории Линкольна при MIT. Я планировала вернуться к аспирантуре, когда мой муж увидел объявление в газете. Лаборатория измерительной аппаратуры MIT искала людей для разработки ПО для «отправки человека на Луну». Лаборатория получила от НАСА контракт на создание бортового полётного ПО для проекта «Аполлон», поскольку именно она также разрабатывала и вычислительное оборудование для этого. Меня привлекла как сама идея, так и то, что этого раньше никто не делал. Я была первым программистом и первой женщиной, нанятой ими. На проекте уже работали мужчины-инженеры, но они были по части электроники, и это была не их область. А у меня уже был такой опыт. Думаю, что в лаборатории решили, что я справлюсь с чем-то новым.

Вы сначала работали над ПО для беспилотных миссий «Аполлон». Но потом вас постепенно повысили до руководителя команды, разрабатывающей ПО для пилотируемых космических кораблей, включая «Аполлон-11». Что входило в ваши обязанности?

Там было два бортовых компьютера – один на командном модуле «Колумбия», а другой на лунном «Орле». В нашу задачу входила разработка ПО, которое должно было работать на каждом модуле само по себе, а также их общего ПО. Сначала никто не думал, что ПО будет настолько важным вопросом. Однако постепенно все стали понимать, насколько сильно от него всё зависит. Наша группа выросла настолько, что в итоге в команде работало около 100 программистов. На кону были жизни астронавтов. Нашему ПО нужно было быть чрезвычайно надёжным, и оно должно было уметь обнаруживать ошибки и восстанавливаться от них в любой момент в течение миссии. И всё это должно было соответствовать железу.


Маргарет Гамильтон в 1969 году с листингом программного кода, разработанного её командой для миссий «Аполлон»

Были ли у вас проблемы при совмещении работы программистом и материнства?

Часто по вечерам или на выходных я брала свою маленькую дочку, Лорен, с собой на работу. Однажды мы были вместе, и я занималась симуляцией миссии полёта на Луну. Ей нравилось меня имитировать, и играть в астронавта. Она начала жать на клавиши, и внезапно запустила симуляцию. Потом понажимала ещё клавиш, и симуляция упала. Она выбрала программу, которая должна была выполняться перед запуском – но при этом симуляция уже «летела» на Луну. У компьютера было так мало памяти, что он стёр все данные по навигации, необходимые для полёта. Я подумала: боже мой, это ведь может случайно произойти и во время реальной миссии. Я предложила изменить программу, чтобы предотвратить возможность запуска предстартового сегмента во время полёта.
Однако начальство из MIT и НАСА решило, что астронавты слишком хорошо натренированы, чтобы так ошибиться. И в процессе полёта уже в следующей миссии – «Аполлон-8» – один из астронавтов на борту случайно сделал именно то, что сделала Лорен. Ошибка Лорен! Я подняла бучу и настояла, чтобы миссию перенастроили. После этого они уже, конечно, позволили внести правки в программу.

Большую часть славы за прилунение забрали себе астронавты. Однако они сделали это при помощи созданной вами системы, предупреждавшей о чрезвычайных ситуациях в полёте. Как сказал Обама: «У наших астронавтов не было много времени, но, к счастью, у них была Маргарет Гамильтон».

Незадолго до посадки на приоритетном дисплее компьютера появились предупреждения о чрезвычайной ситуации, и компьютер оказался перегруженным. Я видела, как всё это происходило, стоя в центре управления в MIT. После этого мы воссоздали ситуацию – переключатель радара оказался в неправильном положении, и забирал себе процессорные мощности. Быстро стало ясно, что ПО не только информировало людей о наличии проблемы в оборудовании, но и компенсировало их – перезагружало и переназначало задачи с наивысшим приоритетом. Обнаружение ошибок и механизмы восстановления пришли на помощь. Всех охватило облегчение, когда они сели – и что астронавты в порядке, и что ПО сработало идеально.

Насколько я понимаю, в ранние дни программирования женщин там было довольно много. Считалось, что это женская работа. Так ли это было по вашему опыту?

Программирование никогда не считалось женской работой, по крайней мере, ни в одном из множества проектов, над которыми работала я. Люди-вычислители, занимавшиеся вычислениями вручную, в подавляющем большинстве случаев были женщинами, а также много женщин использовало механические калькуляторы типа Marchant – но они не были программистами. Они не писали код. Когда я начала работать над проектом «Аполлон», в нём больше не было женщин, писавших код. Затем, через пару лет, появилось немного женщин – некоторые из которых работали на меня. Мужчин всегда было гораздо больше.

Раздражало ли мужчин, что вы руководили ими?

Когда я взяла на себя управление, один из высоких начальников сказал, что у него нет сомнений в моей компетентности, но что он беспокоится о том, что какие-то мужчины из моей группы могут поднять бунт. Но этого не произошло. Мы более всего остального были сосредоточены на миссиях и работали плечом к плечу над решением сложных задач, стараясь успеть в критически важные сроки. Мне также повезло иметь очень современного мужа, особенно для того времени. Некоторые мужчины понимали равноправие.

Вы изобрели, или, по крайней мере, популяризировали термин software engineering [разработка программного обеспечения, программотехника]. Зачем ему понадобилось придумывать новое название?

В ранние годы «Аполлона» к программам не относились так же серьёзно, как к другим инженерным дисциплинам. Хотя у нас была довольно сложная система из многих составляющих, мы не получали признания за работу в по-настоящему серьёзной области. От отчаяния я придумала этот термин, как бы заявляя: «Эй, мы, вообще-то, тоже инженеры». Долгое время это воспринималось как шутка. А потом однажды на встрече один из наиболее уважаемых гуру в области железа объяснил всем, что согласен со мной. Процесс создания ПО тоже необходимо рассматривать, как инженерную дисциплину, как и в случае с железом. Это был памятный момент.


Маргарет Гамильтон увековечена в виде фигурки для Lego из серии «Женщины НАСА»

После «Аполлона» части вашего кода использовались в Skylab, первой космической станции, а потом в программе космических шатлов. Вы основали собственный бизнес, и использовали опыт для разработки более доступного и надёжного ПО. Какие уроки могут вынести для себя программисты сегодня из проекта «Аполло»?

Недавно мы столкнулись с системами, из-за которых самолёт падал, а пилот не понимал, что происходит. Также, что стало ясно из проекта «Аполло» – хотя работал он по-другому – что лучше определять системы заранее, чтобы минимизировать количество ошибок, вместо того, чтобы сразу выдавать кучу кода, который потом придётся исправлять патчами, которые потом тоже нужно будет патчить. Этот урок, судя по всему, остался неусвоенным – в данном отношении сегодня ПО разрабатывают так же, как и 50 лет назад.



Существует знаменитая фотография из 1969 года, где вы стоите рядом со стопкой распечатанного кода миссий «Аполлон» ростом практически с вас. Недавно это изображение сопоставили с фотографией Кэти Боумен, учёным, которая помогла разработать алгоритм, создавший самое первое изображение чёрной дыры. Она позирует со стопкой жёстких дисков своего проекта, и этот фотомонтаж стал вирусным. Помните ли вы, как делали эту фотографию, и что вы вынесли для себя из этого сравнения?

Фотографию сделал во время миссии «Аполлон-11» фотограф из MIT специально для газет. Мы увлеклись, сгребли все листинги от «Аполлона» в моём офисе и построили эту башню. Я пыталась найти способ удерживать её в вертикальном положении. Мне не казалось, что такое сравнение – это плохо. По крайней мере, они нас не прятали. Хотя я не завидую Боумен, ей ведь пришлось сражаться со всем сарказмом, который может распространяться в интернете. В некотором смысле для женщин ситуация сегодня стала хуже.

Какой совет вы дали бы молодым женщинам, желающим построить карьеру в программировании?

Не давайте страху завладеть вами, и не бойтесь говорить «Я не знаю» или «Я не понимаю» – глупых вопросов не бывает. И не верьте на 100% так называемым экспертам!

Комментарии (23)


  1. Zet_Roy
    24.07.2019 10:22
    -4

    Сейчас США не может воспроизводить такие кадры, большинство выучились на управленцев, менеджеров, адвокатов, маркетологов и т.д. Американское образование стагнирует и научная промышленость США держится за счет мигрантов из других стран.


    1. Skykharkov
      24.07.2019 10:34
      +3

      Да что там говорить, даже негров для линчевания уже своих не выращивают. За счет мигрантов выкручиваются. И на границе, у мексикашек, по пять баксов пограничники занимают, чтобы еще, хоть немного, увеличить госдолг. Сплошная бездуховность, прости господи...


      1. vershinin
        24.07.2019 13:22

        Не смотря на то, что товарищ наверху сгущает краски — определённая проблема есть. После запуска «Спутника» Советами, в США заработали на полную мощность социальные лифты, которые поднимали наверх людей, выучивая их и обеспечивая занятость. Сейчас эти лифты работают всё хуже и хуже, к сожалению.


        1. sim3x
          24.07.2019 14:13
          +1

          Сейчас эти лифты работают всё хуже и хуже
          У вас есть данные по данному поводу?


  1. Tortortor
    24.07.2019 10:34

    упоминание фильма «Скрытые фигуры» должно быть здесь


    1. dzhidzhoev
      25.07.2019 00:32

      +


  1. FlyingDutchman2
    24.07.2019 12:20
    -2

    Эта девушка руководила командой из 100 программистов? Как-то с трудом верится.


    1. Baigildin
      24.07.2019 16:35
      +1

      Ангела Меркель руководит страной с населением 82млн человек. Пора перестать быть сексистом в 2019-ом то году.


      1. OneType
        24.07.2019 17:37

        Живу в Германии и Меркель мной не руководит, аналогично и с остальными 82млн. А вообще, она сама в себе бабка, в основном ее политика идет вразрез с интересами коренного населения Германии.


        1. Baigildin
          24.07.2019 18:38
          +3

          Для вас "руководить" означает стоять прямо над вами и лично ВАМ отдавать приказы и распоряжения?


      1. FlyingDutchman2
        24.07.2019 18:09
        +3

        А при чем тут сексизм? У меня вызвал подозрение ее возраст (слишком молодая для такого руководителя). А вовсе не пол, как вы подумали.


        1. da411d
          24.07.2019 19:26
          +2

          Тогда это будет ейджизм?...


          (От слова Age, ну вы поняли)


          1. FlyingDutchman2
            24.07.2019 20:21
            +1

            А еще антиамериканизм!


        1. Baigildin
          24.07.2019 22:01

          Эмм, в 28 лет. Вполне нормальный возраст чтобы уже стать руководителем. У нас в университете я знал как минимум двух зам.деканов и декана 30 лет.


        1. dasFlug
          25.07.2019 01:55

          Мало было тогда программистов постарше да еще и с опытом разработки real-time систем. Там и других молодых на ответственных местах хватало — Джин Кранц стал руководителем полетов в 32.


        1. Newbilius
          25.07.2019 08:57

          Ну да, все же знают, что возраст является гарантом навыков и опыта...


    1. etozhesano
      24.07.2019 19:56
      -2

      Почему нет? Если женский пол, то значит невозможно руководить большим количеством людей?


    1. xPomaHx
      25.07.2019 04:29
      +1

      Чем с более умными людьми работаешь, тем меньше нужно руководить, так как они осознанные и сами знают что и как делать, и их не нужно «шпынять» чтобы работали.


  1. phaggi
    24.07.2019 14:20

    Э… насколько я помню, во прилунения Аполлона-11 бортовой комп выдавал ошибки (точнее, «выкидывал исключения»).

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

    Вместе с тем, фатальных сбоев действительно не произошло.


    1. dmitryredkin
      24.07.2019 15:30

      В статье именно об этом (знаменитые ошибки 1202 и 1201) и говорится:

      Я видела, как всё это происходило, стоя в центре управления в MIT. После этого мы воссоздали ситуацию – переключатель радара оказался в неправильном положении, и забирал себе процессорные мощности. Быстро стало ясно, что ПО не только информировало людей о наличии проблемы в оборудовании, но и компенсировало их – перезагружало и переназначало задачи с наивысшим приоритетом.


  1. lobotomic
    25.07.2019 01:20
    +4

    Жаль, что в статье не освещается вопрос, наиболее интересный для меня, — какими методами команде удалось добиться такой хорошей работы программы.


    1. leonid80
      25.07.2019 23:35

      Эту программу просто не запускали )


  1. Sedlo
    25.07.2019 23:35

    … А на фотке 69 года Маргарет похожа на Эми Фара Фаулер…
    Или Эми похожа на Риту?