zurück ]     [ Publikationen ]    
 

Rolf Todesco

"Software" - virtueller Partner oder Werkzeug

In: Zürich: Neue Zürcher Zeitung 227, 30.9.92, S. 67.

Die Frage, was ist Software, erzeugt normalerweise eine einfache Antwort: Programme, oder alles, was man nicht anfassen kann. Auch unter Informatikern gilt es als unhöflich, sich mit dieser Antwort nicht zu bescheiden. Das hat Grund. Software virtualisiert Werkzeuge, die weit über das hinausgehen, was der gesunde Menschenverstand von einer simplen Maschine mit einigen (zig)tausend Stromschaltern erwarten würde: unter anderem Maschinen, die uns vormachen als Kommunikationspartner mit uns zu sprechen oder (sprachliche) Befehle entgegennehmen und ausführen zu können. Software erscheint als Geist solcher Maschinen. Wie aber werden diese Maschinen beseelt?

Spätestens seit Darwin die Evolutionstheorie von Wallace zum Allgemeingut machte, sind wir uns gewohnt, nicht nur Märchen, sondern auch Geschichten, die wahr sein wollen, ohne Anfang - ohne Schöpfung - zu denken. Bekannt ist bezüglich der Software allgemein nur die Evolution vom Assembler zum Case-Tool. Software muss sich nicht zuletzt der Geschichte ihres ursprünglichen Gewordenseins entziehen, damit wir im Paradoxon von sprachfähigen Maschinen verweilen können.

Aber Evolutionsgeschichten sind dialektisch, sie lenken unsere Aufmerksamkeit immer auch auf den Punkt, den sie ausblenden (wollen), nämlich eben auf den Anfang. Ueber unseren Anfang werden wir uns sinnigerweise keine Bilder machen, aber daraus sollten wir keineswegs - wie es gemeinhin in Software-Evolutions-Geschichten getan wird - ableiten, dass sich auch Nachdenken über den Anfang der sogenannten Software nicht lohnen könnte. Die "Software" ist nicht wie wir auf die Welt gekommen. Mit dem Wortteil "-ware" bringen wir diese (Tat)sache deutlich zum Ausdruck, auch wenn wir mit dem näher bestimmenden "soft-" die Eindeutigkeit des gemeinten Gegenstandes etwas relativieren.

 

Programmiersprachen

In den Evolutionsgeschichten steht: Die ersten Computer wurden sehr umständlich und aufwendig mittels einer sogenannten Maschinensprache programmiert. Suggeriert wird durch diese evolutionistische Redeweise, die den Anfang der Programmiersprachen ausblendet, dass bereits die Erfinder der Computer ihren Maschinen sprachliche Anweisungen gegeben hätten. Dem war aber keineswegs so. Die Programmier-Sprache fiel nicht termingerecht vom Himmel. Sie ist vielmehr eine eigenständige Erfindung, die die massenhafte Verbreitung der Computer überhaupt erst möglich machte. Die Programmiersprache entspricht in gewisser Hinsicht dem Buchdruckes von Gutenberg oder dem Benzinmotores von Otto, die beide eine bereits vorhandene Ware, nämlich das Buch und das maschinell angetriebene Fahrzeug massentauglich machten. Wenn wir die Computer - wie in den Anfängen - ohne Programmiersprachen programmieren müssten, würden sie heute noch in den Forschungslaboratorien statt auf jedem Schreibtisch stehen.

Als Erfindung teilt die Programmiersprache das Schicksal vieler genialen Erfindungen. Sie liegen im Nachhinein so sehr auf der Hand, dass sie gar nicht als Erfindungen wahrgenommen werden. Der naiv interpretierte Wortteil "-sprache" verleitet zusätzlich zur Annahme, dass Programmiersprachen wie unsere Sprachen zwar konkret geformt sind, aber als Sprache überhaupt immer schon da waren. In diesem Sinne werden Programmiersprachen auch oft als künstliche Sprachen bezeichnet, wobei das Attribut "künstlich" nicht auf die Sprache als erfundenes Produkt bezogen wird, sondern lediglich darauf, dass die Syntax oder die Form der Sprache eindeutig (eingeschränkt) ist.

Die Ware, die durch Programmiersprachen massentauglich wurde, ist der Computer. Mit dem Ausdruck "Computer" bezeichnen wir eine nicht scharf abgegrenzte Teilmenge der Automaten, also der konstruktiv explizit gesteuerten Maschinen. Computer sind Maschinen, die programmiert werden müssen. Ohne Programmierung ist der Computer unvollständig, wir bezeichnen das entsprechende Halbfabrikat als "Hardware". Die Hardware alleine kann man sowenig brauchen, wie eine einzelne Schraube, die Bestandteil der Hardware ist. Zum Computer gehört die Programmierung. Die Programmierung und der Computer sind unter dem Gesichtspunkt der Erfindung dasselbe. Wir können also uneingeschränkt sagen, wann die Programmierung erfunden wurde. Eine andere Frage ist, ob die Erfinder der Computer deren Programmierung auch Programmierung nannten. Und eine noch andere Frage ist, wie die ersten Computer tatsächlich programmiert wurden.

Was heisst programmieren überhaupt? Die Antwort zu dieser Frage liegt in der Evolution der Werkzeuge: Hammer und Sichel sind primitive Werkzeuge, die der Benutzer sowohl antreiben wie steuern muss. Entwickeltere Werkzeuge sind Maschinen, wie etwa das Auto, in welchem der Benutzer nur noch steuern muss. Noch entwikeltere Werkzeuge, eben die Computer, enthalten eine explizit konstruierte Steuerung. Computer machen, was in ihrer Steuerung festgelegt ist. Das Festlegen der Steuerung heisst programmieren. Sehr anschaulich ist die Steuerung einer Maschine mit einem eigens dazu konstruierten Mechanismus beispielsweise bei primitiven Musikautomaten, bei welchen Stiftchen auf einer Walze bestimmte Melodien bewirken. Man kann diese Automaten für bestimmte Melodien programmieren, indem man die Stiftchen auf der Walze entsprechend anordnet. Nicht viel weniger anschaulich sind die Lochkarten-Maschinen, die auf verschiedene Lochmuster reagieren. Der Webstuhlbauer Jacquard hat bereits um 1800 entdeckt, dass man entsprechend konstruierte Webstühle mit Lochkarten so programmieren kann, dass bestimmte Stoffmuster gewoben werden. Diese Beispiele zeigen, dass man zur Programmierung einer Maschine keine Programmiersprache - und insbesondere auch keine "0"/"1"-Sprache - braucht.

Auch die ersten Computer im engeren Sinne wurden ohne Programmiersprache programmiert. Man hat die Löcher auf den Lochkarten "einfach" so angeordnet, wie es die jeweilige Computersteuerung verlangte. Einfach war das natürlich keineswegs, wenn man etwas kompliziertere Abläufe programmieren wollte. Die Computer, die wir heute bei weitem nicht nur zum Rechnen verwenden, heissen deshalb "Rechner", weil man am Anfang - ohne Programmiersprachen - praktisch nur Rechenaufgaben, die ähnlich einfach wie Stoffmuster sind, programmieren konnte. Ada, die Pressesprecherin von Babbage, der seine Computer in Anlehnung Jacquards Webstuhlsteuerung konstruierte, sagte: "Wir können höchst zutreffend sagen, dass die analytische Maschine algebraische Muster webt". Abgesehen davon, dass man bei der sprachlosen Programmierung die Maschine bis ins letzte Detail begreifen musste, verloren auch die besten Programmierer relativ rasch die Uebersicht darüber, welches Loch an welche Stelle gehörte.

Bei einer gegebenen Steuerung bewirkte eine bestimmte Lochkarte, respektive eine entsprechende Serie von Lochkarten natürlich immer dasselbe Maschinenverhalten. Deshalb kam nicht erst Jacquard auf die Idee, die Lochkarten ihrer Wirkung entsprechend anzuschreiben. Wenn man in der Maschine einen bestimmten Ablauf steuern wollte, steckte man die entsprechend angeschriebenen Lochkarten in die Maschinensteuerung. Die Beschriftung der Lochkarten hatte aber mit den Löchern in der jeweiligen Karte nur einen sehr vermittelten Zusammenhang. Die Löcher selbst ergaben für den Betrachter der Karte zunächst keinen sprachlichen Sinn, sie signalisierten keine Zeichen, die man lesen konnte. Man wusste einfach, dass ein bestimmtes Lochmuster auf der Maschine ein bestimmtes Resultat erzeugte. Deshalb - und das war die entscheidende Einschränkung - konnte man beim Programmieren der Maschine die Löcher auch nicht einfach gemäss sprachlicher Zeichen anordnen, man musste die Logik der Steuerung sprachunabhängig kennen.

Die "Erfindung der Programmiersprache" bestand darin, dass man den Steuerungsmechanismus so baute, dass die Löcher auf der Lochkarte zugleich als sinnhafte Beschriftung der Lochkarte zu lesen waren. Wenn man mit einem solchen "versprachlichten" Steuermechanismus arbeitete, konnte man die Lochmuster für eine bestimmte Aktion so eingeben, das die Löcher gerade die Bezeichnung dieser Aktion ergaben. Nun konnte man die Maschine beispielsweise mit Löchern in den Feldchen "A" "D" "D" zum Addieren veranlassen. Deutlich kann man diesen Zusammenhang noch anhand der Lochkarten von Hollerith sehen, die um 1900 bei amerikanischen Volkszählungen verwendet wurden, weil dort die Codierung der Zeichen noch sehr anschaulich war. Die "Erfindung der Programmiersprache" besteht in der Erfindung, den Steuermechanismus so zu konstruieren, dass seine Bedienung sprachhaft wurde. Deshalb kann Wirth, der Erfinder von vielen Programmiersprachen sagen: "Eine Programmiersprache stellt einen abstrakten Computer dar, der die Ausdrücke dieser Sprache verstehen kann".

Selbstverständlich versteht die Maschine nichts. Sie versteht die Programmiersprache nicht, sie reagiert einfach auf bestimmte Lochkartenmuster, oder wenn sie etwas moderner ist, auf entsprechende Magnetisierungs- oder Strommuster, und zwar völlig unabhängig davon, ob wir in diesen Mustern sprachliche Zeichen erkennen oder nicht. Die Maschine hat keine Sprache.

 

Software als ideologisches Konzept

Die Programmierung eines Computers ist dermassen kompliziert, dass bereits die einfachsten Maschinen, die den Namen Computer verdienen, ohne Programmiersprache praktisch nicht programmiert werden könnten. In den Software-Evolutionsgeschichten liest man häufig, dass die Entwicklung der höheren Programmiersprachen wie beispielsweise Fortran, die in die 50-er Jahre zurückgeht, mit der Zielsetzung in Angriff genommen wurde, den Programmieraufwand zu reduzieren. Das gilt natürlich noch in viel höherem Masse für die sogenannten Maschinensprachen, die gemeinhin gar nicht als Programmiersprache bezeichnet werden, sondern quasi als Verursacher des mit Programmiersprachen zu lösenden Problems erscheinen. Die auf der Ebene der Maschine unüberschaubare Programmieraufgabe wurde durch die Erfindung der sogenannten Programmiersprache lösbar gemacht.

Von der Reduktion des Programmieraufwandes durch Programmiersprachen ist ein wesentlicher Anteil darin begründet, dass die Programmierer vom Computer praktisch nichts wissen müssen. In der Tat kann von einem kommerziell eingesetzten Programmierer kaum verlangt werden, dass er beim Programmieren über die zu verwendende Zahlendarstellung oder gar über die Eigenschaften der Speichervorrichtung in einem Computer entscheidet. Die Programmiersprachen nehmen dem Programmierer diese Entscheidungen nicht nur ab, sie verstecken auch, (dass und) wie diese Entscheidungen in der jeweiligen Maschine getroffen wurden. Die Programmiersprachen bilden eine Benützeroberfläche, die die dahinterstehende Maschine im Sinne der Bedienbarkeit extrem einfach erscheinen lassen. Sie erzeugen aber - nicht nur beim Laien - die Vorstellung, dass man mit einem Computer sprechen oder ihm Befehle geben kann. Hinter der Oberfläche scheint ein anweisbares Subjekt - eine Art kleines Männchen - zu hocken.

Der Zweck des durch die Programmiersprachen suggerierten einfachen Computermodells liegt nicht - wie etwa im Volksschul-Informatik-Curriculum unterstellt wird - darin, das konstruktive Verständnis für Computer zu unterstützen, sondern darin, den Aneignungsaufwand zu reduzieren, der nötig ist, um einen Computer zu bedienen. Anhand des Computermodells, das durch die pseudosprachliche Oberfläche suggeriert wird, können die Handlungen, die der Bediener eines Computers kennen muss, einfältig-anschaulich beschrieben werden. Das Modell der virtuellen Maschine erlaubt dem Benützer beim Arbeiten mit dem Computer ein "quasisprachliches" Handeln, das seinen natürlichen Fähigkeiten "hirn-ergonomisch" entgegenkommt, auch wenn die bisher verwendeten "Computer-Sprachen" selbst noch ziemlich unnatürlich aussehen. Wo der Benützer dieselbe Tastatur, manchmal sogar dieselbe Eingabereihenfolge benutzt, gewinnt er durch den Bezug seiner Handlungen auf dieses Modell - neben der "ausdrücklichen" Anordnung der Schalterreihenfolgen - eine explizite Strukturierung seiner Tätigkeit. Die Tastenreihenfolgen, die als "Befehle" bezeichnet werden, haben auch für den Benützer einen anderen Sinn als die "Daten" oder die "Adressen".

Wo der Benützer gar keine Tastatur mehr verwenden muss, weil die Schwingungen der gesprochenen Sprache mittels spezifischer Maschinenteile interpretiert werden, scheint die Maschine nicht nur sprachliche Kompetenz, sondern auch die zugehörige sinnliche Qualität zu haben. Noch vollständiger wird der virtuelle Schein, wenn der Benützer die Maschine und deren Sensoren gar nicht mehr als abgetrennte Objekte wahrnimmt, sondern nur noch als Erweiterungen der eigenen Subjektivität. Dies ist etwa der Fall, wo das Ausgabegerät der Maschine als Brille den gesamten Gesichtskreis des Benützers abdeckt und die Bild-Ausgabe unmittelbar durch die körperliche Bewegungen des Benützers gesteuert wird, wie das etwa im virtuellen Tennis oder Golf gemacht wird. Wenn man als Teil einer solchen Maschine den (realen) Schläger bewegt, sieht man wohin der (virtuelle) Ball fliegt.

Die virtuelle Realität beruht auf Wissen über einer entsprechenden Wirklichkeit. Weil wir im alltäglichen Sinne "wissen", was passiert, wenn wir sprechen oder Tennis spielen, lassen wir uns von einer Maschine, die bestimmte Reaktionen zeigt, entsprechend bluffen. Das durch die Programmiersprache suggerierte Modell einer sprachfähigen Maschine repräsentiert aber kein Wissen über den Computer; es will nichts erklären, sondern im Gegenteil, die Bedienung des Computers ermöglichen, ohne dass man den Computer versteht. Es beruht auf der banalen, aber ökonomisch wichtigen Erkenntnis, dass man um einen Computer zu benützen, ihn so wenig verstehen muss, wie das Auto, mit dem man fährt. Ausser Acht gelassen wird dabei, dass man vom Auto normalerweise kein falsches Modell entwickelt, wenn man sich für dessen Mechanik nicht interessiert, sondern einfach kein Modell. Man nimmt kaum an, dass im Motor kleine Männchen sitzen, die das Auto durch treten oder rudern vorwärtsbewegen. Vom ABS (Antiblokiersystem) könnte man sich absurde Modelle machen. Man könnte kleine Männchen phantasieren, die aufpassen, dass die Räder nicht blokieren. Während man aber beim notfallmässigen Bremsen mit einem Antiblokiersystem, unabhängig davon, wie man sich dieses vorstellt, das Bremspedal wirklich vollständig durchdrücken muss, kann man mit dem im Computermodell unterstellten Männchen nie wirklich sprechen. Man kann nur "so tun, als ob". Daran ändert auch nichts, dass viele Benutzer nicht merken, dass sie, wenn sie dem Computer(männchen) etwas befehlen, nur so tun, als ob.

Es ist natürlich auch für Antiblokiersysteme gleichgültig, ob der Autofahrer bei einer Vollbremsung merkt, warum die Räder nicht blockieren. Diese Bremssysteme hauptsächlich darunter leiden, dass sich viele ihrer Besitzer nicht trauen, so zu tun, als ob sie voll bremsen wollten. Sich einzubilden, man spreche mit dem Computer, bedarf offenbar weniger Ueberwindung als ein Bremspedal durchzudrücken, auch wenn man die von Weizenbaum entdeckte "höchst bemerkenswerte Illusion, der Computer sei mit Verständnis begabt" nicht hat.

Wir verwenden viele Maschinen, ohne sie konstruktiv zu begreifen. Wir wissen dann einfach, dass wir nicht wissen, wie die Maschine funktioniert. Das stört uns nicht und veranlasst uns im allgemeinen auch nicht, uns völlig unsinnige Vorstellungen von der Maschine zu machen. Wir wissen, dass wir defekte Fernsehgeräte oder Autogetriebe zum entsprechenden Mechaniker bringen können, und damit verbunden, dass wir die Maschine auch selbst verstehen könnten, wenn es uns wichtig genug wäre. Natürlich wissen wir das auch bezüglich der Computer - soweit sie Hardware sind. Das, was viele veranlasst, den Computer zu mystifizieren, ist die extrem schwierige Bedienung, die er im Unterschied zu anderen Maschinen von uns verlangt, oder genauer, dass uns diese Schwierigkeiten (und - meistens - das damit zusammenhängende Wissen) durch Benützeroberflächen, die mittlerweile viel weiter als nur zu Programmiersprachen entwickelt sind, versteckterweise abgenommen werden.

Im wirklichen Computer sitzt nicht nur kein Männchen, das unsere Befehle interpretiert und ausführt, sondern gar nichts, was zur subjekthaften Instanz im Modell irgendeine Entsprechung hat. Das "kleine Männchen" sitzt nur - wie Zeus hinter dem Blitz - in archaischen Vorstellungen, die seltsamerweise auch vielen Didaktikern, die sich sonst eher als Aufklärer verstehen, sehr nützlich zu sein scheinen. Es scheint, dass am Computer etwas Mystisches ist, was nicht adäquate Modelle nicht nur erlaubt, sondern sogar sinnvoll macht.

 

Ideologie

Ideologien rächen sich. Unvorstellbare und undurchschaubare Maschinen machen Angst. Die Software-Ideologie erzeugt die Ohnmacht der Vernunft, die sich beim einen als Technikfeindlichkeit zeigt, und den andern dazu verführt, die wichtigsten Entscheidungen dem virtuellen Verstand einer Maschine zu überlassen. Eine virtuelle Realität mag häufig spassig und manchmal nützlich sein - beides aber nur, wenn sie nicht mit der Realität im engeren Sinne des Wortes verwechselt wird.


 

Literatur