Fly me to the moon. Маргарет Гамильтон

Fly me to the moon. Маргарет Гамильтон

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
Вот так выглядел пользовательский интерфейс борткомпьютера. Юзерфрендли!

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


 

Источник

Читайте также