Zusammenfassung

  • Coding for A.R.C. von Andrew D. Booth und Kathleen H. V. Britten stellte 1947 eine symbolische Arbeitsebene zwischen mathematische Planung und 20-Bit-Befehle. Der Bericht ist ein früher Meilenstein der Assemblersprache, aber kein Beleg für eine unbestrittene Einzelerfindung oder den ersten lauffähigen Assembler.
  • Die Umsetzung in gültige Operationscodes, Adressen und Folgen verringerte Übertragungsfehler. Sie konnte weder die Wahl des Algorithmus noch die Eignung der Eingaben oder die Verlässlichkeit des Ergebnisses beweisen.

Der Befehl kannte nur seine Felder

Ein ARC-Befehl verteilte zwanzig Bits auf drei Aufgaben. Acht bezeichneten eine Speicherstelle, sieben eine Sequenz und fünf die Operation. Stand eine Zahl im falschen Feld, erkannte die Maschine keinen guten Vorsatz. Sie führte einen anderen Befehl aus.

Booth und Britten zerlegten deshalb die Programmierarbeit. Auf die mathematische Formulierung folgte ein schematischer Code. Danach wurden Speicherbereiche vergeben, Steuerbefehle geordnet und die detaillierten Maschinenwörter festgelegt. Kurze Zeichen verwiesen auf eine Tabelle numerischer Operationscodes.

Diese Schichtung schuf Prüfpunkte. Ein Verfahren ließ sich besprechen, bevor jemand Adressen zählte. Verzweigungen und Schleifen konnten sichtbar werden, ehe jedes Bit feststand. Zuletzt musste sich jedes Symbol dennoch in der konkreten Architektur einlösen. Lesbarkeit ersetzte die Maschine nicht; sie machte den Weg zu ihr nachvollziehbar.

Im Vorwort steht noch eine zweite Absicht. ARC sollte denselben Code verwenden wie die geplante elektronische Maschine. Bereits codierte Aufgaben konnten übertragen werden, und Erfahrungen mit dem Relaisrechner sollten Änderungen am Nachfolger anregen. Das war gezielte Kompatibilität zwischen verwandten Entwürfen, keine allgemeine Maschinenunabhängigkeit.

Anerkennung ohne den Mythos der Einzelperson

Das Titelblatt nennt Andrew D. Booth und Kathleen H. V. Britten. Kathleen trug den Namen Booth damals noch nicht. Ihre Arbeit sichtbar zu machen, verlangt keine Tilgung des Mitautors.

Auch die Methode hat eine ausdrücklich genannte Vorgeschichte. Booth und Britten übernahmen das Planungsverfahren von Herman Goldstine und John von Neumann. Deren IAS-Bericht verstand Codierung als Entwurf eines dynamischen Kontrollablaufs. Ein gespeichertes Programm konnte springen, Abschnitte wiederholen und Zustände verändern, die seinen weiteren Weg bestimmten. Flussdiagramme waren deshalb Planungswerkzeuge und nicht bloß nachträgliche Illustrationen.

Am Rechner arbeiteten ebenfalls mehrere Menschen. Birkbecks Institutionsgeschichte benennt Kathleen Britten, Xenia Sweeting und Andrew Booth auf einer ARC-Aufnahme vom Dezember 1946. Andrew erinnerte sich später, Kathleen habe mit einer weiteren Frau fast die gesamte Maschinenserie verdrahtet. Die Erinnerung ist kein vollständiger Tätigkeitsnachweis, dokumentiert aber technische Arbeit, die Heldengeschichten gern ausblenden.

Kathleen Booths Buch von 1958 über das Programmieren automatischer Digitalrechner zeigt, dass diese Arbeit fortgesetzt wurde. Kontinuität und konkrete Publikationen sind aussagekräftiger als ein nachträglich vergebener Superlativ.

Frühe Symbolik und ein arbeitender Assembler

Der Begriff Assemblersprache kann drei verschiedene Dinge meinen: merkbare Zeichen für Befehle, ein geregeltes Codierverfahren oder ein Programm, das Zeichen automatisch in Maschinenform überführt. Historisch sind dafür unterschiedliche Nachweise nötig.

Der Bericht von 1947 belegt eine frühe Kurznotation und einen vollständigen Weg bis zum Detailcode. Die Initial Orders des EDSAC von 1949 markieren etwas anderes. Cambridge erläutert, wie Buchstaben direkt für Fünf-Bit-Operationscodes standen; das Computer History Museum schreibt David Wheeler einen fest verdrahteten Assembler zu.

Beide Leistungen müssen nicht um denselben ersten Platz konkurrieren. Die eine zeigt, wie menschliches Denken vom binären Packen getrennt wurde. Die andere zeigt eine Übersetzung im Betrieb einer gespeicherten Programmmaschine. Erst die Unterscheidung lässt erkennen, wie Programmierwerkzeuge Schicht für Schicht entstanden.

Erfolgreiche Übersetzung ist eine begrenzte Zusage

Wenn ein symbolisches Programm ohne Beanstandung umgesetzt wird, sind seine Operationen bekannt, die Adressen passen in das Format und die erzeugten Wörter können geladen werden. Bei handgeschriebenen langen Rechnungen war das ein erheblicher Gewinn.

Eine formal gültige Bedingung kann trotzdem die falsche Schwelle verwenden. Ein Iterationsverfahren kann auf einem ungeeigneten Modell sauber konvergieren. Daten können an der richtigen Adresse liegen und dennoch veraltet oder verzerrt sein. Gehorsame Ausführung verstärkt gutes wie schlechtes Denken.

Moderne Compiler, Bereitstellungssysteme und Infrastrukturwerkzeuge behalten diese Grenze. Ein erfolgreicher Build belegt eine bestimmte Transformation. Eine abgeschlossene Bereitstellung belegt einen von der Plattform beobachteten Zustand. Beides zertifiziert nicht automatisch eine gerechte Regel, sichere Abhängigkeiten oder geeignete Daten.

Die Verantwortungen sollten getrennt bleiben: Menschen wählen Verfahren und Annahmen; die Notation beschreibt den Ablauf; die Übersetzung bindet ihn an eine ausführbare Form; die Maschine liefert Beobachtungen; Menschen prüfen erneut, ob diese Beobachtungen die ursprüngliche Frage beantworten.

Abstraktion verteilt Macht

Wer den üblichen Zugang zur Maschine kontrolliert, beeinflusst, was als gültiger Befehl gilt und welche Fehler sichtbar werden. Bei ARC lagen Operationsumfang, Adressbreite, Kontrollsprünge und Speichergebrauch offen in Tabellen.

Eine beherrschbare Abstraktion erklärt ihre Transformation, benennt ihre Grenzen und lässt das Ergebnis prüfen. Eine undurchsichtige Abstraktion verkauft Fehlerfreiheit bei der Umsetzung als umfassende Richtigkeit und verschiebt Autorität zum Betreiber der Übersetzung.

Kathleen Booths Beitrag braucht keinen bedingungslosen Anspruch auf das „Erste“. Die von ihr mitverfasste Disziplin ist präziser: Maschinenkontrolle lesbar machen, ihre Zuordnung exakt halten und eine akzeptierte Darstellung nicht mit einem richtigen Urteil verwechseln.

Quellen