Entwicklungsprozess für den Code in Apollo 11-Missionen?


57

Die Apollo-Missionen verfügten über eine Technologie, die nicht komplizierter war als ein Taschenrechner.

Von Link hier gibt es eine Information über Apollo Guidance Computer (AGC)

Der an Bord befindliche Apollo Guidance Computer (AGC) wies eine Größe von etwa 1 Kubikfuß mit 2 KByte 16-Bit-RAM und 36 KByte festverdrahtetem Kernseilspeicher mit Kupferdrähten auf, die durch winzige Magnetkerne gefädelt waren oder nicht. Die 16-Bit-Wörter waren im Allgemeinen 14 Datenbits (oder zwei Operationscodes), 1 Vorzeichenbit und 1 Paritätsbit. Die Zykluszeit betrug 11,7 Mikrosekunden. Die Programmierung erfolgte in Assemblersprache und in einer interpretativen Sprache, in umgekehrter polnischer Sprache.

Ich bin also auf einen Quellcode gestoßen, als ich nachforschte, was dort oben war, und habe großartige Kommentare bemerkt (z. B. 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

Die tatsächlichen Programme im Raumschiff waren im Kernseilspeicher gespeichert , einer alten Speichertechnologie, die durch (buchstäblich) Weben eines Gewebes / Seils hergestellt wurde, wobei die Bits physikalische Ringe aus Ferritmaterial waren. "Kern" -Speicher ist resistent gegen kosmische Strahlung. Der Zustand eines Kernbits ändert sich nicht, wenn es durch Strahlung im Weltraum bombardiert wird.

Die Virtual Apollo Guidance Computer (AGC) Software ist auch auf GITHUB!

Ein Teil der Dokumentation ist hier.

Ein weiteres Beispiel für Quellcode mit tollen Kommentaren.

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

Meine Frage lautet hier:

  • Wie konnten die Teams so viel Code schreiben, damit er mit den damaligen Tools funktioniert?

Denn wenn Sie so viel Code kompilieren, der in Apollo 11 verwendet wurde, würde es Tage oder sogar Wochen dauern. Ich bezweifle ernsthaft, dass die Programmierer damals alles dem Zufall überlassen haben.


4
Ich hatte eine ziemlich wichtige Bearbeitung, um dies hoffentlich mehr zum Thema zu machen. Ich denke, dass es eine faszinierende Frage ist und ich hoffe, dass die Leute in der Lage sind, sie effektiv zu beantworten!
Enderland

3
Lesen Sie Hacker und The Mythical Man Month . Es ist ziemlich viel Material darin - ich bin nicht sicher, ob es in eine Antwort hier hineinpasst.

2
Von den Fragentiteln im Stil "Tag - Frage" wird in Stack Exchange abgeraten. Bitte belassen Sie den Titel wie er ist.

4
Es gab keinen Kompilierungs- / Fixierungszyklus, wie von Ihrer Frage vorgeschlagen. Sie haben keinen Seilspeicher erstellt, ihn getestet und dann wiederholt, wenn er nicht funktioniert hat. Sie haben es beim ersten Mal richtig gemacht.
Robert Harvey

7
@RobertHarvey du HOPE HOPE HOPEbekommst es gleich richtig hin.

Antworten:


13

Es gab einen schönen Dokumentarfilm über John 'Jack' Garman, der ein "vorrangig geplantes Multiprogramming-Betriebssystem" "erfinden" musste. Dies kann jedoch mit dem Landermodul zusammenhängen. Die Geschichte war, dass Sie bei der Landung auf dem Lander der Führung den Vorrang geben sollten, da andere Dinge, wie die Temperatur in der Kabine für die nächsten 15 Sekunden, keine Rolle spielten, wenn Sie abstürzten und sich verbrannten. Bei der ersten Aufnahme überlasteten sie den Computer und es traten Alarme auf, weil einige Unterprogramme nicht ausgeführt wurden. Es waren zu viele geladen, aber dank des Prioritätskonzepts, das Garman vorausgesehen und eingebaut hatte, weil er es für eine gute Idee hielt, beeinträchtigten die Routinen mit niedriger Priorität die Landeroutine mit höherer Priorität nicht.

Als ich mir damals die Dokumentation ansah, war ich beeindruckt, wie es war, den Code grundlegend umzugestalten, ohne das Management zu informieren, und fast entlassen zu werden, weil Sie zu spät dran waren, woran Sie eigentlich arbeiten sollten. In diesem Fall kam das Refactoring jedoch zum Vorschein, als der Grund für die Alarme untersucht wurde. (Und das Management war noch sauer! :-)

Einige Links:

Nein, ein „Checklistenfehler“ hat die erste Mondlandung nicht beinahe zum Erliegen gebracht

GESCHICHTEN VOM LUNAR MODULE GUIDANCE COMPUTER

Wie sie es gebaut haben: Die Software von Apollo 11

NASA Johnson Space Center Oral History-Projekt Herausgegebenes Oral History-Transkript

Kurze Geschichte des Apollo-Programms der NASA - Auszug: Fünf Minuten nach dem Abstieg und 1.800 m über der Mondoberfläche löste der Navigations- und Navigationscomputer LM den ersten von mehreren unerwarteten Programmalarmen "1202" und "1201" aus. Jack Garman, Computeringenieur am Mission Control Center in Houston, sagte dem Führungsoffizier Steve Bales, es sei sicher, den Abstieg fortzusetzen. Bei diesen Alarmen handelte es sich um Anzeichen für einen "Executive Overflow", was bedeutete, dass der Leitcomputer nicht alle seine Aufgaben in Echtzeit ausführen konnte und einige davon verschieben musste.

Rückblick auf den 'Giant Leap'- Auszug: Wir wussten, was das war und dass es nicht passieren sollte. Wir hatten jedoch ein System entwickelt, das sich bemühte, sich von Überlastungszuständen zu erholen. Also erinnere ich mich, wie Jack Garman [NASA-Computertechniker] rief: "Los, los!" Und weiter gingen sie. Dann hörten wir zu, wie Neil das LEM weiter flog und versuchte, einen guten Platz zum Aufsetzen zu finden. Unsere neue Sorge war der Treibstoffmangel. Aber schließlich hörten wir die Kontaktmeldung und dann "Der Adler ist gelandet."

Jack Garman Interview

EDIT: Vielleicht war dies der Dokumentarfilm: Apollo 11: The Untold Story (2006)

Darsteller: John R. Garman ... als er
selbst - Apollo 11 Computer Engineer (als Jack Garman)

(Unter anderen).

Update: Ein Hacker aus Südafrika hat gerade den ersten NASA-Computer im Weltraum gerettet


Ich wusste, dass diese Geschichte vertraut klang! Im Abschnitt "Apollo 11" finden Sie weitere
Informationen zu

31

Wenn ich das richtig verstehe, war der Entwicklungsprozess Peer Review und Experimentieren.

Das Team bestand aus Leuten wie "Math Doctors" - extrem engagierten, intelligenten, leidenschaftlichen, detailorientierten Leuten, deren Leben ihrer Arbeit gewidmet war. Wenn ich also Peer Review sage, meine ich viele Peer Reviews über viele Monate (mehr als ein Jahr).

Diese Entwickler "führten die Simulationen in ihren Köpfen durch", "debuggten die Software auf Papier" und arbeiteten in Gruppen mit vielen Entwicklern, die immer wieder denselben Code betrachteten, bis sie überzeugt waren, dass er korrekt war. Es gab mehrere Teams - jedes arbeitete an einem Teil des Ganzen.

Mein Professor für Numerische Methoden an der Ohio State University (Frühjahr '96) schrieb den Code, der entschied, wann die Booster-Rakete gestartet werden sollte. Er beschrieb den Ausdruck als die Größe des Telefonbuchs (also vielleicht 2,5 bis 3,5 Zoll dickes Papier von 8,5 x 11 Zoll - die Schriftgröße beschrieb er nicht) des Fortran-Codes.

Wenn sie überzeugt waren, starteten sie eine unbemannte Rakete (Raketen haben technisch gesehen keine Gyroskope) mit einem Radio an Bord, das in regelmäßigen Abständen einen Piepton ausstrahlte. Sie hörten die Pieptöne bis zu dem Punkt, an dem sie erwarteten, dass das Radio den Mond treffen würde (gegen ihn prallen und sich selbst zerstören) und hörten auf zu piepen. Sie wussten, dass das Radio nach der berechneten Aufprallzeit noch lange piepsen würde, wenn sie es versäumten. Der Aufprall erfolgte 15 Sekunden nach der berechneten Zeit.

Diese zugegebenermaßen ungewöhnliche Geschichte ist meine Erinnerung an einen Arztbesuch. Er war sehr alt und es ist lange her. Dies ist meine beste Erinnerung.


2
Er beschrieb den Ausdruck als die Größe des Telefonbuchs (also vielleicht 2,5 bis 3,5 Zoll dick auf 8,5 x 11 Zoll Papier). Im Allgemeinen wurde der Code im Querformat mit etwa 55 bis 60 Zeilen pro Seite gedruckt. Ein Ries (100 Blatt) Der Ausdruck Papier ist etwa 1,75 Zoll dick.
Gilbert Le Blanc

@ GilbertLeBlanc Ein Ries ist in der Regel 500 Blatt. (manchmal 480)
Joshp

@joshp: Du hast recht. 500 Blatt Druckpapier sind ungefähr 1,75 Zoll dick.
Gilbert Le Blanc

15

Die AGC wird mit Verben und Substantiven gesteuert

Die Apollo-Befehlssoftware ist in keiner Syntax geschrieben, die Benutzer heute erkennen würden. Astronauten geben Befehle numerisch ein, wobei jede zweistellige Zahl ein Verb oder ein Substantiv darstellt. Das Verb beschrieb die auszuführende Aktion, und das Nomen spezifizierte die Daten, die von der Aktion des Verbs betroffen sein sollen.

Astronauten hassten das Verb- und Nomen-Setup

Ramón Alonso, einer der ursprünglichen AGC-Hardware-Entwickler, sagte, die Benutzeroberfläche sei erfunden worden, um die Besucher in ihrem Labor zu beeindrucken. Er sei jedoch auf den Flügen geblieben, als niemand eine bessere Benutzeroberfläche entwickelt habe. Kritiker sagten, es sei nicht "wissenschaftlich", und die ersten Astronauten - alles Elite-Jet-Piloten - bevorzugten Wählscheiben und Schalter, ähnlich wie bei einer Flugzeugsteuertafel.

"Die AGC war für diese Zeit in der Geschichte der digitalen Computer sehr langsam, aber sehr zuverlässig und sehr klein. Es war das früheste Mal, dass integrierte Schaltkreise verwendet wurden."

Die Software, wie sie entworfen wurde, wurde vom MIT von Grund auf neu erstellt.

Sie können das Apollo Guidance Computer-Emulatorprogramm problemlos auf Ihren PC herunterladen und installieren. So sieht es unter Mac OS X aus.

Bildbeschreibung hier eingeben


8

Wie so ziemlich jedes andere Softwareprojekt wurde es unter aggressivem Termin- und Qualitätsdruck durchgeführt. Glücklicherweise steht hier ein großes Archiv von Material des Software-Projektmanagers Howard W. "Bill" Tindall, Jr. zur Verfügung .

Wenn Sie die Memos probieren, können Sie den normalen Konflikt zwischen Zeit, Merkmalen und Fehlern sehr gut nachvollziehen. Es ist erwähnenswert, dass die Entwicklung wie der Rest des Projekts über mehrere Jahre verlief .

Der Entwurf des Systems begann im zweiten Quartal 1961, und die NASA installierte am 22. September 1965 eine Block-I-Version in einem Raumschiff. Die Veröffentlichung der ursprünglichen Software (CORONA) erfolgte im Januar 1966 mit dem Erstflug am 25. August. 1966. Weniger als drei Jahre später erreichten die Designer das endgültige Programmziel ( http://history.nasa.gov/computers/Ch2-5.html ).

Ich kann keine konkreten Verweise auf die Erstellung der Software finden, kann aber angesichts des Datums nur davon ausgehen, dass ein Großteil davon auf Stift und Papier erstellt wurde, wobei "Simulationen" manuell durchgeführt wurden. Anscheinend gab es ein System zum Laden von Programmen mit Lochkarten in die AGC, vermutlich für "schnelle" Tests vor Ort, ohne dass ein Seilspeicher hergestellt werden musste.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.