Processus de développement utilisé pour le code sur les missions Apollo 11?

57

Les missions Apollo n’avaient pas la technologie plus compliquée qu’une calculatrice de poche.

De lien ici , il y a une information sur Apollo Guidance Computer (AGC)

L’ordinateur de bord Apollo (AGC) embarqué mesurait environ 1 pied cube avec 2K de RAM 16 bits et 36K de mémoire cœur-câble câblée avec des fils de cuivre enfilés ou non dans de minuscules noyaux magnétiques. Les mots de 16 bits comprenaient généralement 14 bits de données (ou deux codes d'opération), 1 bit de signe et 1 bit de parité. Le temps de cycle était de 11,7 microsecondes. La programmation était faite en langage d'assemblage et dans un langage d'interprétation, en polonais inversé.

Donc, je suis tombé sur un code source lorsque j'ai fait des recherches sur ce qui se trouvait là-bas et j'ai remarqué d'excellents commentaires (par exemple, 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

Les programmes réels de l’engin spatial étaient stockés dans la mémoire principale du câble , une technologie de mémoire ancienne réalisée par le tissage (littéral) d’un tissu / câble, où les bits étaient des anneaux physiques en ferrite. La mémoire "centrale" résiste aux rayons cosmiques. L'état d'un trépan ne changera pas lorsqu'il est bombardé par des radiations dans l'espace extra-atmosphérique.

Le logiciel AGC (Virtual Apollo Guidance Computer) est également sur GITHUB!

Une partie de la documentation est ici.

Un autre exemple de code source avec de bons commentaires.

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

Ma question est la suivante:

  • Comment les équipes qui ont écrit ce code ont-elles été capables de le rendre fonctionnel avec les outils de l'époque?

Parce que si vous compilez autant de code utilisé sur Apollo 11 ... cela prendrait des jours, voire des semaines. Je doute sérieusement que les programmeurs à l'époque aient laissé tout pour arriver par hasard.

Josip Ivic
la source
4
J'ai eu une édition assez importante afin de rendre cela, espérons-le, plus sur le sujet. Je pense que c'est une question fascinante et j'espère que les gens pourront y répondre efficacement!
enderland
3
Lire les pirates et le mois de l'homme mythique . Il y a pas mal de matériel dans ce document - je ne suis pas sûr que cela rentre dans une réponse ici.
2
Les titres de question de style "Tag - Question" sont déconseillés sur Stack Exchange. Veuillez laisser le titre tel quel.
4
Il n'y a pas eu de cycle de compilation / correction, comme le suggère votre question. Vous n'avez pas créé de mémoire de corde, testez-la puis refaites-la si cela ne fonctionne pas; vous avez bien compris la première fois.
Robert Harvey
7
@RobertHarvey vous HOPE HOPE HOPEvous en sortez bien la première fois.

Réponses:

13

J'essaie de poursuivre un documentaire charmant sur John 'Jack' Garman a dû "inventer" un "système d'exploitation multiprogrammé à priorités programmées". Cela a peut-être été lié au module d'atterrisseur. L’histoire était que, lors de l’atterrissage de l’atterrisseur, il était préférable d’accorder la priorité à l’orientation car d’autres facteurs, comme la température dans la cabine pendant les 15 prochaines secondes, importaient peu si vous tombiez sur un véhicule et brûliez. Sur le premier coup, ils ont surchargé l'ordinateur et des alarmes ont commencé à se déclencher car certaines sous-routines n'étaient pas exécutées. Il y avait trop de véhicules chargés, mais grâce au concept de priorité que Garman avait prévu et intégré parce qu'il pensait que c'était une bonne idée, les routines à faible priorité ne ralentissaient pas la routine d'atterrissage à priorité élevée.

En regardant le documentaire à l’époque, j’ai été frappé par le fait que c’était comme faire une refactorisation majeure du code sans le dire à la direction et presque me faire virer parce que vous étiez en retard sur ce sur quoi vous étiez censé travailler. Dans ce cas, toutefois, la refactorisation a été révélée lors de la recherche du motif des alarmes. (Et la direction était toujours énervée! :-)

Quelques liens:

Non, une "erreur de la liste de contrôle" n'a pas failli faire dérailler le premier atterrissage sur la lune

CONTES DE L'ORDINATEUR DE MODULES LUNAIRES

Comment ils l'ont construit: le logiciel d'Apollo 11

Projet d'histoire orale du centre spatial Johnson de la NASA

Bref historique du programme Apollo de la NASA Extrait: Cinq minutes après le début de la descente et à 1 800 m au-dessus de la surface de la Lune, l’ordinateur de navigation et de guidage LM a déclenché la première de plusieurs alarmes de programme inattendues "1202" et "1201". L'ingénieur informaticien du centre de contrôle de la mission à Houston, Jack Garman, a déclaré à l'agent d'orientation Steve Bales qu'il était prudent de poursuivre la descente. Ces alarmes indiquaient des "dépassements de capacité", ce qui signifiait que l'ordinateur de guidage ne pouvait pas accomplir toutes ses tâches en temps réel et devait en retarder certaines.

Rappelez-vous l' extrait du «bond de géant» : nous savions ce que c'était et cela ne devrait pas se produire. Mais nous avions conçu un système qui s'efforçait de récupérer des conditions de surcharge. Je me souviens donc avoir entendu Jack Garman [ingénieur informaticien de la NASA] crier: «Allez, va! Et ils sont allés. Ensuite, nous avons écouté Neil piloter le LEM et essayer de trouver un bon endroit pour le touché. Notre nouvelle inquiétude était le manque de carburant restant. Mais finalement, nous avons entendu la notification de contact et ensuite, "L'Aigle a atterri."

Entretien de Jack Garman

EDIT: Peut-être que c'était le documentaire: Apollo 11: The Untold Story (2006)

Casting: John R. Garman ...
Lui-meme - Apollo 11 Ingénieur informaticien (comme Jack Garman)

(Entre autres).

Mise à jour: un pirate informatique d'Afrique du Sud vient de sauver le premier ordinateur de la NASA dans l'espace

K.Nicholas
la source
Je savais que cette histoire me semblait familière! La section "Apollo 11" contient plus d'informations sur cette histoire à l'
adresse
31

Si je comprends bien, le processus de développement était une revue par les pairs et une expérimentation.

L'équipe était composée de personnes comme "Math Doctors" - des gens extrêmement dévoués, intelligents, passionnés, soucieux du détail, dont la vie était consacrée à leur travail. Ainsi, lorsque je parle d’évaluation par les pairs, j’entends beaucoup d’évaluations par les pairs au cours de nombreux mois (plus d’un an).

Ces développeurs "ont exécuté les simulations dans leur tête", "ont débogué le logiciel sur papier" et ont travaillé en groupes avec de nombreux développeurs examinant le même code encore et encore jusqu'à ce qu'ils soient convaincus qu'il était correct. Il y avait plusieurs équipes, chacune travaillant sur une partie du tout.

Mon professeur de méthodes numériques à l'Ohio State University (printemps 1996) a écrit le code qui a décidé de lancer une scène de la fusée de rappel. Il a décrit l'imprimé comme étant la taille de l'annuaire téléphonique (donc, peut-être de 2,5 à 3,5 pouces d'épaisseur de papier 8,5 x 11 pouces - il n'a pas décrit la taille de la police) de code Fortran.

Une fois convaincus, ils ont lancé un missile sans équipage (les fusées n’ont techniquement pas de gyroscope) avec une radio à bord émettant un bip sonore à intervalles réguliers. Ils ont écouté les bips jusqu'au point où ils s'attendaient à ce que la radio ait un impact sur la lune (s'écrase sur elle-même et se détruise) et arrête les bips. Ils savaient que s'ils manquaient, la radio continuerait à émettre des bips bien au-delà de l'heure calculée de l'impact. L'impact s'est produit 15 secondes après l'heure calculée.

Cette histoire admettablement anecdotique est ce que je me souviens d'une visite de bureau chez le médecin. Il était très vieux et c'était il y a longtemps. C'est mon meilleur souvenir.

Lyle S.
la source
2
Il a décrit l'impression comme étant la taille de l'annuaire téléphonique (donc, peut-être de 2,5 à 3,5 pouces d'épaisseur de papier de 8,5 x 11 pouces. En général, le code était imprimé en mode paysage avec environ 55 à 60 lignes par page. Une feuille de papier (100 feuilles) de papier d'impression est d'environ 1,75 pouces d'épaisseur.
Gilbert Le Blanc
@GilbertLeBlanc Une ream est généralement de 500 feuilles. (parfois 480)
Joshp
@ joshp: Vous avez raison. 500 feuilles de papier d'impression ont une épaisseur d'environ 1,75 pouce.
Gilbert Le Blanc
15

Le CAG est contrôlé avec des verbes et des noms

Le logiciel de commande Apollo n’est écrit dans aucune syntaxe que les utilisateurs reconnaissent aujourd’hui. Les astronautes saisissent les commandes numériquement, chaque nombre à deux chiffres représentant un verbe ou un nom. Le verbe décrivait l'action à exécuter et le nom spécifiait les données à affecter par l'action du verbe.

Les astronautes ont détesté la configuration du verbe et du nom

Ramón Alonso, l'un des développeurs de matériel d'origine de l'AGC, a déclaré que l'interface avait été inventée pour impressionner les visiteurs de leur laboratoire, mais qu'elle restait bloquée pendant les vols alors que personne ne développait une meilleure interface. Les critiques ont affirmé que ce n'était pas "scientifique" et que les premiers astronautes - tous des pilotes d'avion à réaction d'élite - ont préféré des cadrans et des commutateurs similaires à ceux d'un panneau de commande d'avion.

"Le CAG était très lent, mais très fiable et très petit pour l’époque des ordinateurs numériques. C’était le premier à utiliser des circuits intégrés."

Le logiciel tel qu'il a été conçu a été construit à partir de rien par le MIT.

Vous pouvez télécharger et installer le programme d'émulateur Apollo Guidance Computer sur votre ordinateur personnel, sans problème. Voici à quoi cela ressemble sur Mac OS X.

entrez la description de l'image ici

Josip Ivic
la source
8

Comme à peu près tous les autres projets logiciels, les délais et la qualité demandés ont été sévères. Heureusement, une vaste archive de documents du gestionnaire de projet logiciel Howard W. «Bill» Tindall, Jr. est disponible ici .

Si vous échantillonnez les mémos, vous pouvez avoir une très bonne idée du conflit normal entre le temps, les fonctionnalités et les défauts. Il convient de noter que le développement a duré plusieurs années, comme le reste du projet.

La conception du système a débuté au deuxième trimestre de 1961 et la NASA a installé une version Block I dans un engin spatial le 22 septembre 1965. Le logiciel original (appelé CORONA) a été lancé en janvier 1966, le premier vol ayant eu lieu le 25 août. 1966. Moins de trois ans après cela, les concepteurs ont atteint l'objectif final du programme ( http://history.nasa.gov/computers/Ch2-5.html ).

Je ne trouve pas de références spécifiques à la manière dont le logiciel a été créé, mais compte tenu de la date, je ne peux que supposer que cela a été fait en grande partie sur papier et sur papier, avec des "simulations" effectuées manuellement. Il semble qu’il existait un système de chargement de programmes dans le CAG avec des cartes perforées, vraisemblablement pour des tests "rapides" sur le terrain sans qu'il soit nécessaire de fabriquer une mémoire de câble.

pjc50
la source