21 387
08 марта 2022 в 8:00
Автор: Виталий Олехнович

Женщина, которая посадила человека на Луну. История за известным снимком

Автор: Виталий Олехнович

Обычно, когда этот снимок в очередной раз всплывает где-нибудь в интернете, он сопровождается совсем краткой формулировкой: ведущая программистка миссии «Аполлон-11», которая помогла людям высадиться на Луну. Но, как это часто бывает, короткие формулировки в соцсетях не раскрывают полностью тот феномен, которым является Маргарет Гамильтон для программирования — женщина-математик с ребенком на ответственной контрактной работе в NASA в 1964 году.

20 июля 1969 года, когда лунный модуль «Орел» стал приближаться к поверхности Луны, его бортовой компьютер стал мигать предупреждениями. Что-то перегружало компьютер и угрожало посадке. Центр управления полетами на мгновение растерялся, но миссию продолжили, сохраняя полную уверенность в надежности ПО корабля. Оно умело игнорировать задачи с низким приоритетом, а потому, несмотря на возникшие предупреждения, бортовой компьютер продолжил выполнение задачи по высадке первых людей на Луне. Разработкой софта для этого компьютера руководила Маргарет Гамильтон.

Как потом оказалось, контрольный список для астронавтов содержал ошибку. Они зря включили радар сближения: сигнал тревоги свидетельствовал о том, что в бортовой компьютер, помимо навигационных данных, поступала информация с радара сближения с командно-служебным модулем, которая в тот момент была излишней.

«Вскоре стало ясно, что программное обеспечение не только сообщало о проблеме, связанной с оборудованием, но и компенсировало ее», — цитируем саму Маргарет Гамильтон.

Бортовой компьютер показывал «1202 alarm». Это означало, что компьютер избавился от менее важных задач, чтобы сосредоточиться на управлении спускаемым двигателем и предоставлении экипажу информации о посадке. Система была разработана командой под управлением Гамильтон таким образом, что она могла игнорировать события и задачи с более низким приоритетом, чем обслуживаемые на компьютере в конкретный момент. Это было асинхронное ПО: более важные задачи прерывали менее важные. Для компьютеров той поры более привычным было выполнение потока последовательных задач.

Я вышла замуж в 1958 году, сразу после того, как окончила колледж Эрлхэм в штате Индиана по математической специальности. У нас обоих были ассистентские программы для поступления в аспирантуру: у меня — по абстрактной математике, у мужа — по химии. Но тем временем я уже год преподавала в средней школе, у нас родилась дочь, и муж решил, что хочет поступить на юридический факультет в Гарвард.

Я нашла работу, чтобы содержать нашу семью, в близлежащем Массачусетском технологическом институте (MIT). Это была лаборатория профессора Эдварда Лоренца, отца теории хаоса, который работал над системой предсказания погоды. Он приглашал на работу математиков.

Чтобы присматривать за дочерью, мы наняли няню. Здесь я узнала, что такое компьютер и как писать программы. Компьютерные науки и программная инженерия еще не были дисциплинами. Вместо этого программисты учились прямо на рабочем месте. Любовь Лоренца к экспериментам с программами была заразительна, и я заразилась.

В какой-то момент Маргарет перешла к написанию программного обеспечения для обнаружения вражеских самолетов. Она собиралась возобновить учебу в аспирантуре, когда на глаза ее мужу попалось объявление в газете: лаборатория приборостроения Массачусетского технологического института искала людей для разработки ПО для «отправки человека на Луну». Она только-только заключила контракт с NASA на создание бортового ПО для миссии «Аполлон» и разработку соответствующего устройства.

Команда инженеров-мужчин уже вовсю трудилась над хардверной частью проекта, тогда как Маргарет в 1964 году стала первым программистом этого проекта и первой женщиной в нем. Ей было всего 28 лет. Сперва она писала ПО для беспилотных миссий, а потом и для пилотируемых, включая «Аполлон-11». Это было время бумажных перфокарт для ввода информации в компьютеры размером с комнату без какого-либо экранного интерфейса.

Всего спустя год после начала работы над контрактом NASA Маргарет Гамильтон возглавила собственную группу в лаборатории приборостроения MIT, где писали и тестировали ПО для бортовых компьютеров: один — на борту командного модуля «Колумбия», другой — на лунном модуле «Орел».

Вскоре команда Гамильтон разрослась до сотни программистов. Это было время, когда женщин в программировании практически не было. Чаще всего они занимались вычислениями — по сути, были процессорными ядрами, которые делали вычисления вручную или на механических калькуляторах, но не писали код. Так что у Маргарет под управлением были в основном мужчины.

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

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

А еще у Маргарет есть дочь. В те годы работы на миссии «Аполлон» Лорен — дочери Маргарет — было около 7 лет. Мать часто брала ее с собой на работу: хотя у дочери и была наемная нянька, но той также нужен был отдых. Как рассказывала Гамильтон, в один из таких приходов дочка предсказала ошибку, которую затем в рамках миссии «Аполлон-8» допустил Джим Ловелл. Лорен щелкала кнопками на рабочем месте мамы, подражая ей, и в какой-то момент запустила симуляцию миссии полета к Луне, а потом пощелкала кнопками еще — и вся симуляция упала. Дело в том, что девочка выбрала программу, выполнявшуюся перед запуском ракеты. В итоге компьютер стер все предыдущие данные по навигации.

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

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

«Мы увлеклись, собрали все листинги „Аполлона“ в моем офисе и возвели башню. Я пыталась удержать ее в вертикальном положении», — рассказывает Гамильтон о снимке, сделанном фотографом из MIT.

Гамильтон и дальше руководила софтверным департаментом миссий «Аполлон». Ее код использовался для вывода первой космической станции США SkyLab, она открыла несколько частных компаний, получила награды и признание от NASA и властей США, является автором 130 патентов, ввела в обиход термин software engineering.

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

Наш канал в Telegram. Присоединяйтесь!

Есть о чем рассказать? Пишите в наш телеграм-бот. Это анонимно и быстро

Перепечатка текста и фотографий Onlíner без разрешения редакции запрещена. ng@onliner.by