☰ Menu

05.10.2026 · Signal Titans Editorial

Von der Verteidigungssimulation zur Architektur moderner Software

Wie Kristen Nygaard und Ole-Johan Dahl von diskreten Verteidigungssimulationen zur Klassenvererbung und objektorientierten Programmierung gelangten.

Eine stilisierte mechanische Zeitleiste aus polierten Messingzahnrädern und bernsteinfarbenen Glaskanälen, die sich auf dunklem Schiefer in fließende tealfarbene Wasserbänder aufzweigt.

Ende der 1950er-Jahre berechnete Kristen Nygaard am Norwegischen Institut für Verteidigungsforschung Monte-Carlo-Simulationen für das Design von Kernreaktoren und die militärische Operationsforschung. Nachdem er diese Modelle für diskrete Ereignisse zunächst von Hand berechnet hatte, verlagerte er die Berechnungen später auf einen Ferranti-Mercury-Großrechner. Laut Two Bit History empfand Nygaard das Schreiben dieser komplexen statistischen Modelle als mühsam und suchte nach einer höherstufigen Sprachsyntax, um zu beschreiben, wie diskrete Ereignisse den Systemzustand im Laufe der Zeit verändern. Anfang der 1960er-Jahre gewann er den Informatiker Ole-Johan Dahl für die Zusammenarbeit an einer dedizierten Sprache. Ihr erster Prototyp, Simula 0, war als Erweiterung und Präprozessor für ALGOL 60 geplant.

Von Stationen zu Coroutinen in Simula I

Der frühe Entwurf von Simula 0 stützte sich auf fest codierte Domänenkonzepte und verwendete spezifische Konstrukte wie Stationen und Kunden, um Netzwerke wie etwa Abflüge an Flughäfen zu modellieren. Nygaard und Dahl erkannten jedoch, dass diese starren Konstrukte den Nutzen der Sprache einschränkten. Um umfassendere Systeme zu modellieren, ersetzten sie Stationen und Kunden durch Coroutinen-Prozesse. In dieser Architektur bündelte jeder Prozess Datenattribute mit einer Ausführungsregel, die die Ausführung unterbrechen und wieder aufnehmen konnte. Obwohl die Prozesse konzeptionell parallel liefen, verfolgte eine Zeitleiste von Ereignisbenachrichtigungen die aktiven Prozesse. Dieser Wechsel brach die Kompatibilität mit ALGOL 60. Da ALGOL nur einen einzigen Aufrufstapel verwaltete, erforderte das Nachverfolgen mehrerer unterbrochener Coroutinen die gleichzeitige Verwaltung mehrerer Aufrufstapel. Nygaard und Dahl verließen die Verteidigungsforschung und wechselten zum Norwegischen Rechenzentrum, um einen eigenen Compiler zu entwickeln, und stellten 1965 den ersten Simula-I-Compiler fertig.

Der Impuls durch die Record-Verarbeitung

Simula I fand auf Großrechnern wie UNIVAC und Burroughs B5500 Verbreitung, doch den Entwicklern wurde klar, dass sich die strukturellen Muster der Sprache über diskrete Ereignissimulationen hinaus erweitern ließen. Der entscheidende Wendepunkt trat ein, als der britische Informatiker C.A.R. Hoare eine Arbeit mit dem Titel „Record Handling“ veröffentlichte. Hoare schlug dynamische Records vor, die während der Laufzeit erzeugt wurden und zu benannten Record-Klassen gehörten, wobei er Klassennamen mit Begriffen wie Tisch oder Haus verglich. Hoare machte Nygaard und Dahl mit den Konzepten von Superklassen und Subklassen vertraut. Das norwegische Team erkannte: Wenn Prozesse von einer gemeinsamen Superklasse erben würden, könnte das Prozessmodell selbst zu einer optionalen Funktion werden anstatt einer zwingend erforderlichen übergeordneten Hülle.

Die Standardisierung von Simula 67

Diese Erkenntnis verwandelte Simula in eine Universalsprache, die auf Klassenhierarchien und virtuellen Methoden basierte. 1967 schlossen Nygaard und Dahl einen Vertrag mit dem Computerhersteller Control Data, um diese überarbeitete Spezifikation als Simula 67 umzusetzen. Auf einer Konferenz im Juni 1967 definierten Delegierte von Control Data, der Universität Oslo und dem Norwegischen Rechenzentrum die Spezifikation für die Simula 67 Common Base Language. In der Folge wurden Compiler für verschiedene Systeme entwickelt, wodurch sich die Sprache unter Nutzern in über 23 Ländern verbreitete.

Das Fundament moderner Softwarearchitektur

Obwohl Entwickler heute nur noch selten Anwendungsprogramme in Simula schreiben, haben die von Nygaard und Dahl geschaffenen strukturellen Primitiven das Softwaredesign grundlegend verändert. Die in der Spezifikation von Simula 67 definierten Konzepte – darunter Klassen, Vererbung und virtuelle Prozeduren – wurden zum grundlegenden strukturellen Fundament objektorientierter Sprachen wie C++, Java und Python und prägen bis heute, wie moderne Anwendungen Daten modellieren und Code strukturieren.

KI-generierte redaktionelle Illustration; kein Dokumentarfoto.

Quelle: 0b10 0b10 OOP Before OOP with Simula