image

20 июля 1969 года, в 20:17:39 по Гринвичу, лунный модуль миссии «Аполлон-11» совершил первую в истории человечества пилотируемую посадку на другое небесное тело. Событие огромной значимости, как в плане науки, так и в плане идеологическом, стало возможным благодаря самоотверженной работе сотен людей — техников, контролёров, специалистов по связи. И, конечно, программистов. Знаете поговорку: «За каждым великим мужчиной стоит женщина»? Так вот, в случае Нила Армстронга, Базза Олдрина и Майкла Коллинза, это на 100% правда, хотя и женщина была одна на троих. И имя ей — Маргарет Гамильтон, госпожа программного кода НАСА.

Каждая история имеет своё начало, и эта началась 17 августа 1936 года в городе Пейоли, штат Индиана, когда в семье Кеннета и Рут Хэфилд родилась девочка, которую назвали Маргарет. Известно, что средний житель Индианы 40% своей жизни посвящает выращиванию кукурузы и 10% идут на незначительные мелочи, вроде сна, еды и пряток от ураганов (остальные 50% времени в Индиане смотрят гонки NASCAR). Ничего из вышеперечисленного Маргарет не нравилось, поэтому девочка решила попытать счастья где-то ещё. Первая попытка преодолеть зов Великого Кукурузо не увенчалась успехом — два года поизучав математику в Мичигане, Маргарет вернулась домой, получив степень бакалавра по математике в колледже Эрлхэм (видимо, в Ричмонде звуки джаза были громче, чем визг покрышек на NASCAR'овских стадионах). Там она и встретила молодого человека по имени Джеймс Гамильтон, которому повезло стать её мужем. Тут заканчивается история Маргарет Хэфилд и начинается история Маргарет Гамильтон.

Со второй попытки Маргарет удалось вырваться за пределы Индианы (хотя и не сильно далеко), и она начинает изучать абстрактную математику в бостонском университете Брандейса. Однако вскоре её муж поступил в Гарвард, а потом у пары ещё и родилась дочь, так что миссис Гамильтон пришлось искать какие-то доходы, чтобы обеспечивать молодую семью. Некоторое время поработав учительницей, она смогла устроиться не абы куда, а аж в знаменитый MIT. Кто же знал, что эта, как ей тогда казалось, временная работа, проложит путь на Луну?

image
И даже в Лего! Официальный набор, между прочим.

В MIT она работала в лаборатории профессора Эдварда Лоренца (создателя теории хаоса) и заключалась её работа в разработке системы, предсказывавшей погоду. Собственно, именно в той лаборатории она впервые увидела компьютер. С одной стороны, с компьютерами она дела никогда не имела. С другой стороны, компьютер того времени работал по принципу алгоритма, а с этим Маргарет, как математик со стажем, была хорошо знакома. За дело она принялась с энтузиазмом, и провела на этой должности целых два года (с 1961 по 1963), и результатом её работы была программа, предназначенная для отслеживания и предсказывания погодных явлений (собственно, теория хаоса вживую), также известная, как проект «Вихрь» (Project Whirlwind). Однако несколько позже на перспективную программу наложило свою цепкую лапу в погонах министерство обороны США, и переделало её в программу SAGE (Semi-Automatic Ground Environment), предназначенную для выведения большого объёма данных со множества радаров и выведения их на экран\экраны в командном центре для контроля большой зоны воздушного пространства (проще говоря, программа, чтобы начальники с самыми большими звёздами сразу видели, куда летят весёлые бомбардировщики с серпами и молотами на обшивке). Ну, и ведущего программиста они тоже забрали, потому что никто лучше автора кода не разбирается в том, как он работает. После этого ей пришлось поработать над некой программой по отслеживанию спутников для ВВС. Судя по всему, именно к этому периоду её жизни относится эта цитата:

В этой компании принято давать новичкам программу, в которой никто не может разобраться и тем более запустить. Когда я была стажером, мне тоже дали такую задачку. Это была весьма заковыристая программа, и более того, автор кода находил удовольствие в написании комментариев к коду исключительно на греческом и латыни. Так, мне дали эту задачу, и, собственно, я заставила ее работать. Она даже результат выводила на печать на греческом и латыни. Я была первой, кто смог ее запустить.

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

С этим связан интересный эпизод — во время работы над «Аполлоном-8» маленькая Лорен случайно запустила предстартовую программу в то время, когда аппарат уже был «в полёте», в результате чего программа засбоила и стёрла все навигационные данные. Обнаруженная ошибка была оперативно проигнорирована вышестоящим начальством, и, в результате, именно эту ошибку допустил экипаж уже во время реального полёта.

image
Маргарет и её дочь Лорен. На фото девочке явно больше четырёх лет.

Летом 1968 года Маргарет наконец-то получила возможность поработать над настоящим шедевром — бортовым управляющим компьютером для «Аполлона-11». Борткомпьютер был настоящим технологическим чудом — при достаточно скромных размерах (61 см × 32 см × 17 см) он был способен выполнять достаточно большое количество операций — в теории. Эти операции ещё предстояло облечь в форму кода, и именно эта задача легла на плечи Маргарет. Поскольку она уже успела зарекомендовать себя в качестве достаточно опытного программиста (в том числе и с опытом в сфере программ для космических судов), то её сразу же поставили главой отдела разработки программного обеспечения. А было там два бортовых компьютера – один на командном модуле «Колумбия», и другой на лунном «Орле». В задачу отдела входила разработка ПО, которое должно было работать на каждом модуле само по себе, а также их общего ПО. Как выяснилось позднее, ПО оказалось одним из самых важных компонентов всей лунной программы, так что изначально небольшой отдел разросся до 100 человек. По словам Маргарет, начальство (с большими звёздами и без них) в её компетенции не сомневалось, а вот у некоторых мужчин из её команды возникали с этим определённые проблемы, хотя и до откровенного неповиновения дело ни разу не доходило. К тому же, все они работали над одним общим делом, и было не до распрей.

image
Борткомпьютер «Аполлона».

Сразу сделаем оговорку: Маргарет Гамильтон не изобрела термин «software engineering». Это сделал профессор прикладной математики и лингвистики университета Гарварда и президент ассоциации вычислительной техники Энтони Оттингер (Anthony A. Oettinger) в своём «письме к АВЧ» (letter to the ACM membership, журнал «Communications of the ACM», выпуск за 1966 год, том 9, статья (number) 8, страница 546). А именно:

Мы должны признать себя […] представителями инженерной профессии, будь то аппаратная или программная инженерия, профессии без искусственных и необязательных разграничений, как, например, между «теоретическим» и «практическим» применением.

We must recognize ourselves […] as members of an engineering profession, be it hardware engineering or software engineering, a profession without artificial and irrelevant boundaries like that between ‘scientific’ and ‘business’ applications.

А вот что она изобрела — так это асинхронные процессы, когда процессы с большим приоритетом могут по-хамски прерывать низкоприоритетные. Отчасти это было связано с ранее упомянутым инцидентом с «Аполлоном-8», так что Маргарет предпочла добавить эдакую защиту «от дурака». И, естественно, она пригодилась.

image
Маргарет на фоне якобы программного кода. Фото, само собой, постановочное, и в этой стопке находилась буквально вся бумага, которая была в офисе миссис Гамильтон. Но доля правды в этом есть — что-то среди этой горы макулатуры действительно было кодом для «Аполлона».

Что произошло: 16 июля 1969 года с мыса Канаверал стартовала ракета-носитель с модулями миссии «Аполлон-11» и тремя членами экипажа: Нилом Армстронгом, Баззом Олдрином и Майклом Коллинзом (что самое интересное, Армстронг жил в соседнем с Индианой штате — Огайо — и, видимо, тоже хотел оказаться подальше от Наскара и кукурузы). Однако в процессе полёта возникла неисправность — незадолго до посадки на приоритетном дисплее компьютера появились предупреждения о чрезвычайной ситуации. Как выяснилось позднее, переключатель радара (который нужен был уже для обратного полёта) оказался в неправильном положении. Это привело к запросу на выполнение компьютером большего числа операций, чем он был способен обработать. Тут-то и сработала защита. В данном конкретном случае реакцией ПО было приостановить работу низкоприоритетных задач и перезапустить наиболее важные. Итог всем известен — полёт продолжился в штатном режиме, Аполлон приземлился, «Маленький шаг для одного человека» и далее по тексту. И всё это стало возможно благодаря усилиям и таланту одного человека.

image
Вот так выглядел пользовательский интерфейс борткомпьютера. Юзерфрендли!

Сегодня Маргарет Гамильтон 86 лет. Она возглавляет компанию Hamilton Technologies. Она опубликовала более 130 научных работ, трудов и отчетов по 60 проектам и шести крупным программам, в которых она принимала участие. Заслуги этой замечательной женщины в освоении космоса неоспоримы, хотя она и находится всегда в тени астронавтов и конструкторов космических аппаратов.

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


  1. Japet
    00.00.0000 00:00
    +2

    Заметка для себя: выяснить как Маргарет Гамильтон и Кэтрин Джонсон работали в NASA над одними и теми же миссиями, но в вики нет кросс-ссылок в статьях о них


    1. victor_1212
      00.00.0000 00:00
      +2

      Кэтрин Джонсон работала в Langley NASA практически с самого начала, занималась баллистикой в основном, по возрасту типа Маргарет Гамильтон в матери годилась, Маргарет Гамильтон из MIT, т.е. непосредственно разработчик того что летало, вышла из sage, типа ей дали большую программу на ассемблере, посмотреть что будет, никто особенно не ожидал, что сумеет в чужой программе разобраться, но она смогла и постепенно себя зарекомендовала, когда начали бортовые компьютеры делать многие из ее команды перешли сначала на polaris, позже apollo, где она стала одним из главных разработчиков embedded systems, позже типа начальником всего подразделения, все это в MIT Instrumentation Lab, она конечно знала кто такая Кэтрин Джонсон, чтобы работали вместе ссылок не видел, вики и пр. не особенно советую доверять


  1. Wassup
    00.00.0000 00:00
    +16

    "Каждая история имеет своё начало, и эта началась 17 августа 1936 года в городе Пейоли, штат Индиана, когда в семье Кеннета и Рут Хэфилд родилась девочка, которую назвали Маргарет."

    "Сегодня Маргарет Гамильтон 81 год."

    Вы написали эту статью в 2017 году и опубликовали в 2023м без корректировки текста?


    1. Pasha_Tehnik
      00.00.0000 00:00

      Назад в будущее. :)


    1. Shyhartskoi
      00.00.0000 00:00
      +1

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


    1. PereslavlFoto
      00.00.0000 00:00
      +2

      Судя по всему, указанный вами абзац был где-то написан в 2017 году и недавно скопирован в статью. Но сейчас его уже поправили.

      Статья ведь сведена из обработанных фрагментов других статей, подобно тому, как работает GitHub Copilot.


    1. victor_1212
      00.00.0000 00:00
      +3

      > результатом её работы была программа, предназначенная для отслеживания и предсказывания погодных явлений (собственно, теория хаоса вживую), также известная, как проект «Вихрь» (Project Whirlwind).

      Whirlwind заработал в 1951, Маргарет Гамильтон было 15 и она училась в средней школе, вероятно источники подвели, получилась каша, типа может никто не заметит


  1. Rumidu
    00.00.0000 00:00

    В Индианаполисе NasCar? Там вроде все по Indy500 и IndyCar(сейчас) угорают.


  1. astenix
    00.00.0000 00:00
    +3

    Там она и встретила молодого человека по имени Джеймс Гамильтон,
    которому повезло стать её мужем. Тут заканчивается история Маргарет
    Хэфилд и начинается история Маргарет Гамильтон.

    А не факт, что Джеймсу повезло, ведь с этого момента он исчезает с карты истории. Вышел из дома, ушёл в Гарвард и что? Где он? Человек пропал, алло, ребят! Кто-то уже синхронно изобретает асинхронные процессы, а про Джеймса никто ничего не вспоминает!


    1. Rumidu
      00.00.0000 00:00
      +2

      Где он? Человек пропал, алло, ребят! Кто-то уже синхронно изобретает асинхронные процессы, а про Джеймса никто ничего не вспоминает!

      Никуда он не пропадал. Развёлся с Маргаритой в 1967 году. Был вполне успешным адвокатом. Защищал, например, право ККК на демонстрации. Умер в 2014 г .

      https://www.bostonglobe.com/metro/2014/08/30/james-cox-hamilton-mentor-young-lawyers-also-handled-aclu-cases/CGoF5qLYsNnUEap7BuTrGJ/story.html


      1. vassabi
        00.00.0000 00:00

        хм, ну, тогда становится понятнее - почему ей приходилось брать дочь на работу.


    1. vassabi
      00.00.0000 00:00
      +1

      просто он сидел дома и варил борщи ;)

      PS: девушек программисток действительно мало, так что чем больше про них пишут - тем лучше! Про нас мужиков-программистов - и так уже столько разных историй есть :) (и без всяких сверхусилий активистов от журналистики)


  1. ukhanov
    00.00.0000 00:00
    -1

    Clear, Enter, Proceed, Reset - и все кнопки в одной кучке. Аж мурашки...


    1. anton_reut
      00.00.0000 00:00

      Кстати есть онлайн симулятор этого компьютера, чем то напоминает игру "Посадка на Луну" на инженерном советском калькуляторе: https://svtsim.com/moonjs/agc.html