Какой язык программирования использовался в миссии "Аполлон" для бортового управляющего компьютера

Обновлено: 21.11.2024

Журнал полетов Аполлона

Дисплей и клавиатура (DSKY), установленные на главной консоли дисплея космического корабля "Аполлон-13" Odyssey.

Система DSKY Odyssey установлена ​​в нижнем отсеке оборудования рядом с панелью управления оптикой космического корабля.

Введение

Одной из наиболее важных систем космического корабля "Аполлон" является система наведения и навигации (G&N), которая сыграла ведущую роль в высадке первых людей на Луну в точном месте и помогла в трех очень успешных перелетах. полеты на космическую станцию ​​Skylab. Система также будет использоваться в июле 1975 года в рамках совместной международной миссии в рамках испытательного проекта "Союз-Аполлон" (ASTP) между Соединенными Штатами и Советским Союзом.

Система G&N является полуавтоматической, управляется и управляется экипажем из трех человек. Он выполняет основные функции инерциального наведения, ориентации и оптической навигации и механически или электрически взаимосвязан с системами стабилизации и управления, электроснабжения, контроля окружающей среды, телекоммуникаций и контрольно-измерительных приборов. Имеется три основных подсистемы: инерциальная наведения, компьютерная и оптическая. Подсистема инерциального наведения мгновенно определяет изменения ускорения и ориентации и подает сигналы управления ориентацией и тяги в систему стабилизации и управления. Наблюдения небесных тел и ориентиров на Луне и Земле с помощью оптической навигационной подсистемы используются компьютерной подсистемой для определения положения и скорости космического корабля, а также для правильного выравнивания стабильной платформы.

Оборудование

Компьютер наведения представляет собой цифровую машину общего назначения с базовой длиной слова при параллельных операциях 15 бит с добавленным битом для проверки на четность. Код инструкции включает подпрограммы для двойных и тройных операций. Время цикла памяти составляет 11,7 мкс с временем одного добавления 23,4 мкс. «Стержень с сердечником», используемый для фиксированной памяти, имеет емкость около 36 864 слов со стираемой памятью (плоскости с ферритовым сердечником) на 2048 слов. Процессор состоит из интегральных схем (ИС). Общий вес компьютера 29,5 кг. Постоянная память содержит программы, подпрограммы, константы, координаты звезд и ориентиров и другие соответствующие данные. Стираемая память действует как промежуточное хранилище для результатов вычислений, вспомогательной программной информации и переменных данных, поступающих от G&N и других систем космического корабля.

Астронавт и компьютер общаются на языке чисел через блок дисплея и клавиатуры (произносится как «диски» и сокращенно DSKY), который имеет 21-значный дисплей и 19-кнопочную клавиатуру. Двузначные числа представляют программы, глаголы и существительные. Пятизначные числа представляют такие данные, как положение, скорость и т. д. В командном модуле «Аполлон» есть один компьютер и два DSKY. Компьютер и один DSKY расположены в нижнем отсеке для оборудования, а один DSKY — на главной консоли. В лунном модуле «Аполлон» есть одна основная панель DSKY, основная панель G&N, с дополнительной панелью управления прерыванием в положении LMP. Система G&N командного модуля Аполлона и система G&N лунного модуля Аполлона почти идентичны, за исключением того, что в системе лунного модуля используется другой оптический телескоп и нет секстанта.

Компьютер функционально разделен на семь блоков: таймер, генератор последовательности, центральный процессор, память, управление приоритетами, ввод-вывод и блок питания. Таймер генерирует импульсы синхронизации, чтобы обеспечить логический поток данных из одной области компьютера в другую. Кроме того, он генерирует временные сигналы, используемые в схемах сигнализации и других областях космического корабля для управления и синхронизации. Генератор последовательности направляет выполнение машинных инструкций, генерируя управляющие импульсы, которые упорядочивают данные по всему компьютеру. Путем объединения порядкового кода командного слова с синхронизирующими импульсами от таймера формируются управляющие импульсы. Генератор последовательности содержит процессор кода заказа, генератор команд и генератор управляющих импульсов. Генератор последовательности выполняет инструкции, хранящиеся в памяти, вырабатывая управляющие импульсы, которые регулируют поток данных между различными областями компьютера и элементами центрального процессора, заставляя данные обрабатываться в соответствии со спецификацией каждой машинной инструкции.

Центральный процессор выполняет все арифметические операции, требуемые от компьютера, буферизует все данные, поступающие из памяти и поступающие в память, проверяет правильность четности всех слов, поступающих из памяти, и генерирует бит четности для всех слов, записанных в память. Он состоит из триггерных регистров, логики записи, очистки и управления, усилителей записи, регистра буфера памяти, регистра адреса памяти и декодера, а также логики четности. В первую очередь центральный процессор выполняет операции, указанные основными инструкциями программы, хранящейся в памяти. Связь внутри центрального процессора осуществляется через усилители записи. Данные передаются из памяти в триггерные регистры (или наоборот), между отдельными триггерными регистрами или в центральный процессор из внешних источников. Во всех случаях данные помещаются в строки «записи» и направляются в определенный регистр или в другую функциональную область под управлением логики записи, очистки и чтения. Логическая часть принимает управляющие импульсы от генератора последовательности и формирует сигналы для считывания содержимого регистра в строки записи и записи этого содержимого в другой регистр центрального процессора или в другую функциональную область компьютера. Конкретное место в памяти определяется содержимым регистра адреса памяти. Адрес подается из строк «записи» в этот регистр, вывод которого декодируется логикой декодера адреса. Затем данные передаются из памяти в буферный регистр памяти.

Регистр буфера памяти буферизует всю информацию, считываемую или записываемую в память. Триггерные регистры используются для выполнения манипуляций с данными и арифметических операций. Каждый регистр имеет длину 16 бит (одно компьютерное слово). Импульсы управления, связанные с каждым регистром, диктуют потоки данных в каждый регистр и из него. Эти управляющие импульсы генерируются логикой управления записью, очисткой и чтением. Внешние входы через усилители «записи» включают в себя содержимое как фиксированных, так и стираемых регистров банка памяти, все адреса прерываний от управления приоритетом, управляющие импульсы, связанные с конкретными арифметическими операциями, и начальный адрес для начального условия запуска. Данные из входных и выходных каналов помещаются в линии «записи» и направляются в определенные пункты назначения либо внутри центрального процессора, либо за его пределами.

Память обеспечивает хранилище для компьютера и делится на постоянную память и стираемую память. Фиксированная память представляет собой веревку с сердечником высокой плотности; крошечные железно-никелевые сердечники, сплетенные вместе с тысячами медных проводов и заключенные в пластик. Каждое ядро ​​функционирует как преобразователь, и хранение не зависит от намагничивания, что дает ему преимущества неразрушимости, постоянства данных и хранения больших объемов данных в небольшом объеме. Однако этот метод требует, чтобы программы для классов различных миссий «Аполлон» были разработаны и проверены до того, как веревка будет сплетена, потому что программа определяет последовательность плетения или прокладки проводов. В стираемой памяти в качестве запоминающих устройств используются плоскости или ферритовые (железные) сердечники. Сердечник представляет собой магнитное запоминающее устройство, имеющее два направления за счет пропускания достаточного тока через провод, пронизывающий сердечник. Направление тока определяет направление намагниченности. Сердечник сохраняет эту намагниченность до тех пор, пока противоположный ток не переключит сердечник в противоположном направлении. Провода, по которым ток проходит через одну и ту же жилу, алгебраически аддитивны. Сенсорные провода, проходящие через переключаемый сердечник, будут нести наведенный импульс.

Управление приоритетами устанавливает приоритет обработки операций, возникающих в результате условий, возникающих как внутри, так и снаружи, которые должны выполняться компьютером. Управление приоритетом состоит из управления приоритетом счетчика и управления приоритетом прерывания. Управление приоритетом счетчиков инициирует действия по обновлению счетчиков в стираемой памяти. Управление приоритетом прерывания передает управление компьютером одной из множества подпрограмм прерывания, хранящихся в постоянной памяти. Секция ввода-вывода направляет и обрабатывает сигналы между компьютером и другими областями космического корабля. Компьютер имеет ряд входов, помимо счетчика и входов программного прерывания. Это входные данные от оборудования космического корабля или действия космонавта, которые позволяют компьютеру знать об условиях, существующих в его «окружающей среде», таких как изменение скорости или изменения угла. Выходами компьютера являются данные, контрольные или индикации состояния. Некоторыми из них можно управлять с помощью компьютерной программы, в то время как другие присутствуют как функция компьютерной схемы.

Секция питания обеспечивает уровни напряжения, необходимые для работы компьютера, и обеспечивается двумя источниками питания с импульсными регуляторами, источником питания +4 В и +14 В, питаемыми от силовых установок на топливных элементах в подсистема электропитания.

Программное обеспечение

Большая часть усилий Аполлона была направлена ​​на разработку компьютерных программ управления полетом для каждой миссии. Блоки памяти с фиксированным сердечником в компьютере состоят из крошечных сердечников из никеля и железа, сплетенных вместе медными проводами и заключенных в пластик. Программы для каждой миссии определяют последовательность проводки основного каната, и, следовательно, программы для отдельных миссий должны быть написаны и безошибочно проверены, прежде чем можно будет изготовить летные единицы. Программы Аполлона, такие как COLOSSUS или LUMINARY 1-D, были собраны в шесть модулей фиксированной памяти. В общем, все шесть модулей должны были быть «подключены», иначе компьютер не работал бы правильно. В более ранних испытательных полетах, например, «Аполлон-4», требовались не все шесть модулей, но должны были быть включены фиктивные модули, чтобы составить набор из шести. Разработка и проверка программы «Аполлон» для конкретной миссии занимает около года. Персонал Центра пилотируемых космических аппаратов НАСА выдает описание функций, требуемых от системы G&N, в приборную лабораторию Массачусетского технологического института (MIT). Работая с персоналом MSC, Лаборатории приборостроения Массачусетского технологического института сначала разрабатывают план эксплуатации системы управления (GSOP), обычно документ толщиной от 7 до 10 см! В нем подробно и подробно описывается, как система G&N будет выполнять свои функции при всех возможных условиях. Затем GSOP используется для разработки программы миссии, последовательности закодированных инструкций, а также библиотеки необходимой базовой информации, такой как звездные карты и математические константы. Основными инструментами, используемыми при создании программы миссии, являются мощные научные компьютеры общего назначения. Столь же важным, как и создание программ, является их проверка, чтобы гарантировать, что они будут выполнять поставленные задачи в соответствии с предписаниями. Эта проверка выполняется на двух компьютерах Honeywell 1800, двух IBM 360/75 и двух компьютерах общего назначения SDS 9300. Более поздние программы дополнительно проверяются с использованием аналогово-цифровых гибридных компьютерных технологий, симуляторов командных модулей, симуляторов лунных модулей и реальных бортовых компьютеров. Когда программа полета создана и проверена, компьютеры общего назначения используются для создания магнитных лент с «главными командами плетения», которые пересылаются в компанию Raytheon для использования в работе машин, которые плетут память основных канатов.

Несмотря на то, что все говорят о мощности современных устройств, они далеко не так эффективны, как знаменитая ранняя система НАСА.

Маргарет Гамильтон руководила командой из 350 человек, разработавших программное обеспечение для миссии "Аполлон-11". ( АП )

Примечание редактора. Эта статья является частью серии статей, посвященных миссии "Аполлон-11" 50 лет спустя.

Без компьютеров на борту космического корабля "Аполлон" не было бы ни высадки на Луну, ни триумфального первого шага, ни высшей точки для космических полетов человека. Пилот никогда не смог бы добраться до Луны, как если бы космический корабль был просто более мощным самолетом. Расчеты, необходимые для регулировки в полете, и сложность управления тягой превышали человеческие возможности.

Управляющий компьютер Apollo в обоих вариантах — один на борту основного космического корабля, а другой — на лунном модуле — был триумфом инженерной мысли. Компьютеры были размером с комнату и заполнены электронными лампами, и если компьютер «Аполлон» весом 70 фунтов еще не был совсем миниатюрным, он положил начало «переходу между людьми, хвастающимися тем, насколько велики их компьютеры… и хвастающимися тем, насколько малы их компьютеры». компьютеры», — пошутил однажды на лекции Дэвид Минделл, историк аэрокосмической отрасли Массачусетского технологического института.

Тенденции, предсказанные этим компьютером, развивались в геометрической прогрессии на протяжении десятилетий: от больших к малым, от электронных ламп к кремнию, от аппаратного к программному обеспечению. Теперь, если вы сравните вычислительную мощность, которую НАСА использовало с любым обычным устройством, от часов до поздравительной открытки и микроволновой печи, это вызывает технологическое головокружение. Митио Каку, физик и популярный писатель, сказал об этом так: "Сегодня ваш мобильный телефон обладает большей вычислительной мощностью, чем весь НАСА в 1969 году, когда оно отправило двух астронавтов на Луну".

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

Чтобы понять, насколько важной была система "Аполлон" и почему ее крошечная необработанная вычислительная мощность не имеет значения, достаточно послушать опытного программиста и волонтера-историка НАСА Фрэнка О'Брайена, который всю свою жизнь с любовью описывал детали. функции компьютера управления Apollo. Отец О’Брайена был пилотом, поэтому Фрэнк стал военным парнем. Он интересовался компьютерами с раннего возраста, и когда один из старых друзей его отца поднялся по служебной лестнице в НАСА, он завладел техническими руководствами по работе с компьютером.

"В 13 лет я получил на Рождество коробку шириной около двух футов и весом в миллион фунтов – рассказал мне О'Брайен. – «Я открываю его, и там есть все технические руководства по Аполлону. У вас было множество детей, которые смотрели Playboy; Я читал о навигационных компьютерах».

С тех пор он провел бессчетное количество часов, изучая, как работают эти машины. Еще будучи подростком, он мог летать на симуляторе NASA «Аполлон». Повзрослев, получив степень в области информатики и проработав долгое время корпоративным программистом, он написал книгу Компьютер управления Apollo, оду машине.

Компьютер управления Apollo в командном модуле выполнял две основные функции. Во-первых, он рассчитал необходимый курс к Луне, откалиброванный по астрономическим измерениям, которые астронавты сделали в полете, с помощью секстанта, мало чем отличающегося от того, что используется океанскими навигаторами. Они выстраивали Луну, Землю или Солнце в одном прицеле и фиксировали местоположение звезды в другом. Компьютер точно измерит эти углы и пересчитает свое положение. Во-вторых, он контролировал многие физические компоненты космического корабля. AGC мог связываться со 150 различными устройствами внутри космического корабля — чрезвычайно сложная задача. «У него десятки двигателей, всевозможные интерфейсы, платформа наведения и секстант», — сказал О’Брайен. «Вы начинаете складывать все это и вперед, Святые канноли. Это действительно способно».

Концептуально, Лаборатория приборостроения Массачусетского технологического института, разработавшая систему, построила ее на основе работы, которую они проделали для системы управляемых ракет Polaris, созданной для запуска ядерного оружия с американских подводных лодок. Аппаратное обеспечение компьютера «Аполлон», как отметил Минделл, было достаточно хорошо изучено «в мире военной авионики».

Поначалу в проекте преобладала его разработка — лаборатория сильно недооценила сложность задачи разработки программного обеспечения. Спустя годы, в середине 1970-х, программисты все еще использовали перфокарты для программирования. Но необходимость иметь астронавтов Аполлона и инженеров НАСА «в курсе», принимая решения, требовала другого типа программного обеспечения. Должен быть интерфейс. Несколько операций должны были выполняться одновременно.

Первоначальный акцент на аппаратном обеспечении закрепился за тем, что О'Брайен назвал "примитивной архитектурой", в то время как Маргарет Гамильтон, женщина из программы "Аполлон", в которой преобладали мужчины, получила возможность возглавить разработку программного обеспечения. Когда стало ясно, что программное обеспечение действительно предназначено для выполнения миссии, команда Гамильтона расширилась до 350 человек на пике своего развития. Созданная ими система была чрезвычайно продвинутой.

Чтобы максимизировать встроенную архитектуру, Гамильтон и ее коллеги придумали то, что они назвали «Интерпретатор» — теперь мы называем это схемой виртуализации. Это позволяло им запускать от пяти до семи виртуальных машин одновременно на двух килобайтах памяти. Это было ужасно медленно, но «теперь у вас есть все возможности, о которых вы когда-либо мечтали, в программном обеспечении», — сказал О'Брайен.

Астронавты общались с компьютером через DSKY, сокращение от «дисплей и клавиатура». Они вводили цифры и получали ответы. Описать систему пользовательского интерфейса непросто, но она опиралась на ряд программных кодов, а также коды «глагол» и «существительное». Глаголы были тем, что мог сделать компьютер («78 ОБНОВЛЕНИЕ ПРЕДСТАРТНОГО АЗИМУТА»). Существительные были числовыми величинами или измерениями («33 ВРЕМЯ ЗАЖИГАНИЯ»). Это было далеко от простоты «укажи и щелкни».

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

Это помогло Аполлону-11 спасти миссию. Когда лунный модуль спускался, шум от одного из его радаров начал подавать в систему неверные данные. Компьютер наведения понял, что возникла проблема, но смог оставаться работоспособным на протяжении всего спуска, сбрасывая неверную информацию и продолжая более важные операции, спасая миссию.

Популярное повествование об этом моменте — в то время и до сих пор — гласит, что у компьютера были проблемы и что Нил Армстронг, захватив «ручное» управление, пилотировал космический корабль на поверхность Луны. Это сделали люди! Компьютеры нам не помеха!

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

Такие историки, как Минделл, смоделировавший спуск посекундно, не придают большого значения необходимости действий Армстронга. Ему по-прежнему нужен был компьютер, чтобы управлять кораблем. «Если бы он был настроен на автоматическую посадку, [лунный модуль] все равно упал бы, с меньшей шумихой, хотя, возможно, среди валунов», — заключил Минделл. История о человеческой доблести была почти полной противоположностью реальности.

Учитывая все это, возможно, неудивительно, что О'Брайен обижается на мысль о том, что микроволновую печь или калькулятор можно считать «такими же мощными», как компьютер Apollo.

"Как вы определяете силу?" — спрашивает О’Брайен. "Здорово сказать: "Эта машина такая мощная". Что вы имеете в виду?"

Для него важно не простое количество транзисторов, а машина, соответствующая задаче. Возможности, а не мощность. «Мы должны были добраться до Луны, спуститься и вернуться, автономно. Они достигают своих целей точности после четверти миллиона миль, поражая цель в пределах от 500 до 600 футов и одной десятой фута в секунду», — сказал О’Брайен. «А вы говорите: «Мои часы мощнее». Нет, это не так».

Урок, возможно, прост: если ваш телефон намного мощнее компьютеров, отправивших человечество на Луну, то почему вы целыми днями смотрите в Instagram? Вычисление — это средство, а не цель.

Учитывая лавину освещения в СМИ на прошлой неделе празднования 50-й годовщины высадки на Луну Аполлона-11, если вы не знали раньше, то теперь наверняка знаете, что острая конкуренция (с русскими), монументальное мужество и американское творчество и возможности сделали это возможным.

Но, хотя программирование получило гораздо меньше внимания, оно тоже получило распространение.

Да, в 1969 году до Интернета оставалось еще 14 лет, Всемирная паутина появится только через восемь лет и станет "вещью" для масс только через пять лет или около того.< /p>

Но миссия «Аполлон-11» не могла бы состояться без компьютерного кода — программного обеспечения. Как написала Wall Street Journal пару недель назад: «Чтобы доставить людей на Луну, нужны были не только большие ракеты… Потребовался код».

Разработка программного обеспечения "Аполлон-11"

Действительно, «гигантский скачок для человечества» — Нил Армстронг и Базз Олдрин прошли по лунной поверхности — был бы прерван, если бы программное обеспечение не работало должным образом. «Программная тревога» в лунном модуле, известная как «код ошибки 1202», привела Центр управления полетами в считанные секунды после его очистки. Но возможность «перезагрузки» в программном обеспечении дала тем, кто вернулся на Землю, уверенность в том, что посадка может быть продолжена.

85-летний Фред Мартин, руководивший большей частью разработки программного обеспечения для Apollo, сказал WSJ: «Программное обеспечение спасло миссию».

Другими словами, программное обеспечение сделало возможным одно из величайших технологических достижений того времени.

Тем не менее, сложно представить, что кодирование, созданное пять десятилетий назад, может быть актуальным сегодня. Технологический разрыв намного шире, чем между четырехдорожечным аналоговым оборудованием, которое Битлз использовали для записи «Abbey Road», и цифровыми студиями с безграничными треками, безграничными эффектами и без магнитных лент, которые есть у любой гаражной группы, не говоря уже о музыкальной звезде. , использует сегодня.

Как заметили специалисты по статистике, компьютер Apollo содержал около 145 000 строк кода. Сравните это с примерно 62 миллионами строк, необходимыми сегодня для работы социальной сети Facebook, или 2 миллиардами, необходимыми для работы Google. Эти современные цифры связаны не только с объемом — они отражают сложность современных программ, сетей и систем.

Лэнс Элиот недавно написал в Forbes: "Даже ваш смартфон намного мощнее компьютера, чем компьютеры лунных посадочных модулей".

Но программное обеспечение Apollo 11 и его разработка остаются весьма актуальными. Элиот также утверждал, что уроки «Аполлона-11» следует применять к разработке автономных транспортных средств.

Действительно, он во многих отношениях заложил основу того, чем сегодня является или должна быть разработка программного обеспечения.

Программное обеспечение без ошибок

Начните с Маргарет Гамильтон, которой сейчас 82 года. Она программист из Массачусетского технологического института, руководившая командой, разработавшей бортовое программное обеспечение для миссий "Аполлон". Как отметила The Guardian в интервью с ней ранее в этом месяце, «ее строгий подход оказался настолько успешным, что не было известно ни об одной ошибке в программном обеспечении во время каких-либо миссий «Аполлон» с экипажем».

Нет программных ошибок. Возможно, если бы она согласилась (а это было возможно) на многократное клонирование и все эти Гамильтоны сегодня отвечали за разработку программного обеспечения, никто бы никогда не услышал о вторнике исправлений.

Именно она и ее команда написали программное обеспечение, которое включало «программную тревогу» и возможность перезапуска, что спасло посадку. Говоря об этих неприятных моментах, она сказала: «Быстро стало ясно, что программное обеспечение не только информирует всех о проблеме, связанной с оборудованием, но и компенсирует ее — перезапуская и восстанавливая задачи с наивысшим приоритетом».

«На помощь пришли механизмы обнаружения и восстановления ошибок. Когда они приземлились, это было полным облегчением — и астронавты были в безопасности, и программное обеспечение работало идеально», — сказала она The Guardian.

Строгий контроль

Тогда вы можете прочитать немного истории из главы 2 книги НАСА «Компьютеры в космических полетах: опыт НАСА», в которой отмечается, что «программная инженерия как особая отрасль компьютерных наук возникла в результате опыта работы с крупными военными, гражданскими и космические системы. В качестве одной из таких систем разработка программного обеспечения Apollo помогла предоставить примеры как неудач, так и успехов, которые можно было бы включить в методологию разработки программного обеспечения».

В нем добавляется: «Даже в начале 1960-х разработчики программного обеспечения следовали, если не полностью осознавали, циклу определения требований, проектирования, кодирования, тестирования и обслуживания [называемого «жизненным циклом программного обеспечения»]».< /p>

Жизненный цикл программного обеспечения в версии НАСА действительно был строгим, по крайней мере, когда дело касалось надзора.

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

Сколько организаций делают то же самое сегодня?

Да, вы можете отлаживать

Еще один основополагающий принцип разработки программного обеспечения, установленный в годы работы Аполлона, был процитирован Эллой Аткинс, директором лаборатории автономных аэрокосмических систем Мичиганского университета и старшим членом IEEE, в Computer Weekly.

«Из миссии «Аполлон» мы узнали, что можем выполнять математические вычисления достаточно быстро, чтобы можно было правильно рассчитать орбиту. Мы узнали, что можем достаточно хорошо отлаживать код, чтобы не было никаких проблем», — сказала она.

И сегодня мы продолжаем отлаживать код, стремясь сделать его надежным для всего, от автономных транспортных средств до критически важной инфраструктуры.

Ну как дела?

По мнению Гамильтона, не все так хорошо. Она сказала The Guardian, что один из самых важных уроков миссии «Аполлон» до сих пор не усвоен.

«Что стало очевидным с Apollo — хотя это не так, — так это то, что лучше определить вашу систему заранее, чтобы свести к минимуму ошибки, а не создавать кучу кода, который затем нужно исправлять с помощью патчей за патчами. . Это сообщение, похоже, осталось незамеченным — в этом отношении программное обеспечение сегодня по-прежнему создается так же, как и 50 лет назад», — сказала она.

Возможно, не совсем, но это правда, что на каждой конференции по безопасности, сессии за семинаром и основным докладом выступающие проповедуют евангелие «встраивания безопасности» или «сдвига влево» в течение жизненного цикла разработки программного обеспечения (SDLC). Это означает, как выразился Гамильтон, заботиться о безопасности и целостности заранее, а не пытаться исправить это позже.

Если бы урок был усвоен, не было бы необходимости продолжать проповедовать его.

Более тяжелый подъем

Конечно, все не так просто.Дон Дэвидсон, директор по управлению программами в Synopsys, отметил, что сегодня отладка программного обеспечения является более сложной задачей, не говоря уже о том, что угрозы безопасности в онлайн-мире гораздо более многочисленны и разнообразны, чем во времена «Аполлона-11». Вам не нужно беспокоиться о том, что вас взломают откуда-то с другой стороны мира.

"Компания Apollo уделяла особое внимание качеству и системному управлению/интеграции, что является хорошим уроком для разработки программного обеспечения, – говорит он, – но управление отладкой программного обеспечения было сосредоточено на функциональности – с учетом производительности и доступности миссии – с небольшим акцентом на конфиденциальность и безопасность". целостность.”

Другими словами, качество не обязательно означает безопасность.

Кроме того, код для Apollo был полностью индивидуальным — в нем не использовались готовые коммерческие продукты или компоненты с открытым исходным кодом. Но Дэвидсон согласен с основной мыслью Гамильтона. «Огромный объем кода сегодня требует более качественного и постоянного тестирования на протяжении всего жизненного цикла — вы не можете сделать это в конце», — говорит он. «Вам необходимо обеспечить безопасность».

Джим Манико, глобальный член правления OWASP (Открытый проект безопасности веб-приложений), также согласен с этим. «Безопасность и качество значительно возрастут, если мы прислушаемся к Гамильтону», — говорит он. «Я думаю, что отсутствие дисциплины в создании и проектировании программного обеспечения является серьезной проблемой в нашей отрасли».

Но он считает, что движение DevOps дает некоторую надежду. "Масштабный переход к автоматизации всех процессов разработки программного обеспечения должен помочь дисциплинировать с технической точки зрения и избавиться от неряшливости 90-х и 2000-х", – говорит он.

Затраты на разработку безопасного программного обеспечения

Наконец, деньги всегда имеют значение. Трэвис Бин, технический стратег Synopsys, говорит, что создание безопасного программного обеспечения невозможно.

"Я думаю, что аргумент здесь экономический", – сказал он. «В настоящее время создание правильного программного обеспечения стоит слишком дорого, учитывая требуемый набор навыков, необходимый опыт и часы разработки.

"Была найдена золотая середина, при которой программное обеспечение может создаваться дешевыми разработчиками обычных продуктов", – сказал он, – но для обеспечения безопасности эти разработчики продуктов должны быть "привязаны к более тщательно спроектированным платформам".

"Без платформы, созданной для того, чтобы разработчик товаров оставался на плаву, у нас нет шансов", – сказал он.

Маргарет Гамильтон стоит рядом со стопкой списков программ с компьютера Apollo Guidance Computer на фотографии, сделанной в 1969 году. Wikimedia Commons

20 июля 1969 года, когда лунный модуль Орел приближался к поверхности Луны, его компьютеры начали выдавать предупреждающие сообщения. На мгновение Центр управления полетами столкнулся с решением «идти / не идти», но с высокой уверенностью в программном обеспечении, разработанном специалистом по информатике Маргарет Гамильтон и ее командой, они приказали астронавтам продолжать. Программное обеспечение, которое позволяло компьютеру распознавать сообщения об ошибках и игнорировать низкоприоритетные задачи, продолжало направлять астронавтов Нила Армстронга и Базза Олдрина по испещренной кратерами пыльной коре Луны к месту их посадки.

«Очень быстро стало ясно, – позже она сказала, — что [программное] программное обеспечение не только информировало всех о проблеме, связанной с оборудованием, но и компенсировало ее». Расследование в конечном итоге показало, что контрольный список астронавтов был ошибочным, и им было сказано неправильно установить аппаратный переключатель радара сближения. «К счастью, люди в Центре управления полетами доверяли нашему программному обеспечению, — сказал Гамильтон. Нил Армстронг сообщил, что топлива хватило только на 30 секунд полета: «Орел приземлился».

Достижение было монументальной задачей в то время, когда компьютерные технологии находились в зачаточном состоянии: астронавты имели доступ только к 72 килобайтам компьютерной памяти (64-гигабайтный мобильный телефон сегодня имеет почти в миллион раз больше места для хранения). Программистам приходилось использовать бумажные перфокарты для ввода информации в компьютеры размером с комнату без экранного интерфейса.

Когда произошла посадка, 32-летний Гамильтон был подключен к Центру управления полетами из Массачусетского технологического института. «Я не сосредотачивался на миссии как таковой, — признался Гамильтон. «Я сосредоточился на программном обеспечении». После того, как все заработало должным образом, на нее обрушился вес момента. "Мой Бог. Посмотрите, что произошло. Мы сделали это. Это сработало. Это было захватывающе».

Гамильтона, популяризировавшего термин "программная инженерия", немного упрекнули за него. Критики говорят, что это преувеличивает важность ее работы, но сегодня, когда разработчики программного обеспечения представляют собой востребованный сегмент рабочей силы, никто не смеется над Маргарет Гамильтон.

Смитсоновский национальный музей авиации и космонавтики хранит в своих коллекциях коллекцию компьютерного программного обеспечения для управления полетами Apollo (выше, номер страницы 45506-A), созданную Гамильтон и ее командой. Национальный музей авиации и космонавтики

Когда планировались миссии Аполлона, процесс написания кода начался на больших листах бумаги. Оператор перфоратора проделывал отверстия в бумажных карточках, вводя коды в так называемые перфокарты. «Сейчас мало кто знает, что такое перфокарты, но именно так вы их и запрограммировали, — говорит Пол Черуцци, почетный куратор Смитсоновского национального музея авиации и космонавтики, который знаком с Гамильтоном последние два десятилетия.

В коллекции музея хранится коллекция компьютерного программного обеспечения Apollo Flight Guidance, созданная Гамильтоном. Архивный материал включает в себя листы распечаток, известные как «списки», которые показывают результаты расчетов по уравнению. Когда вывод компьютера не выявлял проблем, инженеры-программисты «просматривали» списки, проверяя, не требуют ли внимания проблемы.

Как только все стало хорошо, код был отправлен на фабрику Raytheon, где в основном женщины — многие из них были бывшими сотрудницами текстильных фабрик Новой Англии — сплетали медные провода и магнитные сердечники в длинную «веревку» из проволоки. С кодом, написанным единицами и нулями, провод проходил через крошечный магнитный сердечник, когда он представлял единицу, и он проходил вокруг сердечника, когда он представлял ноль. В результате этого гениального процесса была создана веревка с программными инструкциями. Женщины, которые выполняли эту работу, были известны как LOL, сказал Гамильтон Серуцци, не потому, что они были забавными; это было сокращение от «маленьких старушек». Гамильтона называли «матерью-веревкой».

Гамильтон, по словам куратора Тизела Мьюир-Хармони, «также был очень активным программистом (выше, во время работы над Apollo), находя решения проблем, очень новаторское, очень нестандартное мышление». Wikimedia Commons

Верёвка компенсировала ограниченную память компьютеров Apollo. По словам Тизеля Мьюир-Хармони, куратора Музея авиации и космонавтики и автора новой книги Apollo to the Moon: A History in 50 Objects, в ходе этого процесса была создана «очень надежная система». <эм>. «Это была одна из причин, по которой компьютер управления Apollo работал безупречно во время каждой миссии».

Любительница математики с раннего возраста, Гамильтон изменила эту склонность, став экспертом в написании программного обеспечения и разработке программного обеспечения после окончания колледжа. Когда ее муж учился на юридическом факультете Гарварда в 1959 году, она устроилась на работу в Массачусетский технологический институт, где научилась писать программное обеспечение, предсказывающее погоду. Год спустя она начала программировать системы обнаружения вражеских самолетов в программе полуавтоматического наземного окружения (SAGE).

В середине 1960-х Гамильтон услышал, что Массачусетский технологический институт «объявил, что они ищут людей, которые будут заниматься программированием, чтобы отправить человека на Луну, и я просто подумал: «Ого, я должен туда попасть. Она планировала поступить в аспирантуру Университета Брандейса, чтобы получить степень по абстрактной математике, но космическая программа США покорила ее сердце. Благодаря успеху ее работы в SAGE, она стала первым программистом, нанятым для проекта Apollo в Массачусетском технологическом институте. В 1965 году она возглавила собственную группу в Лаборатории приборостроения Массачусетского технологического института (позже известной как Лаборатория Дрейпера), которая занималась написанием и тестированием программного обеспечения для двух 70-фунтовых компьютеров Аполлона-11 — одного на борту командного модуля, Columbia. и один на борту лунного модуля Орел.

В 2016 году президент Барак Обама наградил Гамильтон медалью свободы, отметив, что «ее пример говорит об американском духе первооткрывателей». Официальное фото Белого дома, сделанное Лоуренсом Джексоном

"Когда я думаю о Маргарет Гамильтон, я думаю о ее цитате о том, что "у меня не было выбора, кроме как быть пионерами", потому что я думаю, что это действительно олицетворяет то, кем она была, и ее значение в этой программе", – говорит Мьюир-Хармони. . «Она была пионером в разработке программного обеспечения и. . . .пионер как женщина на рабочем месте, вносящая свой вклад в программу такого типа, взяв на себя такую ​​роль».

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

Стремясь сделать программное обеспечение более надежным, Гамильтон стремился разработать программное обеспечение Apollo, способное справляться с неизвестными проблемами и достаточно гибкое, чтобы прерывать одну задачу, чтобы взяться за более важную. В поисках новых способов отладки системы она поняла, что звук может служить детектором ошибок. Она отметила, что ее программа в SAGE во время работы звучала как морской берег. Однажды ее разбудил коллега, который сказал, что ее программа «больше не звучит как морской берег!» Она бросилась на работу, стремясь найти проблему и начать применять эту новую форму отладки в своей работе.

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

Во время полета Аполлона-8 вокруг Луны астронавт Джим Ловелл совершил ту же ошибку, что и ее маленькая дочь, и, к счастью, команда Гамильтона смогла исправить проблему в течение нескольких часов. Но для всех будущих полетов Аполлона в программное обеспечение была встроена защита, чтобы этого больше не повторилось. Со временем Гамильтон стал рассматривать всю миссию как систему: «часть реализована в виде программного обеспечения, часть — в программном обеспечении, часть — в аппаратном обеспечении».

Работа Гамильтона помогла оставшимся миссиям Аполлона, высадившимся на Луну, а также помогла Скайлэб, первой космической станции США, в 1970-х годах. В 1972 году она покинула Массачусетский технологический институт и основала собственную компанию Higher Order Software. Четырнадцать лет спустя она основала еще одну компанию, Hamilton Technologies, Inc. В своей новой фирме она создала Universal Systems Language, что стало еще одним шагом в повышении надежности процесса проектирования систем.

В 2003 году НАСА удостоило Гамильтон награды NASA Exceptional Space Act Award, отметив ее вклад в разработку программного обеспечения и присудив ей самый крупный финансовый приз, который агентство когда-либо присуждало одному человеку до того времени – 37 200 долларов США. В 2016 году президент Барак Обама наградил ее медалью Свободы, отметив, что «ее пример говорит об американском духе первооткрывателей, который существует в каждой маленькой девочке и маленьком мальчике, которые знают, что каким-то образом заглянуть за небеса — значит заглянуть глубоко внутрь себя. ”

Работы Гамильтон, возможно, малоизвестны за пределами научного сообщества, хотя ее достижения были увековечены выпуском в 2017 году фигурки Lego Margaret Hamilton из коллекции Women of NASA. Он изображает Гамильтона как маленького, длинноволосого героя в очках, чей код Аполлона сложился так, что он выше ее. В Национальном музее авиации и космонавтики теперь хранятся прототипы этих фигурок. Инженеров-программистов обычно не считают отважными героями, но Гамильтон не чужд храбрости, необходимой для героизма. Она вспоминает, что «была бесстрашной, даже когда эксперты говорят: «Нет, это не имеет смысла», они не верили этому, никто не верил. Это было то, о чем мы мечтали, но это стало реальностью».

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