Niklaus Wirth wollte keine Sprache entwickeln, die alles kann. Von Pascal bis Oberon stellte er die umgekehrte Frage: Welches ist die kleinste Menge an Konzepten, mit der man klar programmieren, wesentliche Strukturen überprüfen und ein vollständiges System bauen kann?
Diese Suche brachte mehrere Sprachen, Compiler, Betriebssysteme und experimentelle Computer hervor. Wirth wollte seine Ideen als Ganzes prüfen. Eine Sprache lässt sich nicht nur anhand ihrer Syntax beurteilen: Ihr Wert zeigt sich in der Organisation von Programmen, der Qualität ihrer Werkzeuge und darin, wie leicht andere den Code verstehen können.
Warum Programmstruktur zum Problem wird
Niklaus Emil Wirth wurde 1934 in Winterthur geboren. Er studierte Elektrotechnik an der ETH Zürich, erwarb einen Master an der Université Laval in Kanada und promovierte 1963 an der University of California, Berkeley.
Anschließend lehrte er in Stanford und arbeitete in einem Umfeld, das von Diskussionen um ALGOL geprägt war. ALGOL hatte Blockstruktur und eine klarere Notation eingeführt. Der geplante Nachfolger ALGOL 68 wurde jedoch sehr ehrgeizig. Wirth bevorzugte eine begrenztere Entwicklung und wirkte an ALGOL W mit.
Daraus entstand ein Leitprinzip: Jede Funktion sollte ein kohärentes Modell stärken. Werden Möglichkeiten hinzugefügt, ohne ihre Wechselwirkungen zu beherrschen, wird die Schwierigkeit vom Sprachentwickler auf alle Nutzer verlagert.
Pascal verbindet Algorithmen und Datenstrukturen
1968 kehrte Wirth an die ETH Zürich zurück. Er entwickelte Pascal, dessen erste Definition 1970 erschien. Die Sprache sollte strukturiertes Programmieren lehren. Blöcke, Prozeduren und Funktionen machen den Aufbau des Programms sichtbar; das Typsystem unterscheidet Werte und erlaubt Arrays, Records, Mengen und Zeiger.
Pascal blieb klein genug, um seine Prinzipien zu verstehen und Compiler im Hochschulumfeld zu bauen. Eine abstrakte P-Maschine erleichterte die Anpassung an verschiedene Rechner.
Der Titel seines bekannten Buchs Algorithms + Data Structures = Programs formuliert den Kern: Ein Algorithmus ist nicht unabhängig von seinen Daten. Liste, Array oder Baum verändern mögliche Operationen, Kosten und Klarheit.
Die Geschichte von Pascal beschreibt die Verbreitung in Lehre und Mikrocomputern. Wirths eigenes Projekt war pädagogisch: Programme durch explizite Strukturen verständlich zu machen.
Pascals Stärken zeigen seine Grenzen
Pascal verbreitete sich weit über die Lehre hinaus. Viele Compiler und Dialekte entstanden und brachten Anforderungen wie getrennte Kompilierung, Bibliotheken, Systemzugriff und Teamarbeit hervor.
UCSD Pascal popularisierte P-Code; Turbo Pascal, später unter Anders Hejlsbergs Leitung entwickelt, verband schnellen Compiler und integrierte Umgebung. Diese Systeme stärkten Pascal, waren aber nicht Wirths eigene Entwicklungen.
Wirth entschied sich, Modularität in neuen Sprachen zu behandeln, statt Pascal unbegrenzt zu erweitern.
Modula macht Komponentengrenzen prüfbar
Mitte der 1970er entwickelte Wirth Modula, ab 1977 Modula-2. Große Programme sollten in Module mit expliziten Schnittstellen zerlegt werden. Ein Modul veröffentlicht bestimmte Typen und Operationen und verbirgt die Implementierung. Der Compiler prüft den Austausch über diese Grenze.
Modula-2 ergänzte Mechanismen für Systeme und Nebenläufigkeit. Die Sprache begleitete das Lilith-Projekt, einen an der ETH entwickelten Personal Computer. Maschine, Compiler, System und Anwendungen gemeinsam zu entwerfen, machte die Kompromisse der gesamten Software-Hardware-Kette sichtbar.
Oberon treibt die Reduktion weiter
Nach einem Aufenthalt am Xerox PARC begann Wirth mit Jürg Gutknecht das Oberon-Projekt: Sprache und Betriebssystem zugleich. Oberon leitete sich von Modula-2 ab, entfernte aber bewusst mehrere Mechanismen.
Ziel war ein Kern, der klein genug blieb, um erklärt und kompiliert zu werden und dennoch ein komplettes System tragen konnte. Compiler, Anzeige, Text, Dateien und Werkzeuge bildeten eine kohärente Umgebung.
Oberon erreichte nicht Pascals kommerzielle Verbreitung, wurde aber zu einer vollständigen Studie über Systementwurf und zeigte, dass eine interaktive Umgebung mit vergleichsweise wenig Code möglich ist.
Was Einfachheit bei Wirth bedeutet
Der Wirth zugeschriebene Satz, Software werde schneller langsam, als Hardware schneller werde, fasst seine Sorge vor wachsender Komplexität zusammen. Seine Antwort war nicht, Abstraktion abzulehnen. Pascal, Modula und Oberon bieten mächtige Abstraktionen: benutzerdefinierte Typen, Module, Schnittstellen und strukturierte Daten.
Er wollte diese Stärke mit wenigen Regeln erreichen, deren Folgen vorhersehbar bleiben. Das hat Kompromisse. Eine kleine Sprache kann mehr spezialisierten Code verlangen oder weniger Bibliotheken bieten. Kompatibilität mit bestehendem Code erschwert zugleich das Entfernen alter Mechanismen.
Ein Erbe in Lehre und Ingenieurwesen
1984 erhielt Wirth den Turing Award für seine Sprachen und ihren Einfluss auf Lehre und Praxis. 1999 wurde er an der ETH emeritiert, arbeitete aber weiter an Oberon und Hardwareentwurf. Er starb 2024.
Pascal bildete Generationen von Programmierern aus. Modula-2 machte die Trennung von Schnittstelle und Implementierung vertraut. Oberon zeigte, wie Sprache, System und Werkzeuge als Ganzes entworfen werden können.
Wirth hinterließ weniger eine universelle Formel als eine Disziplin: bauen, messen, Unnötiges entfernen und anschließend prüfen, ob das Ganze verständlich bleibt.
Chronologie
- 1934: Geburt in Winterthur.
- 1959: Abschluss als Elektroingenieur an der ETH Zürich.
- 1960: Master an der Université Laval.
- 1963: Promotion in Berkeley und Beginn der Lehre in Stanford.
- 1966: ALGOL W.
- 1968: Professur an der ETH Zürich.
- 1970: erste Definition von Pascal.
- 1975: erste Version von Modula.
- 1977–1978: Modula-2 und Beginn des Lilith-Projekts.
- 1984: Turing Award.
- 1986–1988: Oberon mit Jürg Gutknecht.
- 1999: Emeritierung.
- 2013: modernisierte Ausgabe von Project Oberon.
- 2024: Tod im Alter von 89 Jahren.
Häufige Fragen
Hat Niklaus Wirth Pascal allein entwickelt?
Er war der Hauptentwickler und definierte die Ziele. Compiler und Verbreitung entstanden jedoch mit Mitarbeitern an der ETH und vielen externen Implementierungen.
Warum wurde Pascal für die Lehre entwickelt?
Wirth wollte eine kleine, verständliche Sprache, die dennoch Prozeduren, Typen und Datenstrukturen vermitteln konnte. Ziel war die Organisation von Programmen, nicht nur Syntax.
Hat Wirth Turbo Pascal entwickelt?
Nein. Turbo Pascal wurde von Borland unter Anders Hejlsbergs Leitung aus einem früheren Compiler entwickelt.
Was unterscheidet Pascal und Modula-2?
Pascal konzentriert sich auf strukturiertes Programmieren. Modula-2 ergänzt Mechanismen für große Software und Systeme, besonders Module mit expliziten Schnittstellen und getrennter Kompilierung.
Ist Oberon nur eine Sprache?
Nein. Oberon bezeichnet Sprache und Betriebssystem, gemeinsam mit Jürg Gutknecht entwickelt, um zu zeigen, dass wenige Konzepte eine vollständige Umgebung tragen können.
Warum sind Wirths Ideen weiterhin aktuell?
Software leidet weiterhin unter angesammelter Komplexität. Explizite Typen, Module, schmale Schnittstellen und das Entfernen unnötiger Mechanismen bleiben zentrale Mittel, Systeme verständlich zu halten.