Als Computer noch erklärbar waren

Seit 1968 an der ETH Zürich die Informatik als Thema für Forschung und Lehre eingeführt wurde, sind die Computer sehr viel kleiner geworden und sehr viel komplexer. Sie zu verstehen, wird immer schwieriger. Die Kluft zwischen den Experten und den Laien verbreitert sich zum Nachteil der Gesellschaft rasch und nachhaltig.

Von Niklaus Wirth*
Drucken

Das Jahr 1968 ist in die Geschichte eingegangen als Jahr der sozialen Unrast, des Umbruchs. Es war gekennzeichnet durch die Ablehnung von Autorität, die Absage an die Forderung nach Leistung, durch die Befreiung von verkrusteten gesellschaftlichen Konventionen und durch die Verbreitung der Beliebigkeit. Die Auswirkungen dieses Umbruchs reichen bis in die Gegenwart. Daneben gab es aber 1968 auch kleinere, wenig beachtete Ereignisse, an die man sich jedoch heute noch aus guten Gründen erinnert: Dazu gehört die Einführung der Informatik an der ETH in Zürich. Diese manifestierte sich am 1. Oktober 1968 durch die Gründung der «Fachgruppe Computerwissenschaften» innerhalb der Abteilung für Mathematik und Physik.

Sanfter Druck der Politik

Das Ereignis von 1968 war insofern bemerkenswert, als die Computertechnik nun als eigene akademische Disziplin eingeführt, in Vorlesungen gelehrt und auch in der Forschung untersucht wurde. In Anlehnung an die amerikanische «Computer Science» hiess das neue Team «Fachgruppe für Computerwissenschaften». Es bestand aus den Professoren Heinz Rutishauser und Peter Läuchli aus der numerischen Mathematik sowie mir aus dem Gebiet der Computersysteme und der Programmiersprachen. Dazu kamen ein halbes Dutzend Assistenten. Rutishauser verstarb leider bereits nach zwei Jahren. 1972 stiess Carl August Zehnder zu uns, und 1974 Jürg Nievergelt, womit sich unsere Kompetenzen auf die Datenbanken und die Algorithmik ausdehnten. Zu dieser Zeit wurde die «Fachgruppe» in «Institut für Informatik» umbenannt. Schon damals schien uns die Trennung der akademischen Seite vom Dienstleistungsbetrieb des Rechenzentrums wohlbegründet und notwendig zu sein. Dort ging es um die Befriedigung von Bedürfnissen der Computeranwender, hier um die Kenntnisse über die Struktur, die Funktionsweise und den Bau von Computersystemen selbst. Wir verstanden unser Fach als Ingenieur-Fach von zukunftsträchtiger Bedeutung. Natürlich war unser Sinnen auf die Einführung eines eigenen Studiengangs gerichtet. Doch erst 1981 wurde auf sanften Druck aus Bern hin eine neue Abteilung mit eigenem Studiengang gegründet, die erste seit 45 Jahren.

Abstraktion als zentrales Werkzeug

Den eigentlichen Anstoss für eine eigene Disziplin gab eine neue Sparte, die weder in die Mathematik noch in die Elektrotechnik richtig passen wollte: die Computerprogrammierung. Dies zeigte sich durch die Entstehung von Programmiersprachen und Systemen, die Programmtexte in Computer-Code übersetzen (Compiler). Eine Programmiersprache – keine eigentliche Sprache, sondern ein Formalismus – stellt eine abstrakte Maschine dar, die einerseits durch mathematisch exakte Regeln definiert ist und anderseits durch elektronische Bauteile realisiert wird. Abstraktion entpuppt sich als das zentrale Werkzeug der Informatik. Sie ist das einzige Mittel, um die stetig wachsende Komplexität der Computer und der Programme zu beherrschen, um den Programmierer vor der Flut der technischen Einzelheiten zu schützen, damit er sich auf das für seine Anwendung Wesentliche konzentrieren kann.

Etwas überspitzt darf man also behaupten, die Abstraktion, die Programmiersprache, verdecke die Sicht auf die Realität. Dies ist einerseits erwünscht, sogar notwendig, anderseits unerwünscht, nämlich dann, wenn die konzeptuelle Distanz von der Sprache – der abstrakten Maschine – zum Computer – der realen Machine – gross und daher der Übersetzungsprozess komplex und undurchsichtig ist. Dann könnten nämlich Kenntnisse über den realen Computer helfen, das Programm besser, effizienter zu gestalten.

Schwierige Anfänge

Es war schon Ende der 1960er Jahre klar, dass neben der Fähigkeit zu programmieren auch Grundkenntnisse über Computer und deren Strukturen und Funktionsweise vermittelt werden mussten. Dazu ist es allerdings nötig, dass Studenten direkt mit einem Computer in Kontakt kommen können. Gerade dies jedoch war damals unmöglich, weil der vorhandene Grossrechner im Rechenzentrum unzugänglich war. Programme und Daten wurden am Schalter in Form eines Lochkartenstapels abgegeben. Die Resultate erschienen am folgenden Tag auf einem Endlospapier als Zahlen und Grossbuchstaben. Von Interaktivität war keine Rede. Man fragt sich, wie unter diesen Umständen überhaupt jemand Lust am Arbeiten mit dem Computer finden konnte.

In Anbetracht dieser widrigen Umstände wurde für die genannten Unterrichtszwecke ein Kleinrechner angeschafft. Einigermassen erschwingliche Minicomputer waren erst einige Jahre zuvor auf dem Markt erschienen. Meine Wahl fiel auf den HP-2115-Rechner, dessen Aufbau sehr übersichtlich und zweckmässig war, was ich als unabdingbare Eigenschaft einstufte. Der Rechner und alle Funktionen waren gut erklärbar und verständlich. Sein Manual mit den Einzelheiten über seine Struktur und seine Programmierung umfasste nur 70 Seiten. Der Befehlssatz enthielt nur 16 Instruktionen, was in Anbetracht der damals üblichen Bewunderung für möglichst grosse Repertoires erstaunlich ist.

Der HP 2115 widerspiegelte direkt die grundlegende Rechnerstruktur nach John von Neumann. Diese sieht bekanntlich zwei Einheiten vor: ein Steuerwerk und ein Rechenwerk. Das Steuerwerk holt den jeweils nächsten Befehl aus dem Speicher in ein Instruktions-Register zur Interpretation und bestimmt die Adresse des folgenden Befehls. Das Rechenwerk besteht aus der arithmetisch-logischen Einheit und einem Register, damals Akkumulator genannt, weil darin Summen akkumuliert wurden. Die wichtigste Errungenschaft nach von Neumann war die Möglichkeit, dass nun errechnete Resultate den Ablauf der Befehle beeinflussen können, indem als nächster Befehl der unmittelbar nachfolgende oder ein explizit bezeichneter Befehl ausgewählt wird. 1974 wurde im Institut der HP 2115 durch einen DEC-PDP-11-Rechner ersetzt. Dies war ein weitverbreiteter Multi-Register-Kleinrechner mit 64 KByte Halbleiter-Speicher und Wechselplatte. Er wurde mit einem Grafik-Bildschirm (vector display) ergänzt. 1978 demonstrierte ich damit die erste Maus. Sie fand kaum Beachtung.

Die Von-Neumann-Architektur ist im Wesentlichen auch heute noch das Fundament der modernen Rechner. Sie wurde allerdings in den folgenden Jahren und Jahrzehnten durch verschiedene Konzepte erweitert, um höhere Rechenleistungen zu erzielen. Dazu gehören unter anderen Unterprogramme, Index-Register, Unterbrechung, virtueller Speicher, komplexe Befehle, Pipelines und Caches. Diese Erweiterungen haben die bestechende Einfachheit der Von-Neumann-Architektur zerstört, die in ihrer Grundstruktur oft kaum mehr erkennbar bleibt.

Die jüngste effizienzsteigernde Neuerung ist die Anordnung mehrerer Prozessoren auf demselben Bauteil (Chip). Weil man an physikalische Grenzen stiess – zwar nicht bei der weiteren Miniaturisierung, jedoch bei der Erhöhung der Taktrate – schien der stetigen Leistungssteigerung ein Ende bevorzustehen. Den Ausweg fanden die Chip-Hersteller darin, mehrere Prozessoren (cores) auf dem gleichen Chip zu placieren. Die Software-Entwickler werden damit zwangsläufig mit dem schwierigen Problem konfrontiert, mehrere Prozesse zu unterhalten und zu koordinieren. Dies jedenfalls, wenn sie die neuen Chips optimal ausnützen wollen.

Zwar sind die Herausforderungen der Multiprogrammierung keine unbekannten Geister. Man hat sie aber in der Vergangenheit möglichst ruhen lassen und nur bemüht, wenn dies unvermeidbar war, wie z. B. bei eingebetteten Systemen zur Daten-Akquisition und zur Echtzeit-Steuerung von Maschinen. Nun jedoch wird die Multiprogrammierung unumgänglich, zusammen mit der generellen Frage, wie ein Prozess durch mehrere, gleichzeitige, sequenzielle Abläufe ersetzt werden kann. Es bedarf keiner prophetischen Fähigkeiten um vorauszusehen, dass Hardware und Software noch weiter an Komplexität zunehmen werden. Als Folge davon wird es immer schwieriger, Systeme als Ganzes zu verstehen, geschweige denn zu erklären.

System-Entwicklung umfasst Hardware und Software. Vereinfachungen auf der einen ergeben meistens Verkomplizierungen auf der andern Seite, Verkomplizierungen auf der einen aber nicht unbedingt Vereinfachungen auf der andern. Um deren Summe zu minimieren, braucht es Kenntnisse auf beiden Gebieten. Zwangsläufig schliessen wir daraus, dass der angehende Informatik-Ingenieur nicht nur die traditionelle, obligate Ausbildung auf dem Gebiet der Software und der Programmierung erhalten soll, sondern auch solide Grundkenntnisse in Hardware.

Diese Forderung ergibt sich auch aus der Tatsache, dass es heute programmierbare Bauteile gibt. Diese erlauben die Konstruktion komplexer Schaltungen, selbst ganzer Prozessoren, rein auf der konzeptionellen Ebene, d. h. ohne Aufbau mit konkreten, materiellen Schaltungskomponenten. Die Entwicklung einer Schaltung wird damit zum «Software-Prozess»; die Mittel dazu sind allein ein Beschreibungs-Formalismus und sein Compiler. Es gibt zwei Klassen derartiger Bauteile: Programmed Logic Devices (PLD) und Field Programmable Gate Arrays (FPGA). Sie sind das ideale Experimentierfeld, das stets ohne jeglichen Materialverschleiss auskommt. Ihre Konfigurationen nennt man Gateware.

Gefährliche Wissenskluft

Der Trend zur Komplexität schreitet fort und ist leider irreversibel. Was die Entropie der Physik, ist der Informatik die Komplexität. Die neuen Produkte der Technik zu verstehen, wird immer schwieriger. Die Zahl derjenigen, die sie nicht verstehen, gleichzeitig sich aber von ihnen abhängig gemacht haben, wächst. Dieser Vorgang hat leider auch soziale Folgen. Die Kluft zwischen den Experten und den Laien verbreitert sich zum Nachteil der Gesellschaft rasch und nachhaltig.

Abhilfe kann hier nur eine breiter angelegte Bildung (nicht nur Ausbildung) verschaffen. Es wird hier nicht verlangt, dass jedermann lernen sollte, wie man Computer und Mobiltelefone baut. Aber gewisse Kenntnisse über deren Grundlagen, Prinzipien und Grenzen wären angemessen. Sie gehören doch heute zur Allgemeinbildung. Wo sie fehlen, bürgern sich vielzitierte Fehlbegriffe ein, wie «den kleinsten gemeinsamen Nenner finden» (er ist immer 1 und muss daher nie gesucht werden) oder «erneuerbare Energie» (Energie bleibt stets erhalten) oder «Atomstrom» (Strom heisst Fluss von Elektronen). Diese Schlagwörter sind untrügliche Symptome einer Fehlentwicklung unseres Bildungswesens. Naturwissenschaften spielen in den Lehrplänen eine kümmerliche Rolle, und von Technik ist keine Rede. Aber Naturwissenschaften und Technik prägen heute unsere Welt. Naturwissenschafter und Techniker sind die neuen Kulturschaffenden. Verbreitete Grundkenntnisse sind die Voraussetzung für Vertrauen in deren neue Errungenschaften. Vielleicht ist ein zweites 1968 nötig, um ein Umdenken einzuleiten