
20 июля 1969 года. До касания лунной поверхности остаётся три минуты. Лунный модуль «Орёл» снижается над Морем Спокойствия, когда бортовой компьютер внезапно начинает выдавать тревожные сигналы — 1202, 1202. Центр управления полётами замирает. Астронавты Нил Армстронг и Базз Олдрин ждут решения: садиться или нет.
В этот момент между человечеством и первой лунной посадкой стоит одна вещь — строки кода, написанные тридцатидвухлетней женщиной в Кембридже, штат Массачусетс. Маргарет Гамильтон предвидела этот сценарий. Она встроила в программу механизм приоритизации задач: если компьютер перегружен, он сбрасывает всё второстепенное и сосредотачивается на главном. На посадке.
«Садитесь», — скомандовал Хьюстон.
«Орёл» приземлился.
Маргарет Элейн Хифилд родилась 17 августа 1936 года в маленьком городке Паоли, штат Индиана. Городок настолько маленький, что его название едва ли о чём-то говорит даже большинству американцев. Её отец Кеннет занимался философией и поэзией — редкое сочетание для провинциальной Индианы. Мать, Рут Эстер, передала дочери аккуратность и упорство.
Семья переехала в Мичиган, где Маргарет окончила среднюю школу Хэнкок в 1954 году. В 1955-м она поступила на математический факультет Мичиганского университета, а затем перевелась в колледж Эрлхэм — туда, где когда-то училась её мать. В 1958 году Маргарет получила степень бакалавра по математике с дополнительной специализацией по философии.
Философия и математика — казалось бы, странное сочетание для человека, чьё будущее окажется связано с машинным кодом. Но именно эта пара дисциплин сформировала особый склад ума: способность видеть систему целиком, удерживать в голове абстрактную модель и одновременно заботиться о том, что происходит на самом нижнем уровне реальности.
В 1959 году Гамильтон пришла в MIT, где работала в лаборатории Эдварда Лоренца и помогала разрабатывать программное обеспечение для прогнозирования погоды — в то самое время, когда Лоренц открывал «эффект бабочки» и закладывал основы теории хаоса. Это была ошеломительная интеллектуальная среда: рядом с ней происходило рождение новой науки, а она, двадцатитрёхлетняя выпускница из провинции, оказалась в самом её центре.
Программированию её никто не учил. Профессии «программист» в академическом смысле ещё не существовало — не было ни кафедр, ни учебников, ни устоявшихся методов. Гамильтон была самоучкой, и это обстоятельство впоследствии окажется не слабостью, а преимуществом: она подходила к задачам без шор чужих готовых решений.
В начале 1960-х она перешла в Линкольнскую лабораторию MIT, где участвовала в проекте SAGE — первой американской системе противовоздушной обороны. Там она написала программное обеспечение для идентификации вражеских самолётов. Боевая система, реальные данные, реальные последствия ошибки. Ответственность, которую большинство её современников-мужчин ещё только учились нести.
В 1965 году Гамильтон узнала о программе Apollo и захотела в ней участвовать — программа казалась ей «невероятно захватывающей». Она стала первым программистом, нанятым для проекта Apollo в MIT, и первой женщиной-программистом в этом проекте, а впоследствии возглавила Отдел программной инженерии.
Задача была беспрецедентной: написать бортовое программное обеспечение для командного и лунного модулей — программы, от которых буквально зависит жизнь людей в открытом космосе. Компьютер, которым им предстояло управлять, — Apollo Guidance Computer — весил около 32 килограммов и по нынешним меркам уступал простому калькулятору.
Однажды ночью её маленькая дочь Лорен пришла вместе с матерью в лабораторию и, играя в «астронавта», нажала на командном симуляторе не ту кнопку. Система рухнула. Гамильтон немедленно поняла: если это сделал ребёнок, это может сделать и взрослый человек в условиях стресса. Она предложила добавить в программу защиту от подобной ошибки. Ответ руководства был лаконичен: «астронавты обучены не делать ошибок».
Во время миссии Apollo 8 астронавт Джим Ловелл совершил ровно ту же ошибку, что и маленькая девочка. Гамильтон и её команда работали несколько часов, чтобы восстановить утерянные навигационные данные. После этого инцидента защитный код наконец разрешили добавить.
Июль 1969 года. Apollo 11 входит в историю.
«Всё шло по плану, пока не случилось нечто совершенно неожиданное — прямо в процессе посадки», — вспоминала Гамильтон в интервью 2009 года. «Внезапно нормальные рабочие последовательности были прерваны приоритетными дисплеями с сигналами 1201 и 1202, которые предлагали астронавтам решение: садиться или нет».
Тревога означала, что бортовой компьютер перегружен: радарный переключатель был случайно оставлен экипажем в неверном положении, что создавало избыточную нагрузку на процессор. «Быстро стало ясно, что программа не только сообщала всем о существовании проблемы с оборудованием, но и компенсировала её», — сказала она.
Именно для этого Гамильтон разработала систему приоритетных дисплеев: при перегрузке компьютер не зависал и не паниковал, а отбрасывал второстепенное и сосредотачивался на критически важном. «Каждый раз, когда процессор приближался к перегрузке, программа очищала всю очередь процессов и перезапускала функции — позволяя выполнять только задачи наивысшего приоритета вплоть до завершения посадки».
Через несколько минут «Орёл» коснулся лунной поверхности.
За кулисами лунной эпопеи скрывалась деталь, о которой мало кто знает. Программный код для Apollo Guidance Computer хранился не на привычных нам носителях. В Уолтеме неподалёку от Бостона швеи вручную превращали программное обеспечение в аппаратное: крошечные железные кольца нанизывались на медную проволоку, как жемчуг на нить. Нули и единицы программы «переводились» по принципу перфокарт. Эти чрезвычайно надёжные носители весом в несколько килограммов назывались «верёвками»; Гамильтон была их «матерью».
Параллельно она вела другую, более долгосрочную битву — за признание своей профессии. «Я начала использовать термин "программная инженерия", чтобы отличить его от аппаратного и других видов инженерии, но при этом рассматривать каждый вид инженерии как часть общего процесса системной инженерии», — объясняла она свой выбор слов. Коллеги поначалу посмеивались: программирование — инженерия? Не слишком ли громко?
Сегодня, когда инженеры-программисты представляют один из наиболее востребованных сегментов рынка труда, никто не смеётся над Маргарет Гамильтон.
Когда программа Apollo завершилась, Гамильтон не ушла в тень. В 1976 году она совместно с Сейдин Зельдин основала компанию Higher Order Software, чтобы развивать идеи предотвращения ошибок и отказоустойчивости, возникшие в ходе работы в MIT над Apollo. В 1986-м — основала Hamilton Technologies в Кембридже, штат Массачусетс, где продолжила разработку универсального системного языка программирования.
За свою карьеру она опубликовала более 130 статей, докладов и отчётов, связанных примерно с шестьюдесятью проектами и шестью крупными программами.
В 2003 году NASA присвоило ей награду Exceptional Space Act Award — крупнейшую премию в истории этой организации на тот момент. А 22 ноября 2016 года президент Барак Обама вручил Маргарет Гамильтон Президентскую медаль свободы — высшую гражданскую награду США. На церемонии Обама отметил, что «её пример воплощает американский дух первооткрывательства».
Показательно, что широкое общественное признание пришло к ней именно в 2016-м — спустя почти полвека после высадки на Луне. До 2016 года имя Гамильтон почти не упоминалось в литературе: в двух книгах по истории вычислительной техники и программы Apollo, написанных в 1996 и 2008 годах соответственно, её практически нет.
Отчасти всё изменила социальная сеть. В декабре 2015 года рекламная кампания IBM с хэштегом #HackAHairDryer — предлагавшая привлекать женщин в STEM-сферы через дизайн фена — вызвала волну возмущения в сети. В ответных твитах снова и снова всплывало имя Маргарет Гамильтон — женщины, которая доставляла людей на Луну и явно не думала о фенах. IBM сняла рекламу на следующий день, а одиннадцать месяцев спустя Гамильтон уже пожимала руку президенту Обаме.
Маргарет Гамильтон жива. Ей 88 лет. Она по-прежнему работает.
Маргарет Гамильтон - фотография из архивов сайта
| Родилась: | 17.08.1936 (89) |
| Место: | Пейоли (US) |