it-swarm-eu.dev

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

Die Apollo-Missionen hatten eine Technologie, die nicht komplizierter war als ein Taschenrechner.

Unter dem Link hier finden Sie Informationen zu Apollo Guidance Computer (AGC).

Der integrierte Apollo Guidance Computer (AGC) hatte eine Größe von etwa 1 Kubikfuß mit 2 KB 16-Bit RAM und 36 KB fest verdrahtetem Kernseilspeicher mit Kupferdrähten, die durch winzige Gewinde geführt wurden oder nicht) Magnetkerne. Die 16-Bit-Wörter bestanden im Allgemeinen aus 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 Interpretation Sprache, in umgekehrter polnischer Sprache.

Ich bin also auf einen Quellcode gestoßen, als ich nachgeforscht habe, was dort oben war, und ich 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 eigentlichen Programme im Raumschiff wurden in Kernseilspeicher gespeichert, einer alten Speichertechnologie, die durch (buchstäblich) Weben eines Gewebes/Seils hergestellt wurde, wobei die Bits physische Ringe aus Ferritmaterial waren. "Kern" -Speicher ist resistent gegen kosmische Strahlung. Der Zustand eines Kernbits ändert sich nicht, wenn er mit Strahlung im Weltraum bombardiert wird.

AGC-Software (Virtual Apollo Guidance Computer) ist auch auf GITHUB verfügbar!

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 hier ist folgende:

  • Wie konnten die Teams so viel Code schreiben, um ihn angesichts der damaligen Tools funktionsfähig zu machen?

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 Programmierer damals alles dem Zufall überlassen haben.

57
Josip Ivic

Es gab eine schöne Dokumentation, die ich über John 'Jack' Garman verfolgen wollte, der ein "vorrangig geplantes Multiprogramming-Betriebssystem" "erfinden" musste. Dies könnte jedoch mit dem Lander-Modul zusammenhängen. Die Geschichte war, dass Sie bei der Landung des Landers der Führung Vorrang einräumen 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 verbrannten. Beim ersten Schuss wurde der Computer überlastet, und es wurden Alarme ausgelöst, da einige Unterprogramme nicht ausgeführt wurden. Es wurden zu viele geladen, aber dank des Prioritätskonzepts, das Garman vorausgesehen und eingebaut hat, weil er es für eine gute Idee hielt, haben die Routinen mit niedriger Priorität die Landeroutine mit höherer Priorität nicht beeinträchtigt.

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

Einige Links:

Nein, ein „Checklistenfehler“ hat die erste Mondlandung nicht fast entgleist

GESCHICHTEN VOM LUNAR MODULE GUIDANCE COMPUTER

Wie sie es gebaut haben: Die Software von Apollo 11

Oral History Project des NASA Johnson Space Center, bearbeitetes Oral History Transcript

Kurze Geschichte des Apollo-Programms der NASA Auszug: Fünf Minuten nach dem Abstieg und 1.800 m über der Mondoberfläche produzierte der LM-Navigations- und Leitcomputer den ersten von mehreren unerwarteten "1202" und Programmalarme "1201". Der Computeringenieur im Mission Control Center in Houston, Jack Garman, sagte dem Führungsbeamten Steve Bales, es sei sicher, den Abstieg fortzusetzen. Diese Alarme waren Anzeichen für "Executive Overflows", was bedeutete, dass der Führungscomputer nicht alle seine Aufgaben in Echtzeit erledigen konnte und einige von ihnen verschieben musste.

nter Hinweis auf den 'Riesensprung' Auszug: Wir wussten, was das war und dass es nicht passieren sollte. Wir hatten jedoch ein System entwickelt, das sich bemühte, sich von Überlastungsbedingungen zu erholen. Ich erinnere mich also, wie Jack Garman [NASA-Computeringenieur] rief: "Los, los!" Und weiter gingen sie. Dann hörten wir zu, wie Neil das LEM weiter flog und versuchte, einen guten Ort zum Aufsetzen zu finden. Unsere neue Sorge war der verbleibende Kraftstoffmangel. Aber schließlich hörten wir die Kontaktbenachrichtigung 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 ...
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

14
K.Nicholas

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

Das Team bestand aus Leuten wie "Math Doctors" - äußerst 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 davon überzeugt waren, dass er korrekt war. Es gab mehrere Teams, die jeweils an einem Teil des Ganzen arbeiteten.

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

Als 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 stoßen und sich selbst zerstören) und aufhören würden zu piepen. Sie wussten, dass das Radio lange nach der berechneten Aufprallzeit piepsen würde, wenn sie es versäumten. Der Aufprall erfolgte 15 Sekunden nach der berechneten Zeit.

Diese zugegebenermaßen anekdotische Geschichte sind meine Erinnerungen an einen Bürobesuch beim Arzt. Er war sehr alt und es ist lange her. Dies ist meine beste Erinnerung.

32
Lyle S.

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 Substantiv gab die Daten an, die von der Aktion des Verbs betroffen sein sollen.

Astronauten hassten das Verb- und Substantiv-Setup

Ramón Alonso, einer der ursprünglichen Hardware-Entwickler von AGC, sagte, die Schnittstelle sei erfunden worden, um die Besucher ihres Labors zu beeindrucken, blieb aber bei den Flügen, als niemand eine bessere Schnittstelle entwickelte. Kritiker sagten, es sei nicht "wissenschaftlich", und die ersten Astronauten - alle Elite-Jet-Piloten - bevorzugten Zifferblätter und Schalter, ähnlich einem Flugzeugbedienfeld.

"Die AGC war für diese Zeit in der Geschichte der digitalen Computer sehr langsam, aber sehr zuverlässig und sehr klein. Es war die früheste Verwendung integrierter Schaltkreise."

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

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

(enter image description here

15
Josip Ivic

Wie so ziemlich jedes andere Softwareprojekt wurde es unter aggressivem Termin- und Qualitätsdruck durchgeführt. Glücklicherweise ist hier ein großes Archiv mit Material von Software-Projektmanager Howard W. "Bill" Tindall, Jr. verfügbar .

Wenn Sie die Memos testen, können Sie einen sehr guten Eindruck vom normalen Konflikt zwischen Zeit, Funktionen und Fehlern bekommen. 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 ersten Flug 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 spezifischen Hinweise darauf finden, wie die Software erstellt wurde, aber angesichts des Datums kann ich nur davon ausgehen, dass ein Großteil davon auf Stift und Papier erstellt wurde, wobei "Simulationen" manuell durchgeführt wurden. Es scheint, dass es ein System zum Laden von Programmen mit Lochkarten in die AGC gab, vermutlich für "schnelle" Tests am Boden, ohne dass ein Seilspeicher hergestellt werden musste.

8
pjc50