50 Jahre Mondlandung: Code der Apollo 11 auf GitHub
Burn, Baby, Burn. AGC-Namenskonventionen amüsieren
Anlässlich des fünfzigsten Jahrestages der Mondlandung erhält der auf GitHub verfügbare Source-Code des Apollo-11-Computers verstärkt Aufmerksamkeit. Auf Reddit tauschen sich Entwickler aktuell in humorvoller Weise miteinander aus. Dabei stehen die lustigen und bisweilen schrägen Kommentare, die das Entwicklerteam um die mittlerweile 82-jährige Margaret Hamilton in den Code eingebaut hatte, besonders im Fokus.
So gaben die Entwickler etwa der Start-Routine den Namen BURN_BABY_BURN—MASTER_IGNITION_ROUTINE. An anderen Stellen des Codes finden sich verballhornte Shakespeare-Zitate oder Belege dafür, dass temporäre Funktionen (TEMPORARY, I HOPE HOPE HOPE) letztlich doch im endgültigen Code geblieben sind.
Apollo 11: Code schon seit 2003 transkribiert
Schon 2016 machte der ehemalige Nasa-Mitarbeiter Chris Garry der Entwicklergemeinde eine Freude und stellte den kompletten Source-Code des Apollo 11 Guidance Computers (AGC) bei GitHub online. Seit 2003 konnten Entwickler bereits Zugriff auf den Code erhalten, mussten dazu aber Kontakt zur Nasa aufnehmen. Mit der Verfügbarkeit auf GitHub wurde der Steuerungscode ganz unkompliziert der breiten Öffentlichkeit zugänglich gemacht.
Die Arbeiten am AGC gelten als Beginn des „Software-Engineering“ als Begriff. Die damals 32 Jahre alte MIT-Mitarbeiterin Margaret Hamilton prägte die Bezeichnung, um zu verdeutlichen, dass das Entwickeln von Software nicht weniger bedeutend als das Entwickeln eines Raketenantriebs ist. In den Sechzigern des vergangenen Jahrhunderts wurden Softwareentwickler noch nicht sonderlich ernst genommen.
Einfache Steuerung mit komplizierter Speicherung
Die Steuerung des AGC basierte auf einfachen Verben und Substantiven, die die Astronauten über spezielle Tastaturen auch mit schweren Handschuhen noch sicher eintippen konnten. Das erinnert entfernt an Überlegungen, die auch heutige UX-Designer anstellen.
Gespeichert war die Software seinerzeit in einem System, das als Core Rope Memory, zu deutsch „Fädelspeicher“, bezeichnet wurde. Hierbei handelte es sich um eine rein physikalische Methode der Speicherung.
Der Code, geschrieben in der damals gebräuchlichen Sprache Assembly, wurde mit Drähten zu einem lesbaren System vernäht. Dazu musste der Code in seine Nullen und Einsen zerlegt werden. Sollte der Computer eine Eins auslesen, wurde der Draht durch einen Ferritkern gefädelt, sollte er Null bedeuten, ging er am Kern vorbei. Um die insgesamt 73 Kilobyte an Daten aufzufädeln, war monatelange manuelle Arbeit mit Spezialmaschinen erforderlich.
Konzepte aus dem AGC noch heute in Gebrauch
Da es bei der Steuerungssoftware für die Apollo 11 im Zweifel um Leben oder Tod ging, erdachten die Entwickler Konzepte, die auch heute noch zu den Best Practices der Programmierung gehören. So führten sie etwa das Konzept der Priorisierung ein. Damit konnten weniger wichtige Prozesse zum Vorteil wichtigerer Prozesse einfach abgebrochen werden, um Rechenkapazitäten freizumachen.
Die Mondlandung der Apollo 11 ist ein faszinierendes Kapitel in der Geschichte der menschlichen Innovationskraft. Das bezieht sich nicht nur auf die für damalige Verhältnisse spektakuläre Software, sondern betrifft jeden Aspekt dieses Projekts. Es lohnt sich, einmal die Geschichten aus der damaligen Zeit zu lesen. Mir blieb dabei vor Staunen so manches Mal der Mund offen stehen.
Dieter Petereit
Zum Weiterlesen: Zum 50. Jubiläum der Mondlandung: Computer der Apollo-Rakete landet auf Kickstarter
Spannendes Kapitel der Menschheit, ich würde mir den Code gerne ansehen, geht das auch in Notepad++ ?