Von der erzieherischen Rolle der Programmiersprachen
Niklaus Wirth, Erfinder der Programmiersprache Pascal, ist einer der bedeutendsten Computerwissenschaftler aller Zeiten. Gemeinsam mit Laszlo Böszörmenyi, der mit ihm geforscht hat, gab er ein Interview zu unüberblickbaren Softwaremonstern und zu den Gefahren der schnelllebigen Start-up-Kultur in der Softwarebranche.
In einem Interview, das 1999 veröffentlicht wurde, sagten Sie: „Man weiß nach 30 Jahren zwar, wie man es machen könnte und sollte – aber man tut es nur selten.“ Wie ist es um die Software heute bestellt?
Wirth: Ich sehe, wie Software immer komplexer wird. Wir haben es heute mit riesigen Systemen zu tun, die in ihrer Gesamtheit kein Mensch mehr beherrschen und verstehen kann. Dies birgt gewisse Gefahren, die durch das Vordringen der Künstlichen Intelligenz noch verschärft werden. Es werden zunehmend Heuristiken verwendet: Der Computer entscheidet, und im Prinzip ist nichts mehr deterministisch. Viele Kollegen sagen mir: „Wir können selbst bestimmen, was eingesetzt wird und was nicht.“ Aber dann frage ich: „Wer sind wir?“ Das ist kaum beantwortbar.
Welche Rolle spielen die Programmiersprachen?
Wirth: Sie spielen eine wichtige Rolle, auf einem sehr tiefen Niveau in der Hierarchie der Softwaresysteme. Sie sollen die Programmierer erziehen, sauber und strukturiert zu denken und sorgfältig zu konstruieren. Missbrauch und Angriffe können natürlich auch dann passieren, aber gute Software verhindert viele Unstimmigkeiten. Die meisten Programmierer arbeiten heute mit Sprachen, die veraltet sind.
Böszörmenyi: Auch die Universitäten haben sich versündigt. Wir laufen oft der Industrie nach, obwohl das eigentlich umgekehrt sein sollte. Der Druck, dass die Studierenden so rasch wie möglich Arbeitsplätze finden, ist oft größer als der Druck der Vernunft.
Wirth: Ja, die meisten Universitäten lehren das, was die Industrie verlangt, anstatt die Leute so auszubilden, dass sie nachher in der Industrie führend sind. Heute verwendet die Industrie viel standardisierte Software, die kaum mehr zu verändern ist. Ich habe zumindest diese Hoffnung aufgegeben, schon lange. Aber dennoch: Bei der Einführung in dieses Fach kann man bei den Studierenden die richtigen Wurzeln legen.
Wie passen Sauberkeit, Strukturiertheit und Wohldurchdachtheit zur schnelllebigen Start-up-Kultur in der Softwarebranche?
Wirth: Heute zählen mehr denn je Zeit und Geld. Aber Sie sehen ja die Resultate: Immer wieder geraten Unternehmen wegen Computerabstürzen in Schwierigkeiten. Solche Ereignisse sollten ein Warnsignal sein. Andererseits verstehe ich die Industrie, die die alten Gepflogenheiten nicht einfach ausradieren kann.
Haben Sie manchmal das Bedürfnis, tabula rasa zu machen?
Wirth: Ja, aber das ist zu viel verlangt. Die Entwicklung müsste von unten heraufkommen, also ein Neuanfang.
Dafür bräuchte es mehr Leidensdruck, oder?
Böszörmenyi: Ja, aber manchmal passiert so etwas. Ein Schüler von Niklaus Wirth, Eliyezer Cohen, hat es geschafft, einen beachtlichen Teil von Microsoft Word neu implementieren zu lassen. Niemand macht absichtlich schlechte Software. Sie wird es erst.
Wirth: Auch bei Google hat man mit dem Android-System neu angefangen. Dort haben auch Doktoranden von mir mitgewirkt, die den Geist einer einfachen, eleganten Programmierung mitgenommen haben.
Wie wird denn Software schlecht?
Wirth: Indem man auf eine unsolide Grundlage weiter aufbaut, bis sich ein riesiges Gebilde ergibt, das aber insgesamt nicht stabiler sein kann als der Kern. Schuld ist auch, dass sich die Computerwelt so rasant verändert. Heute braucht man Systeme für Smartphones, die meist ziemlich unstrukturiert aufgebaut sind. Jeden Tag kommt Neues hinzu.
Es wird komplexer, was Programme können sollen. Deshalb muss doch auch die Programmierung komplexer werden, oder?
Wirth: Ja, die Hardware entwickelt sich rasant: Wir haben heute eine Million Mal mehr Speicherkapazität zur Verfügung als vor 50 Jahren. Die Prozessoren arbeiten tausend Mal schneller, und damit stiegen auch die Ansprüche an die Anwendungen und an die Programmierer. Diese arbeiten bis an ihre Grenzen, und eben manchmal auch darüber hinaus.
Bis zu welcher technischen Entwicklung machen Sie mit? Haben Sie ein Smartphone?
Wirth: Ja, aber noch gar nicht so lange. Meine Kinder haben mir das praktisch aufgedrängt.
Böszörmenyi: Aber eingeschaltet hast du es nicht. Ich habe heute versucht, dich anzurufen.
Wirth: Oh. (lacht) Wieso nicht? (tastet seine Hosen- und Hemdtaschen ab) Ich habe auch fotografiert damit. Aber ich bin schon übermorgen wieder zuhause. Ich finde nicht, dass ich immer erreichbar sein muss. Ich sehe aber auch, dass für viele nichts mehr funktionieren würde, wenn sie kein Smartphone hätten.
Steckt heute etwas von dem, was Sie gemacht haben, in meinem Smartphone?
Böszörmenyi: (zu Wirth) Du hast die erste strukturierte Programmiersprache definiert. Die heutigen Sprachen haben viele Konzepte übernommen, von daher steckt viel drinnen. Und auch die Arbeiten vieler Menschen, die durch die Schule von Niklaus Wirth gingen.
Mit der „Lilith“ haben Sie einen der ersten Personal Computer entwickelt. Warum heißt er so?
Wirth: Lilith war die erste Frau von Adam. Er hat sie in die Wüste geschickt, weil sie eigene Ideen hatte und sich emanzipierte. Danach hat er dann Eva kreiert. Lilith ist dann nachts meist als Furie wieder aus der Wüste gekommen, um Kinder zu fressen und Männer zu verführen. An der ETH Zürich, an der ich damals arbeitete, sind meine Mitarbeiter ganz unüblicherweise nach dem Abendessen zurückgekommen, um weiter an der Lilith zu arbeiten. Sie hat sie verführt. Deshalb habe ich sie so genannt. Das war eine sehr beflügelnde Zeit damals.
für ad astra: Romy Müller
Zu den Personen
Niklaus Wirth, geboren 1934 in Winterthur, studierte Elektroingenieurwesen an der ETH Zürich. Danach ging er an die Université Laval in Kanada und später an die University of California in Berkeley, wo er 1963 promovierte. Es folgten Assistenzprofessuren an der Stanford University und der Universität Zürich sowie eine Rückkehr an die ETH, wo er bis 1999 Professor für Informatik war. In den Jahren 1968 bis 1970 entwickelte er die Programmiersprache Pascal, die zu einem der einflussreichsten Werkzeuge der Informatik wurde.
Die Jahre 1976 bis 1977 sowie 1984 bis 1985 verbrachte er im Palo Alto Research Center (PARC) von Xerox – damals eines der leitenden Innovationszentren der Informatik. Im Anschluss an diese Studienaufenthalte entwickelte er die Programmierspache Modula (später Modula-2) und das für Codegenerierung optimierte Computersystem Lilith (1980). 1986/87 entwickelte er die extrem einfache, objektorientierte Programmiersprache Oberon sowie das zugehörige Betriebssystem Oberon. Wirth ist Träger unzähliger hoher Auszeichnungen, unter anderem des Turing-Awards, der höchsten Auszeichnung für InformatikerInnen.
Laszlo Böszörmenyi, geboren 1949 in Budapest, ist seit 1992 Professor am Institut für Informationstechnologie der Alpen-Adria-Universität.
„Ein Softwaresystem zu bauen, ist keine künstlerische Tätigkeit.“
Martin Pinzger, Professor am Institut für Informatik-Systeme, arbeitet an der Vermeidung von Fehlern in Softwaresystemen. In dem vom FWF geförderten Projekt SoftwareDynamics werfen Pinzger und sein Team einen Blick in die Vergangenheit von Softwaresystemen und analysieren dabei die Veränderungen und daraus resultierende Folgen, wie beispielsweise auf die Performance. „Wir möchten aus früheren Änderungen lernen und dieses Wissen den Software-Entwicklerinnen und Entwicklern zur Verfügung stellen. Das Ergebnis sollen Tools sein, die errechnen können, welche Änderungen potenziell performancekritisch sind. So soll in Zukunft verhindert werden, dass Programme langsamer werden, wenn man sie anpasst und weiterentwickelt.“
In einem nächsten Schritt wäre es für den Forscher auch denkbar, der Frage auf den Grund zu gehen, welche Änderungen Sicherheitslücken in Programmen bewirkt haben. Auch hier könne man aus der Vergangenheit lernen, Muster erkennen und für zukünftige Programmierungen „Vorhersagen“ treffen.
Wer heute gute Software entwickeln möchte, stünde oft vor einem Berg von Herausforderungen, nicht zuletzt bedingt durch die enorme und stets steigende Komplexität. Zum Beispiel umfasst der Source Code von Microsoft Office 2013 mehr als 45 Millionen Codezeilen. Würde man den Source Code in Buchform drucken und die Bücher übereinanderstapeln, so würde der Stapel eine Höhe von 25 Metern erreichen.
Fragt man Pinzger nun danach, ob ein ‚gutes‘ Programm eher eine technische oder eine kommunikative Großleistung sei, führt er aus: „Die Kommunikation und das Projektmanagement, wenn hunderte oder tausende EntwicklerInnen zusammenarbeiten, ist sicherlich die größere Schwierigkeit. Wir wollen daher die EntwicklerInnen dabei unterstützen, die Komplexität handzuhaben.“ Dabei müsse heute mehr denn je bedacht werden, dass meist nicht bei Null begonnen, sondern auf Bestehendem in Form von Bibliotheken und Frameworks aufgebaut wird. Außerdem würden Programmiersprachen immer umfassender und so sehr viel mehr erlauben. Viele Unternehmen sehen sich daher genötigt, nur einen eingeschränkten Sprachumfang zuzulassen, um keine Unsauberkeiten und damit neue Fehlerquellen zu ermöglichen. Auch wenn das für so manchen einschränkend wirkt: „Ein Softwaresystem zu bauen, ist keine künstlerische Tätigkeit. Wir müssen uns auf die Ingenieur-Arbeit konzentrieren“, so Pinzger. Seinem Team geht es also um zweierlei: Um das Aufspüren von bestimmten Software-Änderungen in der Vergangenheit, die Performanceverlust, Sicherheitslücken oder Fehler erzeugt haben, und andererseits auch um eine formalere Handhabung der Software, mit der mathematisch beweisbar sein soll, dass etwas fehlerfrei ist.