Наиль Байназаров

Бабушка программирования

Маргарет Хэмилтон считается прародительницей современного программирования, а благодаря написанному ею коду американцы полетели на Луну.


В начале 1960-х сама Маргарет Хэмилтон вряд ли могла бы представить, что она создаст современную концепцию программирования и по сути сделает возможным полет человека на Луну. В то время женщины вообще редко становились техническими специалистами.

24-летняя Маргарет Хэмилтон, бакалавр по математике, получила должность программиста в Массачусетском технологическом институте. По сути, для нее это был вынужденный шаг. Ей приходилось финансово поддерживать мужа, который еще учился в Гарвардской школе права. План был таков: сначала учится он, зарабатывает она, а потом настанет ее черед завершать образование.

Но в это же время была запущена американская космическая программа «Аполлон». И Хэмилтон осталась работать в лаборатории, чтобы впоследствии стать частью истории освоения космоса. Вместе с другими инженерами она совершила незаметный подвиг, изменив будущее цифровых технологий и всего человечества.

Биография Маргарет Хэмилтон ломала все стереотипы американского общества начала 1960-х. Работающая молодая мать, она радикально изменила представление о профессии программиста. Она бывала так занята, что вечерами и по выходным ей приходилось брать свою маленькую дочь на работу. Пока 4-летняя Лорен мирно спала на полу лаборатории, мама создавала программы, которые лягут в основу главного командного компьютера «Аполлона».

Хэмилтон с дочерью Лорен. Фото из личного архива Маргарет Хэмилтон.

«Бывало, люди спрашивали меня, как я могу так относиться к дочери, лишать ее нормального общения с матерью», — вспоминает Маргарет. Но ее зачаровывала эта работа, ее новизна. Ей нравился дух товарищества, совместные посиделки после работы в факультетском клубе МТИ, шутки, понятные только своим. Это был узкий закрытый кружок единомышленников. Как вспоминает Маргарет, она была «своим парнем» в этом кружке. В те времена (впрочем, как и сейчас) «парни» составляли подавляющее большинство в технологической и инженерной областях. Можно представить, насколько необычно было тогда увидеть в этой сугубо мужской среде хрупкую девушку. Да и сегодня мало кто из членов этого закрытого сообщества программистов догадывается, что один из отцов-основателей их профессии — не отец вовсе, а мать. Гендерное неравенство 1960-х, так точно изображенное в сериале «Безумцы», в какой-то мере сохраняется по сей день.


По теме: 10 женщин, навсегда изменивших мир технологий


Начало карьеры Маргарет Хэмилтон пришлось на то время, когда новая наука информатика была уже готова к первому большому прорыву — во многом благодаря программе «Аполлон», запущенной президентом Кеннеди в 1961 году. В то время в лаборатории приборостроения МТИ, где работала Хэмилтон, команда ученых создавала основы программирования: они писали код для первого в мире портативного компьютера. Постепенно Маргарет стала настоящим экспертом в системном программном обеспечении и предложила несколько важных решений. «Когда я только начинала работать в этой сфере, все это было для нас как Дикий Запад — мы были первооткрывателями неизведанных земель. Никто нас ничему не учил», — говорит Хэмилтон.

Это было за десять лет до основания компании Microsoft и примерно за 50 лет до того, как Марк Андриссен написал свой знаменитый текст о том, что программирование «становится главной профессией в мире». Но на заре американской космической программы «Аполлон» мало кто в мире вообще понимал, в чем состоит эта работа. В официальных документах, описывающих технические требования к миссии, даже не использовалось слово «программирование» или «программное обеспечение» (software), потому что и слова такого не было. Об этом в своей книге «Цифровой Аполлон» (Digital Apollo) вспоминает профессор аэронавтики МТИ Дэвид Минделл: «Работа программистов не была предусмотрена в плане подготовки миссии. Соответственно, на эту работу не выделялся и бюджет». Во всяком случае, так было сначала.

Маргарет Хэмилтон внутри макета командного модуля Apollo. Фото: MIT.

Однако по ходу работы над проектом «Аполлон» все яснее становилось решающее значение программного обеспечения для нормального выполнения миссии. В 1965 году Хэмилтон возглавила разработку программ для бортовых компьютеров «Аполлона». Гонка в космосе была в самом разгаре, и от результатов ее работы зависела, ни много ни мало, судьба американской космической программы. Разумеется, на Хэмилтон и ее сотрудников давили сверху, требуя ускорить работу. Однажды ей пришлось срочно вернуться на работу после корпоративной вечеринки и переделывать код — она вдруг вспомнила, что допустила в нем ошибку. «Тогда я часто представляла себе, с какими заголовками выйдут газеты, если что-то пойдет не так. Все будут винить в неудаче меня», — вспоминает Хэмилтон.


По теме: Чем отечественная фирма «Поток Интер» покорила NASA


К середине 1968 года над разработкой программного обеспечения миссии «Аполлон» работали уже более 400 сотрудников. Именно прорывное решение проблемы ПО должно было обеспечить США победу в битве с СССР за Луну. Как мы знаем из истории, разработки американских ученых не только помогли доставить первого человека на Луну, но и изменили всю нашу жизнь.

Работа Маргарет Хэмилтон и ее коллег по программированию космического корабля «Аполлон» легла в основу нынешней IT-индустрии с оборотом в $400 миллиардов.

Но работа программиста в 60-х в корне отличалась от современной. Ежедневно Хэмилтон пробивала отверстия в тысячах перфокарт, которые затем сутками обрабатывались в гигантской ЭВМ Honeywell — эта машина моделировала прилунение посадочного модуля «Аполлона». «Сначала все нужно было отработать на земле», — вспоминает Хэмилтон. Готовый код каждый день отправлялся в лабораторию компании Raytheon, где группа женщин-сотрудниц, которых между собой называли «старушками», вручную обматывали магнитные катушки медной проволокой (проволока, пропущенная через кольцо, — 1, проволока, обмотанная вокруг кольца, — 0). Никаких жестких дисков тогда и в помине не было. Вся память компьютера была вот таким образом буквально «связана» вручную. Но этот способ записи информации имел и свои преимущества — он практически не был подвержен случайному удалению.

http://www.wired.com/wp-content/uploads/2015/09/raytheon-lab-1024x747.jpg

Сотрудница компании Raytheon (крупная компания, работающая в сфере ВПК), наматывающая медную проволоку на магнитные катушки. Фото: Jack Poundstone/Raytheon.

Корабли «Аполлон» были оборудованы двумя практически одинаковыми бортовыми компьютерами: один был установлен на спускаемом лунном модуле «Орел» (Eagle), другой — на основном модуле, который доставлял экипаж с Земли до лунной орбиты и обратно. Это были первые в истории портативные компьютеры. Вес каждого составлял почти 32 килограмма. Созданные инженерами МТИ Хэлом Лэнингом и Диком Баттоном, это были первые компьютеры, в которых использовались не транзисторы, а интегральные схемы. Дэвид Минделл в своей книге пишет, что по сути это была первая в мире бортовая компьютерная навигационная система, с помощью которой пилот мог управлять летательным аппаратом — предшественник нынешних навигационных систем, установленных на всех самолетах.


По теме: Первый в истории ПК продадут на аукционе


В постоянной памяти системы — в намотанных вручную медных катушках — могло храниться до 12 тысяч «слов». Во временной, энергозависимой памяти, хранилось до 1024 машинных слов. «Впервые в истории компьютер был установлен на борту летательного аппарата, и на компьютер была возложена значительная часть работы по обеспечению полета, — говорит Дон Айлс, один из разработчиков ПО лунного модуля в МТИ. — Мы первыми доказали, что это возможно. Причем мы сделали это, имея мизерный по нынешним меркам объем памяти и медленную вычислительную скорость».

Произведенные в Raytheon магнитные катушки с медным оплетением. Фото: Jack Poundstone/Raytheon.

Но без этого Нил Армстронг просто не ступил бы на поверхность Луны. А без кода, написанного Маргарет Хэмилтон, Доном Айлсом и сотнями других инженеров МТИ, компьютер был бы бесполезной грудой железа.

Значимость этой работы стала окончательно ясна 20 июля 1969 года, за несколько минут до того момента, когда спускаемый модуль корабля «Аполлон-11» коснулся поверхности Луны в районе Моря Спокойствия. Из-за «ошибки в программной документации», как позже вспоминал инженер Дон Айлс, бортовой компьютер «Аполлона» в самый ответственный момент начал выдавать сообщения об ошибке. И вот где пригодились решения, предложенные Маргарет Хэмилтон. Предупреждения об ошибке начали появляться из-за того, что компьютер был перегружен, выполняя множество ненужных вычислений, вместо того чтобы управлять модулем в процессе прилунения. Тем временем на Земле, в центре управления полетом в Хьюстоне, создатели компьютерного кода «Аполлона» надеялись на уникальную асинхронную систему обработки данных, которая в критический момент теоретически должна была переключиться на задачу первостепенной важности — управление модулем «Орел».

Так и произошло, вспоминает Хэмилтон. В последний момент компьютер проигнорировал сообщения об ошибке и успешно посадил модуль на поверхность. Хотя все могло закончиться гораздо хуже.

«Старушки» за работой. Фото: Jack Poundstone/Raytheon.

«Этого никогда не произойдет»

Маленькая Лорен, оставаясь у мамы в институтской лаборатории, любила играть с симулятором командного модуля — блоком, состоящим из дисплея и клавиатуры, который ученые между собой называли «дискей» (от английского display-and-keyboard unit, сокращенно dis-key). Однажды во время игры на экране появилось сообщение об ошибке. Лорен случайно запустила программу предполетной подготовки (кодовое название программы — P01) во время симуляции самого полета, тем самым поставив систему в тупик. То, что такая же ситуация возникнет во время реального полета, было крайне маловероятно. Тем не менее, Маргарет решила перестраховаться и добавить код, который бы предотвратил повторение ошибки. В НАСА беспокойство Хэмилтон не разделяли. «Нам постоянно говорили, что астронавты не совершают ошибок, — говорит Маргарет. — Их учат безупречно выполнять программу полета».

Тогда Хэмилтон просто добавила соответствующее предупреждение в инструкцию по работе с бортовым компьютером для астронавтов: «Не включать P01 во время полета!» Она также хотела добавить в систему «Аполлона» проверочный код ошибки, чтобы исключить даже малейшую вероятность сбоя системы. Но ее начальникам такая мера показалась излишней, и ее отговорили. «Тогда мне говорили, что этого никогда не произойдет, что система абсолютно надежна», — вспоминает Маргарет.

Однако это произошло. Незадолго до рождества 1968 года, на пятый день исторического полета «Аполлона-8» вокруг лунной орбиты астронавт Джим Ловелл случайно запустил программу P01. Звонок из Хьюстона застал Маргарет в зале совещаний на втором этаже лаборатории приборостроения МТИ. Оказалось, что из-за запуска программы P01 были стерты все навигационные данные, собранные за время полета. Ситуация была критической. Без этих данных бортовой компьютер не мог вычислить обратную дорогу и доставить астронавтов на Землю. Хэмилтон и другим программистам нужно было срочно придумать решение.

После девяти часов кропотливого — символ за символом — изучения программы, в распечатанном виде представлявшей из себя фолиант толщиной 20 сантиметров, они придумали план спасения. Инженерам ЦУПа в Хьюстоне оставалось загрузить новые навигационные данные, полученные программистами, и направить космический корабль к Земле. Так, благодаря Маргарет Хэмилтон — и отчасти Лорен — астронавты смогли благополучно завершить миссию.

Хэмилтон рядом со стопкой распечатанного исходного кода Главного командного компьютера миссии «Аполлон». Фото: NASA.

Но заслуга Хэмилтон и ее команды — не только в обеспечении первого полета человека на Луну. Их работа легла в основу настоящей цифровой революции, плодами которой мы пользуемся по сей день. Разработка программного обеспечения, принципы которой заложила Маргарет Хэмилтон, сегодня проявляется практически во всех аспектах повседневной жизни.

К началу 1970-х Хэмилтон оставила работу в НАСА и космической программе «Аполлон». Позже она успешно основала несколько компаний по разработке ПО. Офис ее нынешней компании — Hamilton Technologies — находится недалеко от главного корпуса родного для нее Массачусетского технологического института. Здесь начиналась ее карьера, и здесь же ее последователи по-прежнему помогают прокладывать дорогу к звездам.

Источник.


comments powered by Disqus

Подпишитесь на рассылку RUSBASE

Мы будем вам писать только тогда, когда это действительно очень важно