Von Kellern und Schleifen

[Der folgende Text ist in den Tagen zwischen Weihnachten und Neujahr 1997/98 entstanden - zu einer Zeit, als der Crash des Neuen Marktes noch nicht einmal am Horizont zu sehen war, Google gerade erste Schritte unternahm und Microsoft unangefochtener Feind Nr.1 für jeden seriösen Hacker darstellte.

Dies war das Jahrzehnt der monolitischen Applikationen, in dem das Web eine gewisse Nebenrolle spielte, ohne daß absehbar wäre, was passieren wird, wenn es eines Tages die Hauptrolle übernimmt (daß dies irgendwann geschehen würde, war zumindest dem informierten Hacker völlig klar - einer Gruppe also, zu der ich nie so recht gehörte).

Die Thesen, die der Text entwickelt, sind Vergangenheit, und vom Lauf der Zeit als untauglich für das Verständnis unserer heutigen Welt entwertet. Trotzdem lasse ich das hier so stehen, als Beispiel, wie rasch vermeidliches Wissen Geschichte wird.

Mittlerweile gibt von meiner Seite einige aktuellere Notizen zur Definition von Computerprogramm und Programmiersprache.]

Notizen zur rekursiven Natur der computergestützten Gesellschaft

Der erste Computer den ich kaufte konnte bumm-bumm-basch wie in der Disco, auch wie im Jazzclub ting-tiggeding auf dem Ride, das aber viel schlechter weil er nur präzise Triolen hatte, keinen "Swing-Faktor" zwischen grade und triolisch: ein süßer, vorsintflutlicher Drumcomputer: wenn ich ihn mir heute vorstelle wundere ich mich daß er beige war und nicht dinosauriergrün.

Aber meine Erinnerung führt mich auf eine falsche Fährte: mein erster Computer war ein Instrument mit Tasten ähnlich denen auf einem Klavier, nur daß diese Tasten nicht Saiten und das Holz des Korpus und die Luft in ihm zum Schwingen brachten, sondern Berechnungen anstießen: 'eins eins null eins eins' usw, Sounds entstanden in weiter Entfernung von der Suche des Klavierspielers nach einem Ideal von Klang: sie waren konstruierbar. Synthetisierbare Klänge: ein Synthesizer.

Richtig interessant - deshalb erinnere ich ihn als "Nummer Eins" - wurde der Drumcomputer im Datenverbund mit dem Synthi: ein Kabel über das er Einsen und Nullen schickte, und die Sounds gehorchten seinen Sequenzen - Läufen beispielsweise die schneller und präziser waren als alles was Menschen hinbekommen, aber auch andersherum: bloß einen Akkord, erst vier Takte später der nächste, ein Keyboard spielender Mensch wäre eingeschlafen oder hätte ein Solo gewollt. Nicht so diese Sklaven.

Eine Ästhetik wurde möglich, deren Aura einem Kontrast entstand: synthetische Hintergründe, konstruierbar in Klang und Zeit; objektivierte Musik, die auf Improvisationen traf: eine eigenartige Spannung entsteht da, es gibt Aufnahmen davon (Abercrombie, nicht: Kraftwerk o.ä.).

Man bekommt eine Vorstellung, von welcher Warte ich das Thema betrachte. Sie ist anders gebaut als etwa die eines Informatikers.

Die Namen der Zahlen

Was ein Stack ist? Englisch für 'Keller', gewissermaßen der Ort an dem der Computer alte Sachen abstellt, Zeug das gerade im Weg 'rumsteht aber noch gebraucht wird.

Wenn ich (beispielsweise - blöde Frage, aber der Kontext in dem man sie stellt existiert) wissen will wie viele Buchstaben dieser Halbsatz hat, schreibe ich das in "C" wie folgt:

int laenge; laenge = strlen ("wenn ich wissen will wie viele Buchstaben dieser Halbsatz hat");

Damit schicke ich mein Programm an einen anderen Ort, nämlich zu 'strlen' ('string length'), zählen gehen. Weil es danach aber wieder zurück muß zu mir - um das Ergebnis 61 in 'laenge' abzulegen - schreibt es auf den Stack wo es gerade ist, springt, rechnet, geht in den Keller holt von dort meine Adresse und springt zu mir zurück. Schön umständlich, aber Computer sind schnell und können sich sowas leisten.

Der Stack ist also ein reichlich merkwürdiger Keller, gefüllt nicht mit Dingen sondern mit Orten: er ist wie eine eindimensionale Landkarte mit nichts verzeichnet als dem Weg zurück.

Das ist nicht alles: Viele Zwischenergebnisse von Rechnungen schreibt man sich in der wirklichen Welt auf einen Schmierzettel, nur das endgültige Resultat ist wichtig und kommt säuberlich auf ein weißes Blatt Papier. Nicht anders im Computer, der Stack spielt hier die Rolle des Schmierpapiers, 'scratch memory', kurz mal was dort hingepinselt, weiter gerechnet, schon vergessen.

Habe ich gerade 'wirkliche Welt' gesagt? die eine von der anderen säuberlich abgegrenzt? das ist, um es milde zu sagen, ungenau. Ich komme darauf zurück.

Weiter oben steht: "das Ergebnis in 'laenge' ablegen" - das klingt wie ein Bild, ist es aber nicht. Ein wenig Computertechnik: ein Bit ist entweder 'ein' oder 'aus', notierbar als '1' oder '0', andere Zeichen braucht man hier nicht Ein Byte umfaßt acht Bits: '11111111' alle Bits an, '00000000' alle aus. Ein Buchstabe, so wie er durch die ASCII (die amerikanische DIN) normiert wurde, läßt sich in einem Byte darstellen, ein 'E' z.B. als '01000101' (binär) oder '45' (hexdezimal: das sind sechzehn mögliche Werte in einer Nummer, 0 bis 9, weiter mit a = 10 bis f = 15). Ein Computer-Wort sind zwei Bytes hintereinander, in die dann eine Zahl paßt in der Spanne zwischen hexadezimal 8fff bis 7fff, -32768 bis 32767: eine merkwürdige Vorstellung davon was ein Wort ist. Jetzt kommt es: 'laenge' (im Beispiel weiter oben) ist der Name für solch ein Wort: die Variable mit dem Namen 'laenge' ist nicht dieses Wort selber sondern bezeichnet den Ort wo es steht, so wie sich das für einen Namen auch gehört: eine Adresse im Speicher des Computers, auf dem Stack beispielsweise: dort wo das Programm das Ergebnis des Zählens von Buchstaben - 61 - ablegt. Mein Name ist 'Michael' und bezeichnet den Ort an dem mein Kopf gerade raucht: vor einem Computer.

Auch ein Befehl ist nur eine Zahl, die irgendwo im Speicher steht, z.B. bei hexadezimal 'ffc15cce', da steht "in" meinem Mac gerade ein 'rts', 'return to subroutine': der Befehl 'zurück an die Adresse die auf dem Stack steht', oder, dasselbe anders ausgedrückt: hexadezimal '4e75': dies beschreibt den Unterschied zwischen dem Quellcode (return to subroutine) und dem Binärcode (4e75) des ablaufenden Programms: kein Unterschied in der Sache, Text und Zahl meinen dasselbe, werden ununterscheidbar in ihrer Differenz.

Ein Befehl läßt sich durch einen anderen ersetzen: wenn ich seine Stelle im Speicher kenne, dann kann ich dorthin eine Zahl schreiben, auch die die einen Befehl beschreibt, und zwar aus dem Programm heraus während es läuft, als Ergebnis einer Berechnung: ein Gegenstück zu 'strlen', welches keine Buchstaben zählt sondern einen neuen Befehl ermittelt: selbstmodifizierende Programme, es gibt sie wirklich, Computerviren benutzen diese Technik, verändern laufend ihre eigene Gestalt entziehen sich auf diese Weise denen die sie erkennen wollen um sie zu vernichten.

Ein seltsames System deutet sich an: Begriffe und Zusammenhänge die Sinn ergeben wenn man sie spricht, die sich aber immer auf Zahlen und Formeln reduzieren lassen: immer, ohne Ausnahme: die dann zu einer Sprache werden, unverständlich auch für den Menschen der sie spricht.

Der Stack beispielsweise ist ein Raum, in dem Wege und nur für den Moment wichtige Zahlen versammelt sind. Gleichzeitig aber ist er auch nur die Adresse dieses Raums, die Zahl die den Ort bezeichnet wo er steht. Die Wege die er aufbewahrt sind selber nur Zahlen, die Liste aller Adressen der Sprünge zurück. Auch dieser Text, so wie er gerade in meinem Computer entsteht: er besteht nicht aus Worten sondern Zahlen, binär kodiert im Speicher meines Macs, und das Betriebssystem, die Textverarbeitung, mit der ich ihn schreibe sind Zahlen die sich als Text lesen lassen: Anweisungen, Befehle, Schleifen: all das was sich zu dem Programm zusammensetzt mit dem ich Buchstaben erst auf den Bildschirm, dann auf Papier bringe. Das System ist selbstbezüglich: Sprache und Zahl fällt ineinander. Der Widerspruch aus dem heraus Naturwissenschaft zu Philosophie werden kann: das eine wird dem andern gleichgesetzt. Dialektik zerfällt.

An ihre Stelle tritt: Rekursion.

Rekursion

Was rekursive Schleifen sind?

label Auf der Wiese ist ein Igel. Wenn auf der Wiese ein Igel ist gehe zwei Zeilen zurück, lies weiter bei 'label'.

Am Weiterlesen? Na klar, man ist ja kein Computer, aber Computer sind doof und machen was man ihnen sagt. Für so eine Kiste wäre mein Text jetzt zu Ende und ich hoffe daß 'Word' nicht gleich in sowas wie dort oben hineingerät, passiert immer mal wieder, dann ist meine Arbeit weg (besser mal eben auf 'save' drücken, den Text bis hierher auf Diskette sichern) - das Programm stürzt ab, beendet sich von selber oder wird vom Betriebssystem gekillt, die Daten die nicht auf Diskette sind verschwinden, werden uninitialisierter Speicher, wenn man Pech hat ist der ganze Computer weg. Anmachen, wieder starten, der Keller wird aufgeräumt und die Orte und Wege werden neu gezeichnet: das war ein Stacküberlauf.

Was ein Stacküberlauf ist? Wenn der Keller so voll ist, daß einem die Sachen aus der Tür entgegen kommen, bloß daß der Computer dann immer noch mehr Zeug hineinstopft, die Tür aus den Angeln fliegt, weiterstopft in den Kellerflur, das Treppenhaus, solange bis sein Haus das Speicher heißt unbewohnbar wird. Also: ich rufe eine Funktion: Rücksprung auf den Stack. Die Funktion ruft sich selber: Rücksprung auf den Stack: Die Funktion ruft sich selber... der Stack wächst und wächst, bis er den Speicher des Programms gefressen hat, frißt weiter, den Speicher etwa in dem der Binärcode des Programms steht oder der des Betriebssystems. - Er reiste in die Vergangenheit, um seinen Großvater zu ermorden, tötete ihn und vergewaltigte seine Großmutter zeugte seinen Vater. Kaum zurück in der Gegenwart erfuhr er, daß sein Bruder die Zeitmaschine stehlen wird um die Oma zu rächen, reiste nochmals zurück und erschlug seinen Bruder, der mit entsichertem Revolver vor ihm stand: man kennt solche Geschichten. In Computern sind sie Funktionsbestand.

Was eine Funktion ist? Eine Abfolge von Befehlen mit definiertem Anfang und Ende: in den Anfang wird gesprungen, das Ende führt zu einem Blick auf den Stack und dem Sprung zurück. Und ein Befehl? Addiere, subtrahiere, springe: das sind die wichtigsten, die anderen sind schon zusammengesetzt, multiplizieren etwa bei älteren Prozessoren.

Es verblüfft mich immer wieder, welche Macht solches Verknüpfen gewinnen kann (eine alberne Verblüffung eigentlich, wenn ich mit dem Lernen von Sprache bei einem Baby vergleiche): ich klicke zweimal auf den Knopf der Computermaus, ein Zeiger auf dem Bildschirm deutet auf ein Bildchen, sechzehn Pixel hoch, eine Ikone. Der Computer reagiert und die Platte beginnt sich zirpend zu drehen, Wörter einer besonderen Bedeutung holt er sich von dort, lädt sie an einen freien Platz in seinem Speicher gibt ihnen Sinn, indem er auf sie eine Zahl addiert die jenen Platz beschreibt, setzt eine weitere Zahl auf den Beginn der enträtselten Bedeutung, die Zahl wird hochgezählt bewegt sich liest Wörter, nicht wie ein Buch, sondern einen Satz gleich hundert Mal, stößt auf ein Wort das auf Seite einundfünfzig verweist, dort eines, das fast ans Ende führt, springt zurück, kreist, zählt, springt. - Ich klicke auf das Abbild eines Schalters, eine Metapher für den Startknopf auf einem Tonbandgerät: eine Uhr beginnt zu ticken, jede Sekunde tausend Mal, jeder Tick stößt ein Lesen von Wörtern an, unterbrochen durch einen Sprung hierhin und dorthin und ein paar Bytes auf den Port, wusch, durch durch ein Kabel, elektrisches Blitzen trifft das Silikon in einem Synthi, ein Klang entsteht dort, wird von Sätzen und Lesen und Springen geformt, entweicht durch einen Wandler in das Kabel, an dem mein Kopfhörer hängt: pa, das war der Schlag der Bassdrum, gleichzeitig hört sich das an, aber ein paar Byte auf den Port und elektrisches Blitzen braucht Zeit, Bruchteile einer Sekunde später der Klang einer Flöte.

Die weit größere Macht von vernetzten Computern muß ich nicht erwähnen, sie versteht sich heute von selbst - und daß dies so ist bringt mich dazu diesen Satz zu schreiben.

Programme schreiben

Wieso ich weiß, was ein Stack ist? Einer der Musik macht? - Weil ein selbstbezügliches System sich selbst erhält, Willen zum Überleben entwickelt und in die Evolution der Arten eingreift, zu einem Bestandteil von Natur wird.

Abstrus? mal sehen.

Mein erster Computer so wie die meisten Leute ihn sich vorstellen wurde ein Atari ST Zehnvierzig, populär damals, ganz leistungsfähig für den Preis. Das Notenprogramm kaufte ich im Musikgeschäft und übersah zunächst die gemeinsam mit dem Rechner gelieferten Disketten. Aber ich bin neugierig, irgendwann legte ich sie doch ins Laufwerk: Basic? Wasn das? Eine Programmiersprache? Was ist das: eine Programmiersprache? - Ein Freund beantwortete mir diese Fragen und die die folgten; ich fing an in Basic zu programmieren, kaufte wenig später ein professionelles Entwicklungssystem lernte die Sprache "C", vergaß meinen Baß und schrieb ein Drumcomputerprogramm - und das ist jetzt kein konstruierter Witz um Selbstbezüglichkeit zu demonstrieren, ich habe solch ein Programm geschrieben, irgendwo liegt noch eine Diskette mit dem Quellcode herum, ich bin geneigt, ihn als Beweisstück diesem Text anzuhängen.

Kodieren: das ist den Text zu schreiben der zur Zahl kompiliert wird (jene Programme die Text in Binärcode übersetzen heißen tatsächlich 'Compiler', der Gipfel von Selbstbezüglichkeit, weil ein Compiler den Text der ihn kodiert übersetzen kann): das ist ja inhaltsleer eigentlich, der Weg ist das Ziel, nicht das fertige Ergebnis das Programm das man schreibt: auf dem Weg liegen Rätsel, die man löst indem man fremde Bibliotheken zu nutzen lernt, sich Werkzeuge selber baut, wo die Bibliotheken Lücken haben, die auszuführenden Schritte erst in die richtige, dann in die effiziente Ordnung bringt. Eine Faszination des 'Herstellens' entsteht da, bei mir, sie hat mich bis heute.

Ich habe Jahre damit zugebracht, ein Notationsprogramm zu schreiben schreibe daran noch immer.

"Und? was machen die schwarzen Punkte?" grinste mein Chef, als er zurück kam. - "Gut geht's denen, drehen weiter ihre Seltsamen Schleifen", erwiederte ich, doch etwas säuerlich, weil er so gut erholt klang und ich kämpfen mußte wie blöde: wieso gibt es nirgends ein Buch in dem man nachlesen kann wo eine lange Note graphisch zerteilt werden muß? beim Taktstrich, das ist klar, da wird eine Note in eine zweite übergebunden. Darüber hinaus gibt es noch andere Stellen, aber wo? eigentlich völlig offenkundig, ein geübter Leser wie ich kann auf ein Notenblatt gucken und das mit einem Blick entscheiden. Ein Computer jedoch braucht genau formulierte Regeln, und diese Regeln schienen mir in der Höhle der platonischen Ideen verborgen, ein Ding an sich, nicht in seine Bestandteile zu zergliedern. - Bei dieser Geschichte kam dazu als enthielte nicht so schon genug Gemeinheiten daß die Regeln in einen rekursiven Prozeß eingebettet werden mußten: eine lange Note zerteilt sich in zwei neue, die möglicherweise selber wieder aufgeteilt werden müssen. Ich haßte Rekursion! nicht weil ich nicht wußte wie man sie auflöst - darüber gibt es Bücher: drei Sprungbefehle, dann ist sie weg - sondern wegen des Problems der Abbruchbedingung, und das hat man auch bei einer aufgelösten Rekursion: wann ist der Prozeß zu Ende? Klar: wenn alle Noten geschnitten sind. Manchmal wollte mein Programm aber nicht aufhören, schnitt und schnitt alle Noten auf die Länge null, und sowas gibt es nicht in der realen Welt war dem Computer egal und machte auch dann noch weiter, erfand Noten mit negativen Längen: Töne die aufhören bevor sie beginnen.

Man versteht annäherungsweise, warum dieses Projekt kein Ende nimmt.

Mein alter Freund macht übrigens Musik in seiner Freizeit: seit Jahren versucht er die rekursiven Strukturen der Chaosmathematik in Töne und Klänge aufzulösen; er gibt nicht auf, man kann ihm hundertmal sagen daß da nur Unmusik herauskommen wird, aber nein, er besteht darauf, macht weiter. Er meint, man könne Musik in ihre Atome zertrümmern, um daraus völlig neue Moleküle zu synthetisieren - ich kann ihm in dieser Überzeugung nicht folgen glaube lieber an die Parametrisierbarkeit der Notenschrift.

…und wage die These: das System das einen Rechner konstituiert, erst recht eines das vernetzte Rechner bilden: es ist zu Gesellschaft geworden, zu Natur, es führt seinen Kampf ums Überleben, es führt ihn in unseren Köpfen: dort, wo es lebt.

Ich betone ausdrücklich, daß ich dies nicht bloß für eine Metapher halte.

Die computergestützte Gesellschaft: drei Beispiele.

Wenn ich mit heute einen frühen Song der Beatles anhöre wundere ich mich bloß noch, daß dieses Rumgeeiere, diese unglaublich instabile 'Time', die Ungenauigkeit des Rhythmischen mir entgangen ist als ich die Songs vor vielleicht zwanzig Jahren zum ersten Mal hörte. Freunden von mir geht das ähnlich, diese Erfahrung ist nicht bloß subjektiv: woher kommt sie, was bringt sie zustande? Die Antwort liegt nahe, wenn man sich die Musik anhört, die die Popindustrie seit Anfang der achtziger Jahre hervorbrachten, Discomusik und Techno als Höhepunkt.

Achtziger Jahre? Ich kann es genauer datieren: 1983, da wurde die Definition der Schnittstelle zwischen Musikinstrumenten und Computern formuliert, und mit ihr kamen die ersten Synthesizer und Drummachines die dieser Spezifikation folgten: 'MIDI' ('Music Instruments Digital Interface'). Dort liegt auch die Geburtsstunde der Massenproduktion von computergenerierten millisekundengenauen Beats, die uns noch immer unverwässert begleiten, Spuren hinterlassen in der Form einer veränderten Gewohnheit des Hörens: wir sind unduldsam geworden gegen rhythmische Schlamperei in einem geradezu bescheuerten Maße, wir wurden dazu von Computern konditioniert, erzogen. An dieser Stelle kann man die Rechner in der Rolle des handelnden Subjekts mit Händen greifen.

Seltsam: ich habe von Beginn an die Noten im Computer ungenau gemacht, sie geschoben bißchen zu früh auf die 'Eins', ein wenig zu spät eine 'Drei', zumindest dann wenn ich den Effekt des Objektivierten mildern wollte. Das hat in der Popbrache keiner getan, keiner zumindest der einen gewissen Einfluß hatte. Führt zum Schluß, daß diese Objektivität, jene Kälte der Maschinen - diese 'ja ja nein nein', aus dem kein 'vielleicht' herhaushörbar ist - hingenommen vielleicht sogar gewollt wird. Oder wollen dies die Rechner erwarten unseren Gehorsam?

Empfindet man die modernen Grooves als kalt, errechnet? Nicht die Mehrheit, wenn ich mir anhöre wozu man im Tanz sich wiegt.

Es gibt andere Programmiersprachen neben 'C'; mit den in der Tabellenkalkulation 'Exel' eingebauten Formeln und Befehlen etwa kann man strukturiert programmieren. Allerdings bezeichnet man den typischen Anwender von 'Exel' nicht als Programmierer, sondern als Assistenten des Managements, und solche Leute haben in deutschen Firmen bekanntermaßen Schwierigkeiten mit der englischen Sprache. In der deutschen Version von 'Exel' werden neben den Texten in den Menus und Dialogen deshalb auch gleich die Namen der Formeln übersetzt: aus 'SUM' wurde 'SUMME', etc.
Der Witz ist, daß es solcherart Verspotteten zugetraut wird die Sprache der Computer zu begreifen: wer für seinen Chef eine Tortengraphik vorlegen will - etwa über die Umsätze der letzten fünf Jahre, unterteilt in die verschiedenen Firmenbereiche - der muß recht tief in eine reich mit Formeln und Schleifen gefüllte Trickkiste greifen, Funktionen schreiben, womöglich die eigens für 'Exel' erfundene Makrosprache lernen. Die die dieses Programm vermarkten müssen etwas gedacht haben wie: Fremdsprachen sind ein schwieriges Gebiet, aber die Sprache der Programmierens versteht jeder, sobald man ihre Begriffe lokalisiert: ihre Grammatik ist universell und für jeden verstehbar. Und so ist es ja auch.

Nehmen wir an, ich denke nach über die Kursbewegung einer bestimmten Aktie. Ich besitze einen Computer. Ich befrage ihn nach seiner Meinung. Er wird mir nichts über fundamentale Unternehmensdaten berichten könne, ob die Firma und wenn wieviel Gewinn einfährt usf, er hat aber keine Probleme, mir den Kursverlauf der Aktie graphisch zu veranschaulichen, ein paar Befehlte und er bildet Durchschnittslinien, den Durchschnitt der vergangenen zweihundert Tage etwa, zeigt den aktuellen Kurs wie er diesen von oben durchbricht, ruft mir damit zu: verkaufen! Wie bitte? wer ruft da? was für ein Zusammenhang besteht zwischen einer Zweihundert-Tage-Linie und der Linie der aktuellen Kurse? Dieser: ein nicht gerade kleiner Kreis von Börsianern - sie nennen sich selber 'Chartisten' - hat sich darauf geeinigt, genau dann zu verkaufen wenn der Kurs einer Aktie seinen Durchschnitt von oben unterschreitet: der Kurs fällt weiter, eine Tatsache, die einem der Computer mit seiner Darstellung vom Kursverlauf vorhergesagt hatte. - Man nennt so etwas landläufig 'self fullfilling prophecy'. (Man muß sich klar machen: im deutschen Parketthandel werden an schwachen Tagen sieben Milliarden Mark Umsatz gemacht; weltweit sind es - an einem Tag! - vier Billiarden Dollar, da kann der Jahreshaushalt einer führenden Wirtschaftsmacht wie Deutschland nicht mithalten!) Ich sehe in diesem Begriff eine schiefe Metapher für etwas Anderes: die Macht der rekursiven Natur von Computern.

Computer sind totes Werkzeug? Unreflektiertes Gerede, wenn man mich fragt. Ich kann meine Behauptung, daß sie in den Köpfen der Menschen ihren Lebensraum finden sogar erweitern: auch andre Bereiche unserer Körper dienen ihnen manchmal als Werkzeug, wenn wir tanzen beispielsweise, in ihrem Rhythmus Autos fertigen oder unsere Augen den Unterschied zwischen einem Foto und einem gepixelten Ausdruck verlernen.

Rekursion als Denkfigur

Was ein Algorithmus ist? Die Beschreibung der Abfolge in der Befehle geschehen müssen um zu einem bestimmten Resultat zu kommen: ein Verfahren zur optimierten Suche in einer Datenbank etwa, oder das Aufstellen jener Regeln, die ein Programm den Namen für einen Akkord sagen läßt. Ein Programm ist abhängig von exakten Regeln, und dies ist der einzeige Grund, warum man mit einem Computer keinen Sex haben kann. Nicht daß es nicht genügend Leute gäbe die das dennoch versuchen.

Wie macht man das, auf einem Bildschirm der nur schwarzweiß kann ein Graumuster zu erzeugen? eine Folge von Bit an. Bit aus, jede Zeile beginnt anders:

01010101 10101010

Die Illusion ist perfekt, es sein denn, man guckt mit der Lupe.

Auf einem Farbbildschirm geht das im Prinzip genauso, grau entsteht durch gleiche Anteile rot, grün, und blau. Das Verfahren ist dasselbe, bloß daß man vergeblich mit der Lupe sucht.

"Was schreibst du denn gerade?"
"Ein Essay."
"Ein Essay? Aber du schreibst ja gerade unsere Unterhaltung, wörtliche Rede. Ist das dann nicht eher eine Erzählung?"
"Na - ein erzählendes Essay vielleicht?"
"Weiß nicht, komisch. - Aber wenn ich schon mal das Wort habe, würde ich deinen Lesern gerne..."
"Verschwinde".
"Sei nicht so gemein! Ich wollte nur sagen, Du solltest Douglas R. Hofstadter erwähnen..."
"Genau das werde ich nicht tun! Verschwinde endlich."
"...Björk!"

Mit wem rede 'ich' da? einer Frau? und wie sieht sie aus - ist sie schön? und was läßt mich vom Thema abschweifen und in einer Rede zu verlieren die ich mit meinem Computer führe?

Eine sehr altmodische Form von Rekursion, so kommt mir das jedenfalls vor; aber wo sonst findet man sie in der Literatur? Zeitreisegeschichten, klar. In Märchen? Fällt mir keins ein. Narzisus, der sich in sein Spiegelbild verliebt? Zur Rekursion würde das wenn der Spiegel diese Liebe erwiedert.

Ich habe den Verdacht, daß auch in der Literatur Szenen wie die oben skizzierte ohne Computer nicht gedacht werden können, ich betone Verdacht habe zuwenig gelesen. Aber Rekursion taucht doch zumindest in der Mathematik recht früh auf, z.B. um das Jahr 1200 in den Zahlenreihen Fibonaccis?

'Spirale' oder 'Schraube', jene Bilder die man gern im Zusammenhang mit Hegels Dialektik verwendet: sie sehen aus wie Rekursion auf den ersten Blick, haben damit auch eine gewisse Ähnlichkeit. Zwei Dinge stehen in dialektischer Spannung zueinander, werden 'aufgehoben' in einem Ding 'höherer Ordnung': dies hört sich fast an wie mathematische Rekursion - man füttert eine Formel mit einem Ergebnis, das sie selber hervorgebracht hat. Bloß daß hier am Ende nur wieder eine Zahl steht, von höherer Ordnung keine Spur. Dialektik ist nicht selbstbezüglich sondern spürt der Spannung in den Objekten nach die sie befragt. So kann aus Bewußtsein absolutes Wissen werden (in der Philosophie Hegels). Rekursion ist so gesehen kein Prozeß sondern steht für sich selbst: der Spiegel, in dem sich ein Spiegel spiegelt ein Spiegel spiegelt, bis ins Unendliche: das ist ausschließlich der Spiegel selber, gefangen in einer Falle, die seine eigene Gestalt ist: er bleibt unabänderlich er selber.

"Ich versteh' schon ganz genau, was du da sagst: du willst mir unterstellen..."
"Du hast mir nicht zugehört!"

Wenn ich eine Behauptung formuliere, steht es meinem Gegenüber frei, dieser eine andere gegenüber zu stellen kann aber ebenso die Ebene wechseln und über die Art in der ich etwas sagte böse sein, sich freuen, angegriffen fühlen ausgelacht usf. Zur Endlosrekursion kann das in jenem Moment werden, in dem man diese Ebenen vermischt, der eine auf dieser der andere auf einer anderen redet ohne daß dies bewußt wird. Menschen sind nicht so einfallslos wie Computer und stürzen dämlich ab: sie stürzen sich aufeinander.

Skizze einer Theorie

Kann ein Computer ein Bild malen? ein Lied komponieren? ein Gedicht schreiben?

Oder - wenn er dies nicht kann - wenigstens den Sinn hinter diesen drei Fragen begreifen, sie beantworten, mit einem 'könnte'? Oder womöglich sogar zum Schluß kommen, daß ein Progamm nicht die richtige Adresse ist, um einen Konjunktiv zu dekodieren?

In die Auflösung dieser Fragen wurde reichlich Geld investiert und dem Nachdenken über sie verdanken Forscher wie Douglas Hofstadter ihren Ruhm (und ich seinen deutschen Übersetzern den Begriff der 'Seltsamen Schleifen'). Wie auch immer: das interessiert nicht mehr. Die Forschung über 'künstliche Intelligenz' ist am Ende, gescheitert, das Schachprogramm das auch einen Großmeister plattmacht mit meinem Notenprogramm vergleichbar: mühsam einstudiertes Wissen, keine Schlußfolgerung überrascht oder wirkt nur entfernt intelligent. Es gibt Belege genug, um mein Desinteresse zu begründen.

Weit wichtiger scheinen mir die offenen Punkte: beispielsweise die Frage nach dem Vordringen der Funktionsweise von Computern in unsere Köpfe, unsere Körper. Um sie einzukreisen: Naturwissenschaften ermöglichen die Technik, aus der unserer Wohlstand hervorgeht (mal dahingestellt, wie es um einen Wohlstand bestellt ist, der ungerecht verteilt ist, keine Rücksicht auf die Endlichkeit natürlicher Resourcen nimmt, etc.). Da wird es schwer, ihr Verfahren beim Abbau von Erkenntnis in Frage zu stellen: man nörgelte dann sozusagen am Brötchengeber herum.

Computer scheinen ebenso unangreifbar: sie spucken Daten aus, die allen möglichen Spielarten wissenschaftlicher Forschung Grundlage sind, bereiten sie so auf, daß ein Mensch sie überhaupt erst überblicken kann. Für die Wetterprognose sind Computer ebenso unverzichtbar wie für das chemische Versuchslabor aus dem neuentwickelter Klebstoff für das Binden von Büchern kommt, um nur zwei beliebige Beispiele herauszugreifen. Wer sich zum Hightechfeind erklärt, macht sich letzlich lächerlich, weil er mit den Resultaten von Hightech lebt, leben muß (in letzter Instanz mit dem Flieger, der ihn auf die einsame Insel bringt).

Die Ergebnisse unablässigen Rechnens umstehen alle Bereiche der Gesellschaft, die Maschinen die sie hervorbrachten finden sich in fast jedem Labor und Büro, immer häufiger auch in unseren Wohnzimmern. Aber auch die rekursive Struktur von Computerprogrammen dringt in Gesellschaft ein, durchdringt in zunehmendem Maße unser Denken. - Ich versuche hier mal einen Salto: hat denn die Existenz von Rechnern und Programmen nicht auch Auswirkungen auf die Fragen, die wir stellen um sie mit ihrer Hilfe zu beantworten?

Werkzeuge der Erkenntnis wie z.B. ein Fernrohr werfen Schatten auf die Erkenntnis die man mit ihrer Hilfe gewinnt. Es ist naiv anzunehmen sie seien objektiv, verlängerten gewissermaßen nur eine ansonsten genuin menschliche Wahrnehmung: die Bilder vom Mars oder die die das Hubbleteleskop zur Erde funkte etwa: sie suggerieren einen wirklichkeitsgetreuen Blick auf das Universum. Ein Foto zieht jedoch von der Wirklichkeit den subjektiven Blick ab: ein grandioses Bergpanorama etwa wirkt auf einem Foto seltsam flach, läßt das Erlebnis des Schauens unerklärt, funktioniert allenfals als Stütze des Erinnerns. Die Enttäuschung beim Betrachten von Urlaubsfotos verhält sich seitenverkehrt zur Täuschung der wir aufsitzen, wenn wir aus Bildern vom Weltraum auf dessen Beschaffenheit schließen.

Ein Werkzeug das wir benutzen um zu sehen schlägt auf unser Sehen zurück. Computer als solch ein Werkzeug sind da nicht anders. - Ich kann das zuspitzen: ein Werkzeug gewinnt Macht über den der es benutzt, Computerpower ist ein Bestandteil des Herzens unserer Gesellschaft.

Was mir Angst macht ist nicht, daß die Logik der Computer uns beherrschen könnte. Ich fürchte mich vor der Herrschaft der Funktion, die solche Logik ermöglicht: dem Verfahren der Rekursion. Es gibt Anzeichen dafür, daß die Seltsamen Schleifen unser Leben beeinflussen: meines beispielsweise, ich habe Beispiele erzählt. Aber auch das Leben dessen, der dieses Essay liest und sie spätestens jetzt in seinem Kopf mit sich herumträgt. Oder das desjenigen der mit Chartanalye einen Haufen Geld verloren oder gewonnen hat. Oder das des Unternehmers, dem Gewinn- oder Verslustgraphiken die Bewunderung oder den Haß der Umwelt zuzogen, weil er sie zum Anlaß nahm Arbeiter zu entlassen oder einzustellen.

Menschenmaschinen

In "Per Anhalter durch die Galaxis" gibt es den berühmten Witz, in dem der Computer nach jahrhundertelangem Rechen die Frage nach dem 'Sinn des Unsiversums und Allem' mit einer Zahl beantwortet. Schrecklich lustig finde ich das nicht mehr. Ich habe kürzlich eine Geschichte über eine Liebe geschrieben, deren Scheitern - plausibel im Zusammenhang - durch eine Zahl erklärt wird: sie gibt ihr ihren Titel und lautet 'Achtundzwanzig', das ist die Fehlernummer für einen Stacküberlauf auf einem Mac.

Wenn man sich noch einmal kurz die 'selbstmodifizierenden Programme' in den Kopf ruft, kann man vielleicht nachvollziehen, wieso ich über genetische Manipulationen nur verhalten grinsen kann, so primitiv und unvollstädig kommt mir das vor. Ein Lamm klonen! wie langweilig! wir hier vor unseren Tastaturen können eine Person aus Text heraus erschaffen - dem Text des Codes den wir schreiben.

Die erste Frau in den Netzen existiert bereits; sie heißt Lara Croft. Wenn wir es nur wollten bekäm Lara eine Macht über sich selber die keine Grenzen kennt, wirklich wortwörtlich: keine Grenzen: weil sie die Macht haben könnte sich in etwas zu verwandeln das wir nie vorhergesehen haben: denn wir könnten beschließen etwas wie Schicksal überhaupt erst in Gang zu setzen - wobei wir die Macht über die konkreten Formen von Schicksal den Maschinen überlassn würden. Lara Croft hätte dann die Freiheit sich z.B. in einen Mann zu verwandeln, ja selbst diese: ihren Körper abzulegen, völlig einzutauchen in den Strom aus Daten, unsichtbar zu werden für alle die nach ihr suchen.

Lara lebt gar nicht? Wieso das denn! Wenn man doch sogar dem Helden einiger Computerspiele leibhaftig begegnen kann, Super Mario wohnt in Hollywood, auch wenn er sich im Alltag lieber Bob Hoskins nennt, einen Film unter seinem wahren Namen hat er immerhin gedreht.

Polmik bloß? Weiß nicht: Lara Croft und Super Mario sind Figuren aus den Märchen unserer Zeit, und wer von uns etwas Älteren wollte ernsthaft bestreiten, daß es irgendwo den Wald gibt, in dem Schneewittchen lebt?

Die vorstehenden Absätze werfen selbstverständlich dennoch Nebel, bauen mit an einem Mythos den es zu entzaubern gilt. Aber dieser Nebel ist dummerweise nicht so dicht wie man hoffen könnte: Alan Turing hat bereits in den dreißiger Jahren einen Test vorgeschlagen, der es erlauben soll festzustellen ob eine Maschine intelligent ist oder nicht: ein Mensch führe ein Gespräch mit zwei Partnern, einer menschlich wie er, der andere eine Maschine. Selbstverständlich darf er keinen von beiden sehen oder hören, die Kommunikation findet in Schriftform statt. Wenn der Interviewer nicht mehr unterscheiden kann wer Mensch ist und wer Machine, ist laut Turing der Sprung in die künstliche Intelligenz geschafft:

"Hie ist Achim, ist noch wer da?"
"Hallo Achim, hier ist Lara."
"Hallo. Heißt du wirklich Lara?"
"Nein. Bist du ein Mann?"
"Rate mal!"

...usw, so oder ähnlich lesen sich heute Chats im Internet, ich lese sie als Turingtest und komme zum Ergebnis: alles Maschinen.

Unsere Sprache nimmt computerhafte Züge an: da wo wir uns auf der Datenautobahn bewegen sowieso - dort müssen wir uns zwangsläufig in der Form unserer Rede anpassen, die Kürzel verwenden beispielsweise ohne deren Kenntnis man die Suchmaschinen im Internet nicht bedienen kann (und ohne Hilfe beim Suchen findet man dort gar nichts). Aber auch überall dort, wo auf der Grundlage von Computerarbeit argumentiert wird passen wir unsere Rede an: in den Konferenzen des Mangements, wenn Umsätze anhand von Tortengraüphiken diskutiert werden, bei wissenschaftlichen Vorträgen, wenn Folien mit statistischen Daten projiziert und erläutert werden, in der Schule, wenn im Soziologieunterricht Chaosmathematik zum Thema wird, etc. Es kann gar nicht anders sein, daß das Verfahren auf das Denken und damit auf den Ausdruck von Denken, nämlich Sprache durchschlägt. Behaupte ich mal einfach. Sage es nochmal anders: weil Computer sich nur sehr ungern anpassen gehen die Menschen einen Schritt auf sie zu. Man ist ja gezwungen miteinander klarzukommen.

Wenn unsere Lebensäußerungen rekursiver Natur sich anpassen, kann man mit einiger Berrechtigung den Spieß umdrehen: rekursive Natur erhält selber Aspekte des Lebendigen. Aber es kommt ja noch viel dicker: Programme haben menschliche Schwächen. Sie tendieren zur Faulheit, rauchen zu viel oder kauen Fingernägel.

Verkohlte Wanzen

Was ein Bug ist? Englisch für 'Wanze', meint in diesem Zusammenhang einen Fehler in einem Programm: zu einer Zeit, als Computer noch ganze Säle füllten und ihre elektrischen Schalter wahrnehmbaren Platz beanspruchten, suchten die Wissenschaftler nach einem Fehler, fanden schließlich in einer verkohlten Wanze zwischen den Schaltern eines Relais dessen Ursache. Daher kommt die Metapher.

Programme sind voll von verkohlten Wanzen, Fehlern.

Jedes.

Es gibt keine Ausnahme.

Dies ist das erste Gesetz der Informatik, und es mögen beliebig viele Experten aus Mangement oder Marketing oder Sales diesen Fakt bestreiten, ihn verleugnen, seine Existenz in Meetings mit den Investoren abstreiten, die Kunden zu überzeugen versuchen daß die Welt schön ist: es gibt kein Programmm ohne Bugs. Dies ist eine unumstößlich bewiesene Tatsache.

Flugangst? Nein? Aber gleich.

Ein Airbus ist vollgestopft mit Rechnern, der Pilot hat wohl noch genau eine Funktion, er dreht Däumchen. Natürlich weiß man, daß die Programme die den Flieger regieren vollgepackt sind mit Fehlern, deshalb gibt es für jede Funktion gleich drei, drei unterschiedliche Programme die von verschiedenen Teams entwickelt wurden und jeweils einen anderen Algorithmus benutzen um dasselbe Problem zu lösen: wenn eines von ihnen ein von den anderen abweichendes Ergebnis liefert, darf der Captain eine Notlandung einleiten. - Eine Übertreibung? Nein, leider.

Hier mal ein Bug aus meiner Praxis: ein Algorithmus zur Erkennung von Akkorden kann sehr einfach sein, eine Liste aus Tönen die einen Akkord zusammensetzen verknüpft mit einem Namen: man geht die Liste durch bis man in ihr die gerade erklingenden Töne findet, dann hat man auch den Namen. Was passiert, wenn man über die Liste hinaus liest? - ich höre verzweifeltes Stöhnen auf den billigen Plätzen: aber ja, auch das geht: man kann in einer Liste die zwei Einträge hat den dritten lesen. Da steht dann natürlich nichts Sinnvolles drin, irgendein Kraut halt, ein komischer Name in diesem Beispiel. Kann aber auch schiefgehen, wenn nämlich richtig Müll dort steht: gar kein Name, den das Programm aber trotzdem versucht auf den Bildschirm zu bringen und dabei abschmiert: man muß nur Pech haben.

Der Einwand, Sofware würde doch aber getestet, bereits in der Entwicklungsphase müßten sich solche Fehler bemerkbar machen: schon richtig, manchmal (meistens?) ist das auch so. In diesem Fall wurde aber 1) mit Akkorden getestet, die in der - nahezu vollständigen - Liste tatsächlich vorkamen, ihr Ende also nie erreicht wurde - (2) in einer Rechnerkonfigiuration getestet, in der - zufällig - "kein Name" hinter dem Ende der Liste stand. - Das Programm stürzte dann bei einem Benutzer ab (und zwar ständig, schickte laufend die Arbeit von Stunden zum Teufel), der freitonale Musik mit ihm erarbeitete; und der zudem anders konfigurierten Speicherin seinem Rechner hatte. Dieser Bug war acht Jahre in dem Programm, bevor er gefunden wurde!

Wie er zustande kam?

while (i++ <= sizeof (liste)) {…}

Wie er beseitigt wurde?

while (i++ < sizeof (liste)) {…}

- dies allerdings im Kontext von abertausend Zeilen Code.

…und ohne das näher zu erklären, man kann es aber erahnen: ein bescheuerter Tippfehler. Hat man den Programmierer entlassen? man überlege was passierte würde jede Sekretärin fliegen weil ihr ein Tippfehler unterläuft: Menschen machen Fehler, und deshalb kauen Programme Fingernägel. Oder fliegen Raketen in die Luft oder fallen Flugzeuge vom Himmel (aber die vermeintliche Unfehlbarkeit von Computern ist ein ganz anderes Thema, nicht minder interessant).

Oder man sitzt dem Irrtum auf, Computer lieferten Wirklichkeit. Das freilich ist ein Bug der im System steckt.


Januar 1998