Умерла Маргарет Гамильтон, программистка, чьё ПО помогло Apollo высадиться на Луне
Маргарет Гамильтон, программистка, которая руководила созданием бортового ПО для лунной программы Apollo, умерла 30 сентября в США в возрасте 90 лет. Разработки её команды сыграли особенно важную роль во время посадки Apollo 11: компьютер лунного модуля оказался перегружен всего за несколько минут до прилунения, но продолжил выполнять самые важные задачи.
Напряжённый момент наступил 20 июля 1969 года, когда Eagle уже спускался к поверхности Луны. Бортовой компьютер начал выдавать предупреждения 1201 и 1202. Машине не хватало ресурсов для всех поступавших запросов, а астронавты Нил Армстронг и Базз Олдрин не знали, позволит ли ошибка продолжить посадку.
Спасло миссию устройство программы. Компьютер мог отбросить второстепенную работу и оставить в очереди то, без чего посадка становилась невозможной: управление двигателем, навигацию и обмен информацией с экипажем. При перегрузке система перезапускалась, возвращала критические программы к работе и не возобновляла лишние задачи, которые забивали очередь. Специалисты на Земле знали, как работает такой механизм, поэтому после сигналов тревоги разрешили экипажу продолжать спуск.
Гамильтон руководила командой, которая писала программное обеспечение для командного и лунного модулей Apollo. Инженеры заранее исходили из неприятной, но практичной мысли: в полёте может произойти ситуация, которой разработчики не предусмотрели буквально. Поэтому программа должна была сама расставлять приоритеты, переживать сбои и возвращать важные процессы к работе. Сегодня подобный подход относится к отказоустойчивости и защитному программированию, но в 1960-х разработчикам приходилось во многом прокладывать дорогу самим.
Один из самых показательных случаев произошёл ещё до высадки на Луну. Четырёхлетняя дочь Гамильтон играла с тренажёром командного модуля и во время условного полёта случайно запустила программу, предназначенную для предстартовой подготовки. Тренажёр перестал нормально работать. Гамильтон предложила защитить настоящую систему от такой команды, но идею сначала отвергли: считалось, что подготовленные астронавты не допустят подобной ошибки.
Через несколько лет почти то же самое случилось уже в космосе. Во время Apollo 8 Джим Ловелл по ошибке запустил предстартовую программу, из-за чего компьютер потерял навигационные данные. Команде Гамильтон пришлось искать способ восстановить информацию, а предложенную ранее защиту после инцидента добавили в программу.
Для Гамильтон подобные ошибки стали аргументом в пользу простого принципа: хорошее ПО должно учитывать не только правильные действия человека. Программистка последовательно отстаивала подход, при котором разработчики заранее думают о перегрузках, неверных командах и неожиданных состояниях системы, а не рассчитывают на идеальные условия.
Гамильтон также помогла закрепить само понятие программной инженерии. В 1960-х программам часто отводили второстепенную роль по сравнению с аппаратурой, хотя сложность кода для Apollo быстро росла. Гамильтон добивалась отношения к разработке ПО как к полноценной инженерной работе, где архитектура, проверка ошибок и надёжность требуют не меньшей дисциплины, чем создание самого компьютера.
Одним из символов её карьеры стала фотография, сделанная в 1969 году: Гамильтон стоит рядом с высокой стопкой распечатанного кода, написанного командами для бортовых компьютеров Apollo. После завершения лунной программы она основала две компании и продолжила разрабатывать методы создания программ, рассчитанных на ошибки и непредвиденные ситуации. В 2016 году Гамильтон получила Президентскую медаль Свободы, одну из высших гражданских наград США.