Процес розробки, що використовується для коду в місіях Apollo 11?


57

Місії "Аполлона" мали технологію не складнішу, ніж кишеньковий калькулятор.

За посиланням тут , є інформація про Apollo Guidance Computer (AGC)

Бортовий комп’ютер Apollo Guidance Computer (AGC) становив близько 1 кубічного фута з 2 кб 16-бітової оперативної пам’яті та 36 кВт жорсткої пам’яті з серцевинною мотузкою з мідними проводами, нарізаними або не пронизаними крізь крихітні магнітні сердечники. 16-бітові слова зазвичай складали 14 біт даних (або два оп-коди), 1 біт знаків та 1 біт парності. Час циклу становило 11,7 мікросекунд. Програмування здійснювалося мовою асемблеру та інтерпретаційною мовою, зворотною польською мовою.

Отже, я натрапив на якийсь вихідний код, коли досліджував те, що там було, і помітив чудові коментарі (наприклад, НАРОДНИЙ, Я НАДІЮ НАДІЮ НАДІЮ)

VRTSTART    TS  WCHVERT
# Page 801
        CAF TWO     # WCHPHASE = 2 ---> VERTICAL: P65,P66,P67
        TS  WCHPHOLD
        TS  WCHPHASE
        TC  BANKCALL    # TEMPORARY, I HOPE HOPE HOPE
        CADR    STOPRATE    # TEMPORARY, I HOPE HOPE HOPE
        TC  DOWNFLAG    # PERMIT X-AXIS OVERRIDE
        ADRES   XOVINFLG
        TC  DOWNFLAG
        ADRES   REDFLAG
        TCF VERTGUID

Фактичні програми в космічному кораблі зберігалися в основній мотузковій пам’яті , старовинній технології пам’яті, виготовленій (буквально) плетінням тканини / мотузки, де шматочки були фізичними кільцями з феритового матеріалу. «Основна» пам’ять стійка до космічних променів. Стан основного біта не зміниться при бомбардуванні випромінюванням у Космосі.

Програмне забезпечення для віртуальної комп'ютерної орієнтації Apollo (AGC) також є на GITHUB!

Частина документації тут.

Ще один зразок вихідного коду з чудовими коментарями.

033911,000064: 32,3017    06037        FLAGORGY        TC       INTPRET      #  DIONYSIAN FLAG WAVING

    034090,000243: 32,3241    13247        BZF      P63SPOT4               #  BRANCH IF ANTENNA ALREADY IN POSITION 1
    034091,000244: 
    034092,000245: 32,3242    33254        CAF      CODE500                #  ASTRONAUT:     PLEASE CRANK THE
    034093,000246: 32,3243    04616        TC       BANKCALL               #                 SILLY THING AROUND
    034094,000247: 32,3244    20623        CADR     GOPERF1                               
    034095,000248: 32,3245    16001        TCF      GOTOP00H               #  TERMINATE
    034096,000249: 32,3246    13235        TCF      P63SPOT3               #  PROCEED        SEE IF HE'S LYING


    034101,000254: 32,3251    04635        TC       POSTJUMP               #  OFF TO SEE THE WIZARD ...
    034102,000255: 32,3252    74126        CADR     BURNBABY

Моє запитання тут таке:

  • Як команди, які писали такий багато код, змогли зробити його функціональним з огляду на інструменти в той час?

Тому що якщо ви складете стільки коду, який використовувався в Apollo 11 ... це займе дні, навіть тижні. Я серйозно сумніваюся, що програмісти тоді залишили все, щоб це сталося випадково.


4
Я мав досить вагому редагування, щоб зробити це, сподіваюсь, більше на тему. Я думаю, що це захоплююче питання, і я сподіваюся, що люди зможуть ефективно відповісти!
Ендерленд

3
Читайте хакерів і міфічний місяць людини . Тут є дуже багато матеріалу - я не впевнений, що він відповідатиме відповіді тут.

2
Назви запитань у стилі "Тег - Запитання" відмовляються на Stack Exchange. Будь ласка, залиште заголовок таким, яким він є.

4
Не було циклу компіляції / виправлення, як пропонує ваше запитання. Ви не створили пам’ять із мотузкою, протестуйте її та повторіть, якщо вона не працює; ви зрозуміли це вперше.
Роберт Харві

7
@RobertHarvey ви зрозумієте, HOPE HOPE HOPEщо з першого разу.

Відповіді:


13

Був чудовий документальний фільм, який я намагаюся переслідувати про Джона "Джека". Гарман повинен був "винайти" "операційну систему багатопрограмного планування з пріоритетом". Це, можливо, було пов'язано з модулем посадки. Історія полягала в тому, що, висаджуючи приземлення, вам краще віддати перевагу керівництву, оскільки інші речі, наприклад, температура в салоні протягом наступних 15 секунд, насправді не мали значення, якщо ви розбилися та спалили. З першого ж пострілу вони перевантажили комп'ютер, і тривоги почали виникати, оскільки деякі підпрограми не виконувались. Завантажених було занадто багато, але завдяки концепції пріоритетів, яку Гарман передбачив і вбудував, бо вважав це гарною ідеєю, рутини з низьким пріоритетом не загрожували посадці вищого пріоритету.

Переглядаючи документальний фільм у той час, я вразив, як це було як зробити капітальний рефакторинг коду, не повідомивши керівництву і майже звільнившись, бо ти запізнився на те, що ти повинен був працювати. Однак у цьому випадку рефакторинг з’явився на світ, коли було розслідувано причину тривоги. (А менеджмент все-таки був злий! :-)

Деякі посилання:

Ні, "помилка контрольного списку" майже не зірвала приземлення першого місяця

ТАБЛИЦІ З КОМП'ЮТЕРУ МІЖНАРОДНОГО МОДУЛЯ

Як вони побудували: Програмне забезпечення Apollo 11

Проект усної історії космічного центру NASA Johnson відредагував стенографію усної історії

Коротка історія витягу програми НАСА "Аполлон" : Через п'ять хвилин після спалення спуску та на 1800 м над поверхнею Місяця комп'ютер навігації та наведення LM створив перший із кількох несподіваних програмних сигналів "1202" та "1201". Інженер-комп’ютер Центру управління місіями в Х'юстоні Джек Гарман сказав керівнику Стіву Бейлзу, що безпечно продовжувати спуск. Ці тривоги були вказівками на "виконавчі переливи", тобто керівний комп'ютер не міг виконати всі свої завдання в режимі реального часу і довелося відкласти деякі з них.

Згадуючи уривок «Гігантський стрибок» : Ми знали, що це, і що це не повинно відбуватися. Але ми розробили систему, яка намагалася відновитись із будь-яких умов перевантаження. Тому я пам'ятаю, як слухав Джека Гармана, який кричав: І далі вони пішли. Тоді ми слухали, як Ніл летів LEM і намагався знайти гарне місце для приземлення. Нашим новим турботою була відсутність залишку палива. Але нарешті ми почули повідомлення про контакт і тоді: «Орел приземлився».

Інтерв'ю Джека Гармана

EDIT: Можливо, це був документальний фільм: " Аполлон 11: Нерозказана історія" (2006)

У ролях: Джон Р. Гарман ...
Сам - інженер-комп’ютер Apollo 11 (як Джек Гарман)

(Серед інших).

Оновлення: Хакер з Південної Африки щойно врятував перший космос НАСА


Я знав, що ця історія звучить знайомо! У розділі "Аполлон 11" детальніше про цю історію можна прочитати на en.wikipedia.org/wiki/Margaret_Hamilton_(scientist)
hydo

31

Якщо я правильно розумію, процес розробки був експертним оглядом та експериментами.

Колектив складався з таких людей, як "Математичні лікарі" - надзвичайно віддані, розумні, пристрасні, орієнтовані на деталі люди, життя яких було присвячено їх роботі. Отже, кажучи про експертну оцінку, я маю на увазі багато експертних оцінок протягом багатьох місяців (більше року).

Ці розробники "керували імітацією в головах", "налагоджували програмне забезпечення на папері" і працювали в групах з багатьма розробниками, які переглядали один і той же код знову і знову, поки не переконалися, що це правильно. Було кілька команд - кожна працювала над частиною цілого.

Професор моїх чисельних методів з Державного університету штату Огайо (весна '96) написав код, який вирішив, коли слід розпочати спуск ракети-бустера. Він описав розмір роздруківки з розміром телефонної книги (Отже, може бути 2,5 - 3,5 дюйма товщиною паперу 8,5 х 11 дюймів - він не описав розмір шрифту) коду Fortran.

Переконавшись, вони випустили безпілотну ракету (у ракет технічно немає гіроскопів) з радіо на борту, яке випромінювало звуковий сигнал через рівні проміжки часу. Вони слухали звукові сигнали до того моменту, як очікували, що радіо вплине на Місяць (вріжеться в нього і знищить себе) і перестане звучати. Вони знали, що якщо вони пропустять, радіо буде тримати звуковий сигнал довше розрахованого часу удару. Удар стався через 15 секунд після розрахункового часу.

Ця відверто анекдотична історія - це мої спогади про візит до лікаря з офісу. Він був дуже старий, і це було давно. Це мій найкращий спогад.


2
Він описав розмір роздруківки з розміром телефонної книги (Отже, може бути 2,5 - 3,5 дюйма товщиною 8,5 х 11 дюймовий папір. Як правило, код був надрукований в ландшафтному режимі з приблизно 55 - 60 рядків на сторінку. Рейм (100 аркушів) паперу для роздруківки товщиною близько 1,75 дюйма
Гілберт Ле Бланк

@GilbertLeBlanc Тираж - це зазвичай 500 аркушів. (іноді 480)
joshp

@joshp: Ти маєш рацію. 500 аркушів паперу для роздруківки товщиною близько 1,75 дюйма.
Гілберт Ле Бланк

15

AGC контролюється дієсловами та іменниками

Командне програмне забезпечення Apollo не записане в жодному синтаксисі, який користувачі сьогодні не впізнають. Команди введення космонавтів чисельно, кожне двоцифрове число являє собою дієслово чи іменник. Дієслово описувало дію, яку слід виконати, а іменник визначав дані, на які впливає дія дієслова.

Астронавти ненавиділи встановлення дієслова та іменника

Рамон Алонсо, один з оригінальних розробників апаратних засобів AGC, сказав, що інтерфейс був придуманий, щоб вразити відвідувачів їхньої лабораторії, але затримався на рейсах, коли ніхто не розробив кращий інтерфейс. Критики сказали, що це не "науково", і перші космонавти - усі елітні реактивні пілоти - віддавали перевагу циферблатам і комутаторам, подібним до панелі управління літаком.

"AGC був дуже повільним, але дуже надійним і дуже малим для того часу в історії цифрових комп'ютерів. Це було найбільш раннє використання інтегральних мікросхем".

Програмне забезпечення, як було розроблено, було побудовано в основному з нуля MIT.

Ви можете завантажити та встановити програму емулятора Apollo Guidance Computer на свій персональний комп'ютер, без проблем. Ось як це виглядає на Mac OS X.

введіть тут опис зображення


8

Як і майже кожен інший проект програмного забезпечення, він робився в агресивні терміни та якісний тиск. На щастя, тут розміщено великий архів матеріалів керівника програмного забезпечення Говарда В. Білла Тіндалла-молодшого .

Якщо ви відібрали примітки, ви зможете отримати дуже гарне розуміння нормального конфлікту між часом, особливостями та дефектами. Варто зазначити, що розвиток тривав протягом багатьох років, як і решта проекту.

Проектування системи розпочалося у другому кварталі 1961 року, і NASA встановила версію Block I в космічному кораблі 22 вересня 1965 р. Випуск оригінального програмного забезпечення (на ім'я CORONA) відбувся в січні 1966 р., З першого польоту 25 серпня ц.р. 1966. Менш ніж через 3 роки після цього дизайнери досягли остаточної мети програми ( http://history.nasa.gov/computers/Ch2-5.html )

Я не можу знайти конкретних посилань на те, як було створено програмне забезпечення, але, з огляду на дату, я можу лише припустити, що велика частина робилася на ручці та папері, "моделювання" робилося вручну. Здається, була створена система для завантаження програм в AGC перфокартами, імовірно, для «швидкого» тестування на землі без необхідності виготовлення мотузкової пам’яті.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.