Processo de desenvolvimento usado para o código nas missões Apollo 11?

57
As missões Apollo não tinham uma tecnologia mais complicada do que uma calculadora de bolso.

Do link aqui , há um informações sobre o Apollo Guidance Computer (AGC)

The on-board Apollo Guidance Computer (AGC) was about 1 cubic foot with 2K of 16-bit RAM and 36K of hard-wired core-rope memory with copper wires threaded or not threaded through tiny magnetic cores. The 16-bit words were generally 14 bits of data (or two op-codes), 1 sign bit, and 1 parity bit. The cycle time was 11.7 micro-seconds. Programming was done in assembly language and in an interpretive language, in reverse Polish.

Então, eu encontrei um código-fonte quando pesquisei o que estava lá em cima, e notei ótimos comentários (por exemplo, TEMPORARY, I HOPE HOPE HOPE)

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

Os programas reais na espaçonave foram armazenados na memória do núcleo da corda , uma antiga tecnologia de memória feita por (literalmente) tecer um tecido / corda, onde os pedaços eram anéis físicos de material de ferrita. A memória "core" é resistente aos raios cósmicos. O estado de um bit de núcleo não mudará quando bombardeado pela radiação no espaço exterior.

O software Virtual Guollo Guidance Computer (AGC) também está no GITHUB!

Alguma parte da documentação está aqui.

Outro exemplo de código-fonte com ótimos comentários.

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

Minha pergunta aqui é esta:

  • Como as equipes estavam escrevendo esse código para torná-lo funcional, considerando as ferramentas do momento?

Porque se você compilar tanto código que foi usado na Apollo 11 ... levaria dias, até semanas. Eu duvido seriamente que os programadores daquela época deixassem tudo acontecer por acaso.

    
por Josip Ivic 09.12.2015 / 16:27
fonte

4 respostas

12

Havia um documentário adorável que estou tentando descobrir sobre John 'Jack'. Garman teve que "inventar" um "sistema operacional de multiprogramação programada com prioridade". Isso pode ter sido relacionado ao módulo lander embora. A história era que quando você estava pousando o lander, é melhor dar prioridade à orientação porque outras coisas, como a temperatura na cabine pelos próximos 15 segundos, não importavam se você batesse e queimasse. Na primeira tomada eles sobrecarregaram o computador e os alarmes começaram a acontecer porque algumas sub-rotinas não estavam sendo executadas. Havia muitos carregados, mas graças ao conceito de prioridade, que Garman previu e incorporou porque achava que era uma boa ideia, as rotinas de baixa prioridade não atrapalham a rotina de aterrissagem de maior prioridade.

Assistindo ao documentário na época, fiquei impressionado sobre como era fazer uma grande refatoração no código sem dizer à gerência e quase ser demitido porque você estava atrasado no que deveria estar trabalhando. Neste caso, no entanto, a refatoração veio à luz quando a razão dos alarmes foi investigada. (E a gerência ainda estava chateada!: -)

Alguns links:

Não, um "erro de lista de verificação" quase não inviabilizou o primeiro pouso na lua

CONTOS DO COMPUTADOR DE ORIENTAÇÃO DO MÓDULO LUNAR

Como eles construíram: o software da Apollo 11

Projeto de História Oral do Centro Espacial Johnson da NASA  Transcrição de histórico oral editada

Breve história do Programa Apollo da NASA Trecho: Cinco minutos após a queima da descida e 1.800 m acima da superfície da Lua, o computador de navegação e orientação da ML produziu os primeiros de vários alarmes de programa "1202" e "1201" inesperados. o O engenheiro de computação do Centro de Controle da Missão em Houston, Jack Garman, disse ao agente de orientação Steve Bales que era seguro continuar a descida. Esses alarmes eram indícios de "sobrecarga de executivos", o que significa que o computador de orientação não pôde concluir todas as suas tarefas em tempo real e teve que adiar algumas delas.

Recordando o 'salto gigante' Trecho: Nós sabíamos o que era e isso não deveria estar acontecendo. Mas nós projetamos um sistema que tentava se recuperar de qualquer condição de sobrecarga. Então, lembro-me de ouvir [o engenheiro de computação da NASA] Jack Garman gritando: "Vá, vá!" E eles foram. Então ouvimos Neil voar com o LEM e tentar encontrar um bom local para o touchdown. Nossa nova preocupação era a falta de combustível restante. Mas finalmente ouvimos o aviso de contato e, em seguida, "A Águia pousou".

Entrevista com Jack Garman

EDIT: Talvez este fosse o documentário: Apollo 11: The Untold Story (2006)

Elenco: John R. Garman ...
Ele mesmo - Apollo 11 Computer Engineer (como Jack Garman)

(entre outros).

Atualização: Um hacker da África do Sul apenas Resgatou o primeiro computador da NASA no espaço

    
por 16.02.2016 / 22:19
fonte
31

Se bem entendi, o processo de desenvolvimento foi a revisão por pares e a experimentação.

A equipe consistia em pessoas como "Math Doctors" - pessoas extremamente dedicadas, inteligentes, apaixonadas e detalhistas, cujas vidas eram dedicadas ao seu trabalho. Por isso, quando digo revisão por pares, quero dizer muitas revisões por pares ao longo de muitos meses (mais de um ano).

Esses desenvolvedores "executaram as simulações em suas cabeças", "depuraram o software no papel" e trabalharam em grupos com muitos desenvolvedores analisando o mesmo código várias vezes até que se convenceram de que estava correto. Havia várias equipes - cada uma trabalhando em uma parte do todo.

Meu professor de Métodos Numéricos na Universidade Estadual de Ohio (Spring '96) escreveu o código que decidiu quando iniciar um estágio do foguete de propulsão. Ele descreveu a impressão sendo do tamanho da lista telefônica (então, talvez 2,5 a 3,5 polegadas de espessura de 8,5 x 11 polegadas de papel - ele não descreveu o tamanho da fonte) do código Fortran.

Quando convencidos, eles lançaram um míssil não tripulado (foguetes tecnicamente não têm giroscópios) com um rádio a bordo que emitia um sinal sonoro em intervalos regulares. Eles ouviram os bipes até o ponto em que esperavam que o rádio tivesse impacto na lua (colidir com ela e se destruir) e parar de apitar. Eles sabiam que, se eles perdessem, o rádio continuaria a bipar muito além do tempo calculado de impacto. O impacto ocorreu 15 segundos após o tempo calculado.

Esta história anedótica é minha lembrança de uma consulta com o médico. Ele era muito velho e fazia muito tempo. Esta é minha melhor lembrança.

    
por 21.12.2015 / 08:16
fonte
14

O AGC é controlado com verbos e substantivos

O software do comando Apollo não está escrito em nenhuma sintaxe que os usuários reconheceriam hoje. Os astronautas inserem comandos numericamente, com cada número de dois dígitos representando um verbo ou um substantivo. O verbo descreveu a ação a ser executada e o substantivo especificou os dados a serem afetados pela ação do verbo.

Os astronautas detestavam a configuração de verbos e substantivos

Ramón Alonso, um dos desenvolvedores originais de hardware da AGC, disse que a interface foi inventada para impressionar os visitantes de seu laboratório, mas ficou para os voos quando ninguém desenvolveu uma interface melhor. Críticos disseram que não era "científico", e os primeiros astronautas - todos pilotos de jato de elite - preferiram mostradores e interruptores, semelhantes a um painel de controle de aviões.

"The AGC was very slow, but very reliable and very small for that time in the history of digital computers. It was the earliest to use integrated circuits."

O software como foi projetado foi construído basicamente do zero pelo MIT.

Você pode baixar e instalar o programa emulador Apollo Guidance Computer no seu computador pessoal, sem problemas. Aqui está o que parece no Mac OS X.

    
por 26.01.2016 / 17:04
fonte
7

Como praticamente todos os outros projetos de software, isso foi feito sob prazos agressivos e pressão de qualidade. Felizmente um grande arquivo de material do gerente de projetos de software Howard W. “Bill” Tindall, Jr. está disponível aqui .

Se você experimentar os memos, poderá ter uma boa noção do conflito normal entre tempo, recursos e defeitos. Vale a pena notar que o desenvolvimento ocorreu ao longo de vários anos , como o resto do projeto.

Design of the system began in the second quarter of 1961, and NASA installed a Block I version in a spacecraft on September 22, 1965. Release of the original software (named CORONA) was in January 1966, with the first flight on August 25, 1966. Less than 3 years after that, designers achieved the final program objective (http://history.nasa.gov/computers/Ch2-5.html)

Não consigo encontrar referências específicas sobre como o software foi criado, mas, dada a data, só posso presumir que muito disso foi feito em papel e caneta, com "simulações" feitas manualmente. Parece que havia um sistema para carregar programas no AGC com cartões perfurados, presumivelmente para testes "rápidos" no solo, sem a necessidade de fabricar memória de corda.

    
por 21.12.2015 / 17:39
fonte