У миссий Аполлона была технология, не более сложная, чем карманный калькулятор.
По ссылке здесь есть информация о Apollo Guidance Computer (AGC)
Бортовой компьютер Apollo Guidance Computer (AGC) был около 1 кубического фута с 2K 16-битной оперативной памяти и 36K жесткой памяти сердечника и веревки с медными проводами, пронизанными или не пропущенными через крошечные магнитные сердечники. 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
Реальные программы на космическом корабле хранились в памяти ядра веревки , древней технологии памяти, сделанной (буквально) плетением ткани / веревки, где биты были физическими кольцами из ферритового материала. «Ядро» памяти устойчиво к космическим лучам. Состояние основного бита не изменится при бомбардировке радиацией в космическом пространстве.
Программное обеспечение Virtual Apollo Guidance Computer (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 ... это заняло бы дни, даже недели. Я серьезно сомневаюсь, что программисты тогда оставили все на волю случая.
HOPE HOPE HOPE
с первого раза.Ответы:
Был прекрасный документальный фильм, который я пытаюсь отследить, о том, что Джону Джеку Гарману пришлось «изобрести» «операционную систему мультипрограммирования с приоритетным планированием». Это, возможно, было связано с модулем посадочного модуля, хотя. История заключалась в том, что, когда вы садились на посадочный аппарат, вам лучше отдавать предпочтение руководству, потому что другие вещи, такие как температура в кабине в течение следующих 15 секунд, на самом деле не имели значения, если вы разбились и сгорели. При первом выстреле они перегружали компьютер, и возникали тревоги, потому что некоторые подпрограммы не выполнялись. Было загружено слишком много, но благодаря концепции приоритета, которую Гарман предвидел и встроил, потому что считал это хорошей идеей, процедуры с низким приоритетом не увязали с процедурой посадки с более высоким приоритетом.
Наблюдая за документальным фильмом в то время, я был поражен, как это было похоже на серьезный рефакторинг кода, не сказав руководству и почти уволившись, потому что вы опоздали над тем, над чем вы должны были работать. В этом случае, однако, рефакторинг обнаружился, когда причина тревог была исследована. (И менеджмент все еще злился! :-)
Некоторые ссылки:
Нет, «ошибка в контрольном списке» почти не сорвала первую посадку на Луну
СКАЗКИ ИЗ КОМПЬЮТЕРА ЛУННОГО МОДУЛЯ
Как они это построили: программное обеспечение Apollo 11
Космический центр НАСА им. Джонсона Проект устной истории
Краткая история выдержки из программы НАСА «Аполлон» . Через пять минут после спуска и на высоте 1800 м над поверхностью Луны компьютер навигации и навигации LM выдал первый из нескольких неожиданных сигналов тревоги «1202» и «1201». Компьютерный инженер в Центре управления полетами в Хьюстоне, Джек Гарман, сказал руководителю Стиву Бейлсу, что продолжать спуск безопасно. Эти сигналы тревоги были признаками «переполнения исполнительной власти», что означало, что компьютер управления не мог выполнять все свои задачи в режиме реального времени и должен был отложить некоторые из них.
Вспоминая отрывок из «Гигантского скачка» : мы знали, что это такое и что этого не должно происходить. Но мы разработали систему, которая изо всех сил пыталась оправиться от любых условий перегрузки. Итак, я помню, как слышал, как [инженер по вычислительной технике НАСА] Джек Гарман кричит: «Иди, иди!» И они пошли дальше. Затем мы слушали, как Нейл летал на ЛЭМ и пытался найти хорошее место для приземления. Наше новое беспокойство было нехватка топлива. Но, наконец, мы услышали уведомление о контакте, а затем: «Орел приземлился».
Джек Гарман Интервью
РЕДАКТИРОВАТЬ: Может быть, это был документальный фильм: Аполлон 11: Нерассказанная история (2006)
В ролях: Джон Р. Гарман ...
Сам - Аполлон 11 Инженер-компьютерщик (как Джек Гарман)
(Среди прочих).
Обновление: хакер из Южной Африки только что спас первый компьютер НАСА в космосе
источник
Если я правильно понимаю, процесс разработки был экспертной оценки и экспериментов.
Команда состояла из таких людей, как «Врачи математики» - преданных своему делу, умных, страстных, ориентированных на детали людей, чья жизнь была посвящена их работе. Поэтому, когда я говорю о рецензировании, я имею в виду множество рецензий в течение многих месяцев (более года).
Эти разработчики «запускали симуляции в своих головах», «отлаживали программное обеспечение на бумаге» и работали в группах, где многие разработчики снова и снова просматривали один и тот же код, пока не убедились в его правильности. Было несколько команд, каждая из которых работала над частью целого.
Мой профессор по численным методам в Университете штата Огайо (весна 96 года) написал код, который решил, когда начинать запуск ракеты-носителя. Он описал размер распечатки, равный размеру телефонной книги (возможно, толщиной от 2,5 до 3,5 дюймов бумаги размером 8,5 х 11 дюймов - он не описал размер шрифта) кода на языке Фортран.
Убедившись в этом, они выпустили беспилотную ракету (ракеты технически не имеют гироскопов) с радио на борту, которое издавало звуковой сигнал через регулярные промежутки времени. Они слушали звуковые сигналы до того момента, когда ожидали, что радио ударит по луне (врежется в нее и уничтожит себя) и прекратит пискать. Они знали, что, если они пропустят, радио продолжит издавать звуковой сигнал далеко после расчетного времени удара. Удар произошел через 15 секунд после расчетного времени.
Эта удивительно анекдотичная история - мои воспоминания о встрече с доктором в офисе. Он был очень стар, и это было очень давно. Это мое лучшее воспоминание.
источник
AGC контролируется глаголами и существительными
Командное программное обеспечение Apollo не написано ни в каком синтаксисе, который распознали бы пользователи сегодня. Астронавты вводят команды численно, причем каждое двузначное число представляет глагол или существительное. Глагол описывает действие, которое должно быть выполнено, а существительное указывает данные, на которые должно воздействовать действие глагола.
Астронавты ненавидели глагол и существительное
Рамон Алонсо, один из разработчиков аппаратного обеспечения AGC, сказал, что интерфейс был изобретен для того, чтобы произвести впечатление на посетителей их лаборатории, но он остановился на полете, когда никто не разработал лучший интерфейс. Критики сказали, что это не «наука», и первые астронавты - все пилоты элитных самолетов - предпочли циферблаты и переключатели, похожие на панель управления самолетом.
Программное обеспечение в том виде, в котором оно было разработано, было разработано MIT с нуля.
Вы можете скачать и установить программу эмулятора Apollo Guidance Computer на свой персональный компьютер, без проблем. Вот как это выглядит в Mac OS X.
источник
Как и почти любой другой программный проект, он был реализован в условиях агрессивного крайнего срока и давления качества. К счастью, большой архив материалов от менеджера программных проектов Говарда У. «Билла» Тиндалла-младшего доступен здесь .
Если вы сэмплируете заметки, вы получите очень хорошее представление о нормальном конфликте между временем, функциями и дефектами. Стоит отметить, что развитие продолжалось в течение ряда лет, как и остальная часть проекта.
Я не могу найти конкретные ссылки на то, как было создано программное обеспечение, но, учитывая дату, я могу только предположить, что большая часть этого была сделана ручкой и бумагой, а «симуляции» были сделаны вручную. Кажется, существовала система для загрузки программ в AGC с перфокартами, предположительно для «быстрого» тестирования на месте без необходимости изготовления памяти на веревке.
источник