Новатор в области информатики рассказывает о том, как руководила разработкой программного обеспечения для посадки миссии «Аполлон-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)
FlyingDutchman2
24.07.2019 12:20-2Эта девушка руководила командой из 100 программистов? Как-то с трудом верится.
Baigildin
24.07.2019 16:35+1Ангела Меркель руководит страной с населением 82млн человек. Пора перестать быть сексистом в 2019-ом то году.
OneType
24.07.2019 17:37Живу в Германии и Меркель мной не руководит, аналогично и с остальными 82млн. А вообще, она сама в себе бабка, в основном ее политика идет вразрез с интересами коренного населения Германии.
Baigildin
24.07.2019 18:38+3Для вас "руководить" означает стоять прямо над вами и лично ВАМ отдавать приказы и распоряжения?
FlyingDutchman2
24.07.2019 18:09+3А при чем тут сексизм? У меня вызвал подозрение ее возраст (слишком молодая для такого руководителя). А вовсе не пол, как вы подумали.
Baigildin
24.07.2019 22:01Эмм, в 28 лет. Вполне нормальный возраст чтобы уже стать руководителем. У нас в университете я знал как минимум двух зам.деканов и декана 30 лет.
dasFlug
25.07.2019 01:55Мало было тогда программистов постарше да еще и с опытом разработки real-time систем. Там и других молодых на ответственных местах хватало — Джин Кранц стал руководителем полетов в 32.
etozhesano
24.07.2019 19:56-2Почему нет? Если женский пол, то значит невозможно руководить большим количеством людей?
xPomaHx
25.07.2019 04:29+1Чем с более умными людьми работаешь, тем меньше нужно руководить, так как они осознанные и сами знают что и как делать, и их не нужно «шпынять» чтобы работали.
phaggi
24.07.2019 14:20Э… насколько я помню, во прилунения Аполлона-11 бортовой комп выдавал ошибки (точнее, «выкидывал исключения»).
И астронавты теребили Землю, че им с этими ошибками делать. Правда, это были ошибки не критические, комп временно прекращал действие некоторых второстепенных подпрограмм; но формально сообщения об ошибках таки были. И они не были документированы ни у астронавтов, ни в документации. И если бы в ком.центре не оказался дотошный товарищ с распечаткой полного списка ошибок компьютера, посадку могли бы и отменить.
Вместе с тем, фатальных сбоев действительно не произошло.dmitryredkin
24.07.2019 15:30В статье именно об этом (знаменитые ошибки 1202 и 1201) и говорится:
Я видела, как всё это происходило, стоя в центре управления в MIT. После этого мы воссоздали ситуацию – переключатель радара оказался в неправильном положении, и забирал себе процессорные мощности. Быстро стало ясно, что ПО не только информировало людей о наличии проблемы в оборудовании, но и компенсировало их – перезагружало и переназначало задачи с наивысшим приоритетом.
Sedlo
25.07.2019 23:35… А на фотке 69 года Маргарет похожа на Эми Фара Фаулер…
Или Эми похожа на Риту?
Zet_Roy
Сейчас США не может воспроизводить такие кадры, большинство выучились на управленцев, менеджеров, адвокатов, маркетологов и т.д. Американское образование стагнирует и научная промышленость США держится за счет мигрантов из других стран.
Skykharkov
Да что там говорить, даже негров для линчевания уже своих не выращивают. За счет мигрантов выкручиваются. И на границе, у мексикашек, по пять баксов пограничники занимают, чтобы еще, хоть немного, увеличить госдолг. Сплошная бездуховность, прости господи...
vershinin
Не смотря на то, что товарищ наверху сгущает краски — определённая проблема есть. После запуска «Спутника» Советами, в США заработали на полную мощность социальные лифты, которые поднимали наверх людей, выучивая их и обеспечивая занятость. Сейчас эти лифты работают всё хуже и хуже, к сожалению.
sim3x