[image]

Неожиданно высокая надежность ПО корабля "Апполон"

Маргарет Гамильтон стоит рядом с написанным ей исходным кода бортового компьютера «Аполлона»
 
RU Памятливый45 #13.06.2016 23:31
+
0 (+2/-2)
-
edit
 

Памятливый45

злопамятливый
★★★★
Просто песня какая-то.

10 правил, которые позволяют NASA писать миллионы строк кода с минимальными ошибками

Маргарет Гамильтон стоит рядом с написанным ей исходным кода бортового компьютера «Аполлона» Лаборатория реактивного движения (Jet Propulsion Laboratory) —... // habrahabr.ru
 

Дамочка в миниюбке написала весь код.
Статья посвящена объяснению того, что в этих томах не было ошибок.

Как программист замечу, что такое возможно только в теории.
"Практика -критерий истины" ©

Открываю тему ПО ЛМ, ПО ОК.
Жду визга аппологетов.
   11.011.0
RU PSS #14.06.2016 05:33  @Памятливый45#13.06.2016 23:31
+
+1
-
edit
 

PSS

литератор
★★
Памятливый45> Дамочка в миниюбке написала весь код.
Памятливый45> Статья посвящена объяснению того, что в этих томах не было ошибок.

На самом деле ошибки там были и во время полетов часть из них проявились. Тут скорей БЦВМ Зондов без глюков слетало, как не удивительно. Кстати статья даже не про Аполлон. Только про беспилотные программы JPL.
   33
Это сообщение редактировалось 15.06.2016 в 06:29
RU Alexandrc #08.07.2016 15:26
+
-
edit
 

Alexandrc

аксакал

Теперь любой может убедиться в качестве кода ;)
Исходный код «Аполлона-11» опубликован на Github

20 июля 2009 года в честь 40-летия высадки на Луну распечатки с исходным кодом программы для бортового управляющего компьютера КА «Аполлон» (Apollo Guidance Computer, AGC) были оцифрованы и выложены в интернете. Прошло семь лет — и сейчас этот уникальный образец компьютерной истории получил вторую жизнь. Сегодня исходный код для AGC на ассемблере опубликован на Github в полном виде, открыт для поиска, комментариев, форков и т.д.

В коде можно найти вызовы ставших знаменитыми ошибок с кодами 1201 и 1202, которые так беспокоили Нила Армстронга, и многое другое.

На Github репозиторий Apollo-11 быстро взлетел на 1-е место в списке самых популярных репозиториев за сутки (можно не сомневаться, что в рейтинге за неделю у него будет 1-е место уже завтра). Там действительно есть на что посмотреть. Особенно интересно почитать некоторые названия процедур (BURN_BABY_BURN--MASTER_IGNITION_ROUTINE.s) и комментарии в оригинальном коде.
 


code text
  1. CAF     CODE500         # ASTRONAUT:    PLEASE CRANK THE
  2. TC      BANKCALL        #               SILLY THING AROUND
  3. CADR    GOPERF1
  4. TCF     GOTOP00H        # TERMINATE
  5. TCF     P63SPOT3        # PROCEED       SEE IF HE'S LYING
  6.  
  7. TC      BANKCALL        # ENTER         INITIALIZE LANDING RADAR
  8. CADR    SETPOS1
  9.  
  10. TC      POSTJUMP        # OFF TO SEE THE WIZARD ...
  11. CADR    BURNBABY



В программе есть «временный» код, как и во многих современных программах.

 


code text
  1. TC      BANKCALL        # TEMPORARY, I HOPE HOPE HOPE
  2. CADR    STOPRATE        # TEMPORARY, I HOPE HOPE HOPE
  3. TC      DOWNFLAG        # PERMIT X-AXIS OVERRIDE



А вот версия 1969 года популярного комментария «Это никогда не должно произойти».

 


CA      A               # SHOULD NEVER HIT THIS LOCATION



В репозитории на Github уже создан первый тикет — обсуждение «бага», которые необходимо исправить в программе. 



Разработчик SilverWingedSeraph пишет: «У одного пользователя возникла довольно серьёзная проблема с криогенным перемешиванием в кислородных баках с появлением сообщения о неисправности». Для воспроизведения ошибки в программе следует повторить такую последовательность действий:

 



  1. Построить сервисный модуль.
  2. Пролететь до окололунной орбиты.
  3. На окололунной орбите запустить перемешивание в кислородных баках.
  4. >



    «Если в модуле есть проблема с проводкой, то ошибка может быть воспроизведена. Будьте осторожны, потому что ситуация может опасна для тестировщика, который пытается воспроизвести ошибку», — отмечает не лишённый чувства юмора разработчик на Github. 



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



    Вообще, к настоящему времени сохранилась всего одна физическая копия распечаток программы лунного модуля. Книга с распечаткой хранится в музее Массачусетского технологического института.



    Код программы написал Дон Айлс с коллегами. Лично Айлс является автором около 2000 строк кода, которые отвечали за посадку лунного модуля.



    Управляющие команды «Аполлона» можете попробовать запустить в эмуляторе (это лишь симулятор компьютера, без самого космического аппарата).





    Эмулятор компьютера космического аппарата Apollo





    Инструкция к эмулятору Apollo



    Компьютеры Apollo Command Module (CM) и Lunar Module (LM) осуществляли посадку на лунную поверхность в автоматическом режиме. Компьютер управлял двигателями и сервомоторами в реальном времени. 





    Бортовой управляющий компьютер КА «Аполлон»





    Дисплей бортового управляющего компьютера



    Управление осуществлял Apollo Guidance Computer (AGC). Бортовой компьютер оснащался ОС реального времени с поддержкой многопоточности, он управлял всеми системами, получая сигналы с радаров, телескопов, гироскопов и акселерометров. 



    В книге «Цифровой Аполлон» хорошо рассказано, как программа расставляла приоритеты и распределяла процессорное время.







    Технические спецификации бортового управляющего компьютера КА «Аполлон»

    Временные эталоны работы AGC задавались кварцевым резонатором с частотой в 2,048 МГц. Память компьютера состояла из 2048 слов перезаписываемого ОЗУ и 36 К слов ПЗУ с линейной выборкой на многократно прошитых сердечниках. Цикл чтения-записи ОЗУ и ПЗУ занимал 11,72 мкс. Длина слова составляла 16 бит: 15 бит данных и 1 бит чётности. Формат 16-битного слова процессора включал в себя 14 бит данных, бит переполнения и бит знака.



    См. также:

    Руководство по программированию Apollo Guidance Computer


     
       51.0.2704.10651.0.2704.106
    RU Серокой #08.07.2016 15:41  @Alexandrc#08.07.2016 15:26
    +
    -
    edit
     

    Серокой

    координатор
    ★★★★
    Alexandrc> Теперь любой может убедиться в качестве кода ;)
    Alexandrc> Исходный код «Аполлона-11» опубликован на Github

    А зачем кнопки глагола и существительного?
       
    RU Alexandrc #08.07.2016 15:59  @Серокой#08.07.2016 15:41
    +
    +1
    -
    edit
     

    Alexandrc

    аксакал

    Alexandrc>> Теперь любой может убедиться в качестве кода ;)
    Alexandrc>> Исходный код «Аполлона-11» опубликован на Github
    Серокой> А зачем кнопки глагола и существительного?

    ЕМНИП, для выбора объект (noun) или действие (verb).
    Для точного ответа нужно в инструкции глянуть.
    Цитата из FAQ
    What's the deal with "verbs" and "nouns"?

    The following amusing (if not necessarily helpful) comment may be found in the source code of the keyboard and display program (otherwise known as "pinball"):

    THE FOLLOWING QUOTATION IS PROVIDED THROUGH THE COURTESY OF THE AUTHORS.

    "IT WILL BE PROVED TO THY FACE THAT THOU HAST MEN ABOUT THEE THAT
    USUALLY TALK OF A NOUN AND A VERB, AND SUCH ABOMINABLE WORDS AS NO
    CHRISTIAN EAR CAN ENDURE TO HEAR."
    HENRY 6, ACT 2, SCENE 4

    It turns out, though, that the authors' literary skills didn't quite match their programming skills, as this quote is really from Henry VI, Part 2, Act IV, Scene VII. (Thanks to Frank O'Brien of the Apollo Flight Journal and Apollo Lunar Surface Journal for this correction.) By the way, if you take it upon yourself to actually read the play to figure out the context, you may find yourself reading about "a Nowne and a Verbe" rather than "a noun and a verb".

    Original AGC hardware developer Ramón Alonso provides a little more insight: Apparently, nobody had yet arrived at any kind of software requirements for the AGC's user interface when the desire arose within the Instrumentation Laboratory to set up a demo guidance-computer unit with which to impress visitors to the lab. Of course, this demo would have to do something, if it was going to be at all impressive, and to do something it would need some software. In short order, some of the coders threw together a demo program, inventing and using the verb/noun user-interface concept (in the whimsical fashion seen in much of this code), but without any idea that the verb/noun concept would somehow survive into the flight software. As time passed, and more and more people became familiar with the demo, nobody got around to inventing an improvement for the user interface, so the coders simply built it into the flight software without any specific requirements to do so.

    However, that does not mean that the verb/noun interface was universally beloved. Ramón says that many objections were received from naysayers, such as "it's not scientific", "it's not dignified", or even "astronauts won't understand it". Even though the coders of the demo hadn't seriously intended the verb/noun interface to be used in any permanent way, it became a kind of devilish game to counter these objections with (perhaps) sophistic arguments as to why the interface was really a good one. In the end, the coders won. I don't know whether they were elated or dismayed by this victory.

    The astronauts, of course, could understand the interface, but they did not like it. Most of them really wanted an interface much more like that they had used in aircraft: i.e., lots of dials and switches. Dave Scott is the the only astronaut I'm aware of who had kind words for it (or for the AGC in general), though we are told that Jim McDivitt wasn't necessary completely hostile to it.
     

    Если кратко, то никаких особенных требований по интерфейсу не было. Поэтому для демки слепили, как в голову пришло. Никто не ждал, что это решение попадет в реальную программу полета, но так уж получилось, кодеры отстояли ;)
       51.0.2704.10651.0.2704.106
    Это сообщение редактировалось 08.07.2016 в 16:12
    RU Памятливый45 #08.07.2016 22:32  @Alexandrc#08.07.2016 15:26
    +
    -
    edit
     

    Памятливый45

    злопамятливый
    ★★★★
    Alexandrc> Теперь любой может убедиться в качестве кода

    Два источника авторства кода для Апполона.

    Приоритет пока: " Маргарет Гамильтон стоит рядом с написанным ей исходным кода бортового компьютера «Аполлона»" ©.

    Кто первый опубликовал -тому и авторство.
       11.011.0
    +
    -1
    -
    edit
     

    Yuriy

    ограниченный
    ☆★★★
    Можно проверить в эмуляторе.

    Проверка покажет правоту "опровергателей" мог, мог компьютер посадить Лунный Модуль автоматически. Значит теория "опровергателей" о том, что в севшем на Луну аппарате не было людей, находит подтверждение.

    И совершенно не подтверждается тезис, который на этом форуме постоянно выдвигают мои оппоненты, о том, что якобы ПО Лунного Модуля было ненадежно и не смогло бы посадить аппарат на Луну без людей.
       52.0.2743.11652.0.2743.116
    +
    -
    edit
     

    White Cat

    опытный

    Yuriy> И совершенно не подтверждается тезис, который на этом форуме постоянно выдвигают мои оппоненты, о том, что якобы ПО Лунного Модуля было ненадежно и не смогло бы посадить аппарат на Луну без людей.

    Тезис выдвигается совершенно другой. ПО лунного модуля не могло выбрать площадку для прилунения, что существенно повышало риск аварии. Вспомните как минимум две аварии советских АЛС. Одна разбилась, вторая легла на бок.
       55.055.0
    +
    -
    edit
     

    Yuriy

    ограниченный
    ☆★★★
    W.C.> Тезис выдвигается совершенно другой. ПО лунного модуля не могло выбрать площадку для прилунения, что существенно повышало риск аварии.

    Да, повышало. Потому вероятность аварии в схеме с фальсификацией выше.
       52.0.2743.11652.0.2743.116

    Phazeus

    опытный

    Yuriy> Можно проверить в эмуляторе.
    Yuriy> Проверка покажет правоту "опровергателей" мог, мог компьютер посадить Лунный Модуль автоматически.
    Это Ваши фантазии? Вон, ПДФ со схемами компьютера и распечатка программ есть. Валяйте :) Или все идиоты, и общеизвестный факт о том, что оно не было рассчитано на беспилотное управление - заблуждение? :) Нет, абсурд здесь в том, что некоторые плодят такие монструозные сущности, что диву даёшься, что они курят... Типа роботов-топтунов и бурильщиков, которые собирают грунт и камушки сортируют сотнями килограмм :)

    Yuriy> Значит теория "опровергателей" о том, что в севшем на Луну аппарате не было людей, находит подтверждение.
    Нет, это снова Ваша логическая ошибка. вы выдвинули гипотетический тезис, потом, не удосужившись его доказать, Вы опираетесь на этот тезис как на факт :) Вы не замечаете, что в кажущихся Вам гениальных логических цепочках ваших теорий такое сплошь и рядом? :)

    Yuriy> И совершенно не подтверждается тезис, который на этом форуме постоянно выдвигают мои оппоненты, о том, что якобы ПО Лунного Модуля было ненадежно и не смогло бы посадить аппарат на Луну без людей.
    Вы уже проверили? Можете обнародовать результаты? Заодно и показать, где там функции, которых в принципе не было и для чего использовались люди :) Без людей это ПО просто неработоспособно.
       

    Phazeus

    опытный

    Yuriy> Да, повышало. Потому вероятность аварии в схеме с фальсификацией выше.

    Проблема не в этом, а в том, что это классическая лишняя сущность, введённая без разумных оснований :)
       
    +
    -
    edit
     

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Phazeus> Валяйте :) Или все идиоты, и общеизвестный факт о том, что оно не было рассчитано на беспилотное управление - заблуждение? :)

    С незначительными доработками ПО компьютер мог посадить модуль на полном автомате. Не уподобляйтесь опроверганцам, приводите технически грамотные аргументы.
       37.037.0

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Памятливый45>> Дамочка в миниюбке написала весь код.

    Неа :) Дамочка в миниюбке была руководителем группы программистов.

    Памятливый45>> Статья посвящена объяснению того, что в этих томах не было ошибок.
    PSS> На самом деле ошибки там были и во время полетов часть из них проявились.

    Да. При первой посадке лунный модуль вполне мог разбиться, т.к. программное обеспечение начало требовать загрузки процессора более 100%
    По счастью, в центре управления на тот момент сидел один из разработчиков, который всё понял, и сказал пропустить стадию выполнения посадочной программы. Хотя, насколько я понимаю, не имел на это права.
       37.037.0
    +
    -
    edit
     

    Phazeus

    опытный

    Sandro> С незначительными доработками ПО компьютер мог посадить модуль на полном автомате. Не уподобляйтесь опроверганцам, приводите технически грамотные аргументы.

    Куда посадить???
       
    +
    -
    edit
     

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Sandro>> С незначительными доработками ПО компьютер мог посадить модуль на полном автомате. Не уподобляйтесь опроверганцам, приводите технически грамотные аргументы.
    Phazeus> Куда посадить???

    На Луну, куда же ещё. Если бы, разумеется, не "нашёл" бы склон или крупный булыжник. Штатно практически вся посадка и так была в автомате, пилоту надо было только переключать стадии и быть готовым взять посадочный модуль на ручное управление. При первой посадке, кстати, была поправка вручную чтобы сесть с перелётом — место, куда компьютер вёл модуль, вызывало подозрение.
       37.037.0
    +
    -
    edit
     

    Phazeus

    опытный

    Sandro> На Луну, куда же ещё.

    ТО есть, для выбора места посадки он не предназначался? А кроме посадки ещё были люди нужны?
       
    +
    -
    edit
     

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Sandro>> На Луну, куда же ещё.
    Phazeus> ТО есть, для выбора места посадки он не предназначался?

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

    Phazeus> А кроме посадки ещё были люди нужны?

    Кроме выхода на поверхность, имеется в виду? Само собой. Например, стыковку с орбитальным модулем автомат выполнить не мог. Всё ручками, ручками.

    Теоретически, миссию можно было бы выполнить вообще вручную, без компьютера — если бы пилот управлял модулем с компьютерной точностью, во что разработчики системы не поверили. Но на всякий случай сделали возможность полностью ручного управления.

    Что спасло Аполлон-13.
       37.037.0
    +
    -
    edit
     

    Phazeus

    опытный

    Sandro> Всё ручками, ручками.
    Вооот :)

    Sandro> Теоретически, миссию можно было бы выполнить вообще вручную, без компьютера
    А вот наоборот нет :) Точнее теоретически можно представить, но то, что было - этого не позволяло. Так ведь?
       
    +
    -
    edit
     

    Полл

    литератор
    ★★★★★
    Phazeus> А вот наоборот нет :) Точнее теоретически можно представить, но то, что было - этого не позволяло. Так ведь?
    Советские "Луны", включая "Луноходы", и вернувшаяся капсула с лунным грунтом - возражают.
       55.055.0
    RU White Cat #28.08.2017 20:42  @Полл#28.08.2017 20:39
    +
    -
    edit
     

    White Cat

    опытный

    Phazeus>> А вот наоборот нет :) Точнее теоретически можно представить, но то, что было - этого не позволяло. Так ведь?
    Полл> Советские "Луны", включая "Луноходы" и вернувшуюся капсулу с лунным грунтом - возражают.

    А три разбитые грунточерпалки?
       55.055.0
    RU Полл #28.08.2017 20:45  @White Cat#28.08.2017 20:42
    +
    -
    edit
     

    Полл

    литератор
    ★★★★★
    W.C.> А три разбитые грунточерпалки?
    Вопрос был "можно ли".
    Про потери вопроса не было. :)
       55.055.0
    +
    -
    edit
     

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Полл> Советские "Луны", включая "Луноходы" и вернувшуюся капсулу с лунным грунтом - возражают.

    Луны и тем более Луноходы не производили стыковку на орбите. На тот момент автоматическая стыковка была невозможна.
    Сейчас да, но компьютерный прогресс с тех времён колоссален.
       37.037.0
    +
    -
    edit
     

    Полл

    литератор
    ★★★★★
    Полл>> Советские "Луны", включая "Луноходы" и вернувшуюся капсулу с лунным грунтом - возражают.
    Sandro> Луны и тем более Луноходы не производили стыковку на орбите.
    "Луна" в виде капсулы с грунтом прилетела с Земли на Луну, села, выполнила научную программу, вернулась на Землю.
    Функционально, не обсуждая размер и сложность научной программы - аналог "Апполона".
    З.Ы. Ой, я в заповедник что ли забрел?!! :eek: Сорри, ушел.
       55.055.0
    Это сообщение редактировалось 28.08.2017 в 21:11
    +
    +1
    -
    edit
     

    korneyy

    координатор
    ★★☆
    Полл> З.Ы. Ой, я в заповедник что ли забрел?!! :eek: Сорри, ушел.
    Все, уже впалился. :)
       44
    +
    -
    edit
     

    Sandro
    AXT

    инженер вольнодумец
    ★☆
    Полл>>> Советские "Луны", включая "Луноходы" и вернувшуюся капсулу с лунным грунтом - возражают.
    Sandro>> Луны и тем более Луноходы не производили стыковку на орбите.
    Полл> "Луна" в виде капсулы с грунтом прилетела с Земли на Луну, села, выполнила научную программу, вернулась на Землю.
    Полл> Функционально, не обсуждая размер и сложность научной программы - аналог "Апполона".

    Нет. Ещё раз, комп Аполлона не мог исполнить всю программу в автомате. Просто не мог, у него даже датчиков нужных не было.
    Это можно было сделать только вручную. Поэтому запуск живых людей в качестве пилотов сомнения не вызывает.

    Полл> З.Ы. Ой, я в заповедник что ли забрел?!! :eek: Сорри, ушел.

    "Обознатушки-перепрятушки"? :D

    Ещё раз напишешь что-нибудь подобное, я тебя лунным опроверганцем считать буду. Это не угроза, а предупреждение.
       37.037.0

    в начало страницы | новое
     
    Поиск
    Настройки
    Твиттер сайта
    Статистика
    Рейтинг@Mail.ru