Computerprogramme transportieren Botschaften aus einer fremden Welt. Die meisten Menschen verstehen sie nicht, und die, die das tun, sind Spezialisten. Wir nennen sie ProgrammiererInnen, SoftwareentwicklerInnen, InformatikerInnen. Christoph Kappes ist Jurist, Gründer mehrerer IT-Firmen und Programmierer. Über seine Anfänge berichtet er:
"Als Student habe ich bei der Volkshochschule PC-Kurse gegeben, wo ich dann in 52 Doppelstunden PC-Grundschulung mit den Leuten gemacht habe. Wir haben dann in der Gruppe Computer gespielt, acht Leute waren Speicher, einer war Prozessor, zwei Leute waren der Datenbus. Also die waren gut beschäftigt, die Daten hin- und herzutragen! Eine Multiplikation dauerte fünf Minuten, das war sehr unterhaltsam! Und die Leute haben da tatsächlich dann auch begriffen, wie so ein Ding grundlegend funktioniert."
Am Anfang waren Algorithmen
Wie ein Computer grundlegend funktioniert weiß auch der emeritierte Informatikprofessor Jochen Ziegenbalg. Er ist Autor des Standardwerks "Algorithmen von Hammurapi bis Gödel". Algorithmische Muster seien eine wichtige Grundlage für Computer und Programmiersprachen:
"Ich denke ja, dass fast jede menschliche Tätigkeit – oder sehr, sehr viele menschliche Tätigkeiten – algorithmischer Natur sind. Wir denken, wenn wir ein bestimmtes Ziel erreichen wollen, denken wir in Teilschritten: Welche Teilschritte sollte man ansteuern, um dieses globale Ziel zu erreichen? Und schon dieses Zerlegen eines komplexen Problems in Teilprobleme, in Teilschritte, ist eine ganz wichtige algorithmische Tätigkeit."
Jochen Ziegenbalg: Algorithmen von Hammurapi bis Gödel. Springer Spektrum, 1996.
Für Martin Burckhardt, Philosoph und Programmierer, spielt sogar Magie eine wichtige Rolle:
"Die Programmierung ist letztlich eine Abstraktion. Sie hat einige Implikationen. Zum Beispiel: Lichtgeschwindigkeit. Die Elektrizität, das ist eine Implikation. Darüber denken Programmierer nie nach! Oder zum Beispiel, dass es eine "creatio ex nihilo" ist. Dass ich zum Beispiel sagen kann: Ich definiere eine Variable, dann ist sie da. Gesagt – getan! Ich war schon älter, als ich programmiert habe und saß vor diesem "Gesagt – getan", das hat mich irritiert! Wo gibt’s das sonst? Das ist Zauber … Magie!"
Dieser Magie kann man sich bei einem Besuch in der informationstechnischen Sammlung des Deutschen Museums in München nähern. Peter Fuß erläutert sein Konzept:
"Meine Führung geht grundsätzlich einem Thema nach. Dieses Thema lautet "Vom Abakus bis zum Supercomputer". Also ein recht exponiertes Unternehmen! Ich beginne grundsätzlich mit einer Definition "analog/digital" – denn das ist auch so manchem nicht ganz geläufig –, beginne dann mit dem Abakus, dem ältesten Rechenhilfsgerät der Welt und schaukle mich dann allmählich nach oben. Ja, Rechenstäbchen von Napier, Rechenmaschinen, Schickard, Leibnitz, Lochkarten, Lochkartensysteme, Hollerith, bis dann weitergeht mit Zuses, Zuses erstem Computer. Und dann geht’s in den Anlagen, die ständig größer, volumimöser werden, rauf bis zum Supercomputer, wobei der Supercomputer des Jahres 1976 gemeint ist."
Am Anfang war auch der binäre Code
Strenggenommen ist die Welt ein einfaches Gebilde, lässt man mal ein paar seelische Irritationen weg. Sie besteht aus Entscheidungen: Ich tu’s – ich tu’s nicht. Ich will’s – ich will es nicht. Entweder – oder, schwarz – weiß, ja – nein. Warum bloß gibt es in dieser Welt – zumindest der deutschsprachigen – 26 Buchstaben plus drei Umlaute? Und warum ist der Zahlenraum unendlich? Das macht alles kompliziert. Wäre ein bescheidenes System aus nur zwei Zahlen nicht besser? Peter Fuß:
"Meine Frage an den Besucher lautet grundsätzlich: "Was sagt Ihnen der Name ‚Binärcode‘?" Ja, die Antwort, schlichtweg natürlich durchgängig: "Besteht aus 0 und 1." Dann kommt die große Frage: "Ja aber wer hat denn eigentlich den erfunden?" Ja, da scheiden sich natürlich die Geister! Umso größer ist das Erstaunen, hier Herrn Leibniz ins Spiel zu bringen! Er war ja ein Philosoph – unter anderem – und er war sehr gläubig. Und er stellte eine These auf, grob überrissen "Gott ist alles" – sprich 1. Alles andere ist 0, Menschenwerk. Er hat das Ganze aber schon noch fein säuberlich dokumentiert in einem Schriftstück namens "Explication de l’Arithmétique Binaire". Hier ist also kleinklein aufgegliedert, wie sich jede Ziffer in Nullen und Einsen zerlegen lässt. Sogar die Grundrechenarten hat er hier aufgeführt."
Leibniz und der Code
"Einer der Haupt-Puncten des christlichen Glaubens, und zwar unter denjenigen, die den Weltweisen am wenigsten eingangen und noch den Heyden nicht wohl beyzubringen, ist die Erschaffung aller Dinge aus nichts durch die Allmacht Gottes. Nun kann man wohl sagen, daß nichts in der Welt sie beßer vorstelle, ja gleichsam demonstrire als der Ursprung der Zahlen wie er alhier vorgestellet, durch deren Ausdrückung bloß und allein mit Eins und Null oder Nichts."
… schreibt Gottfried Wilhelm Leibniz bereits am 12. Januar 1697 – Jahre vor seiner Schrift "Explication de l’Arithmétique Binaire" – in einem Brief an Herzog Rudolf August von Braunschweig-Wolfenbüttel. In diesem allerersten Zeugnis zum Leibniz’schen Dualsystem möchte der Universalgelehrte seinen Gönner dazu bewegen, einen – wie er es nennt – "Denckpfennig" prägen zu lassen, auf dem der soeben von Leibniz entdeckte binäre Code bildhaft und allgemeinverständlich dargestellt wird. Burckhardt erklärt:
"Natürlich Leibniz hat begriffen, dass die beiden Zahlen 0 und 1 fundamental sind! Schrödinger nennt es "die Königszahlen" der Mathematik. Leibniz hat auch Rechenmaschinen gebaut. Aber das Dilemma, was Leibniz hatte, war, dass er letztlich dann doch im Zahlenraum immer noch verblieben ist. Und der hat eigentlich mental diese Umbesetzung in das "Loch" und "Nichtloch" nicht vollzogen."
Martin Burckhardt bemängelt, dass Gottfried Wilhelm Leibniz zwar als einer der ersten über den Binärcode nachdachte, ihn aber nicht als etwas gänzlich Neues begriff. Sein Fokus lag auf der Mathematik des herkömmlichen Dezimalsystems. Schon 25 Jahre zuvor hatte er eine analoge Rechenmaschine aus Zahnrädern entworfen, die alle Grundrechenarten beherrschte. Peter Fuß präsentiert im Deutschen Museum einen Nachbau davon:
"Ja, hinten haben’s das Konterfei von Herrn Leibniz. Hier an dieser Rechenmaschine, schönes Messinggehäuse, sehen Sie oben acht Federn rausragen. Und überall, wo Sie hier so ne Feder sehen, ist darunter so ne Staffelwalze verbaut. Dann braucht’s eigentlich gar nicht mehr viel Phantasie, um hier eben die verschiedenen Faktoren einzustellen. Und durch Drehen können Sie sozusagen Ihre Summen erzeugen. Ja, und die ersten dieser Maschinen kamen in den Einsatz in Paris bei dortigen Finanzbehörden…"
… wo sich Rechenfehler und Schlampereien schmerzhaft bemerkbar machen. Eindeutig stand bei mechanischen Rechenmaschinen, die Routineaufgaben im Dezimalsystem erledigten, der Wunsch nach Effizienz und Fehlervermeidung im Vordergrund. Es fehlte jedoch die zum heutigen Computer hinleitende Idee, dass die Maschine programmierbar zu sein habe, man also nicht bloß einige – durch Zahnräder physisch vorbestimmte – Rechenfunktionen ausführen können müsse, sondern schlicht alle mathematischen Operationen. Dazu bedurfte es Anregungen aus einer ganz anderen Richtung, nämlich der Unterhaltungsindustrie:
Der Einfluss der frühen Unterhaltungsindustrie
Seit der Renaissance faszinierten mechanische Musikautomaten den Menschen. Das sind Walzen, die sich drehen und dann gibt es einen kleine erekten Sporn oder auch viele. Die triggern bestimme Metallstücke und erzeugen Töne. In ihrem Gefolge kam es zu einem feinmechanischen Boom von Automaten, der immer mehr Kuriositäten hervorbrachte: scheinbar lebende Tiere wie eine Ente, die Eier zu legen vermochte. Oder Puppen, die komplexe Bewegungen ausführen konnten, um Musik zu erzeugen, Worte zu schreiben oder Bilder zu malen. Eine Generation nach Leibniz vermochte ein als "Der Zeichner" bekannter Automat von Henri-Louis Jaquet-Droz bereits vier unterschiedliche Zeichnungen auf ein Stück Papier zu tuschen, das man ihm hinlegte. Seine Mechanik wurde durch austauschbare Nocken gesteuert. Je nachdem, wo diese saßen, bewegte sich der Arm in die eine oder die andere Richtung. Das reichte für komplexe Bilder wie menschliche Gesichter oder einen kleinen Hund. Für Martin Burckhardt ist das eine Form der mittelalterlichen Programmierung. Eine Steuerungskunst, die schon Leonardo da Vinci im 15. Jahrhundert bei einem von Sprungfedern angetriebenen Wagen skizziert hatte. Abstrakt betrachtet sind Nocken oder kleine Metallsporne Bits – also Signale. Doch das hatten die Rechenautomatenkonstrukteure in der Nachfolge von Leibnitz erst zu begreifen. Die binäre Theorie der Mathematik musste mit den intuitiv binären Praktiken aus der Uhrmacherzunft zusammentreffen und dazu noch die Idee des austauschbaren Programms entwickeln. Auch das gab es schon, denn Musikpublikum verlangte nach Abwechslung: Bei walzengesteuerten Musikautomaten konnte man bisweilen die Walzen wechseln, sprich unterschiedliche Musikprogramme abfahren. Die wiederum waren aber fest an einen Metallzylinder gebunden. Eine aufwändige Sache, so Burckhardt:
"Was wäre, wenn ich quasi diese obere Haut einer solchen Spielwalze abnehmen würde? Und dann hätte ich ja nicht mehr nur ein Gerät, sondern bist wie ein DJ: Ich habe viele Platten!"
Von Joseph-Marie Jacquard...
Diesen geistigen Sprung vollzog überraschenderweise kein Musikautomatenbauer sondern der Sohn eines französischen Webers, Joseph-Marie Jacquard. Schon als Kind musste er in der väterlichen Werkstatt schuften, was ihm derart missfiel, dass er sich in eine Buchbinderlehre flüchtete. Doch das half nichts, er erbte dennoch die Weberei des Vaters, schreibt Martin Burckhardt in "Eine kurze Geschichte der Digitalisierung":
"Jacquard war ein leidenschaftlicher Liebhaber der Arbeitsvermeidung, der Haus und Hof verkaufte, bis er gar nichts mehr besaß – und selbst sein Bett hat der verkauft! –, der war wirklich genötigt darüber nachzudenken, wie er mit einem Minimum an Arbeit ein Maximum an Wirkung erzeugen könne. Also ist die Idee: Ich nehme diesen Sporn und ersetze ihn durch ein Loch."
Martin Burckhardt: Eine kurze Geschichte der Digitalisierung, Penguin 2018.
Und so wurde aus dem Webstuhl eine Tucherzeugungsmaschine mit vorprogrammierbaren Mustern, abertausenden verschiedenen an ein und derselben Anlage! Das brachte zuvor nur der handwerklich arbeitende Mensch selbst zustande, nicht aber ein Automat. Und es bedurfte dazu bloß eines gelochten Stücks fester, strapazierfähiger Pappe: des Lochstreifens oder verkleinert der Lochkarte. So heißt dieser wichtigste Datenträger bis zum Aufkommen von Magnetspeicherbändern allerdings erst seit Hermann Hollerith. Der deutschstämmige amerikanische Erfinder hatte sein Schlüsselerlebnis während einer Eisenbahnfahrt, wie Peter Fuß erläutert:
"Er sah nämlich, dass der Schaffner das Ticket eines Fahrgastes an verschiedenen Stellen lochte. Er wollte nun wissen, warum er das macht, und bekam dann zur Antwort: "Die geben ansonsten ihr Ticket immer unerlaubterweise weiter!" Um hier gegenzusteuern, wenn ich hier ein Loch reinmache, dann weiß ich, war der Fahrgast männlich/weiblich, ja? Wenn ich hier ein Loch setze, konnte ich wasweißich die Hautfarbe hier hinterlegen, und dort ein Loch, dort ein Loch … also er hat nichts anderes gemacht als Attribute! Das brachte angeblich Herrn Hollerith auf die Idee, so eine Pappkarte auch als Massendatenspeicherungsmittel zu verwenden."
Die wesentliche Innovation, die seine Apparatur über die ‚händische Lochkartenfotografie‘ der Schaffner erhob, war, dass er die Information der Lochkarten in elektrische Impulse übersetzte, die wiederum mechanische Zähler aktivierten. Dann hat man beides: die Theorie in Gestalt des binären Zahlensystems – Nichts und Gott, Null und Eins, Loch und Sporn, später dann Schalter aus und Schalter an – und den physischen Datenträger in Gestalt der Lochkarte und des Lochstreifens. Auch die Elektrizität ist schon da und könnte jetzt, zu Beginn des 20. Jahrhunderts, das Computerzeitalter einläuten. Elektrizität ist Lichtgeschwindigkeit. Das macht den Hauptvorteil des elektronischen Rechnens aus. Doch im Grundsatz braucht ein Binärrechner keinen Strom.
...über George Boole...
Der Brite George Boole erfand bereits im 19. Jh eine Sprache, mit der man logische Aussagen beschreiben und handhaben konnte und mit der sich auch feststellen ließ, ob sie wahr sind oder nicht. Diese Sprache bezeichnet man heute als Boole’sche Algebra. Boole galt in seiner Zeit zwar als wissenschaftlicher Außenseiter, aber er lieferte die entscheidende Grundlage für die Computerrevolution des 20. Jh.. Die Mathematik des elektronischen Rechners ist keine Mathematik im Sinne der alten Rechenkunst à la "1+1= 2", sondern eine formallogische Sprache. Sie erlaubt es, logisch formulierbare Probleme auf Entscheidungsheuristiken von zunächst drei Verknüpfungen herunterzubrechen: und, oder, nicht. Je nach eingesetzter Funktion ist erstens etwas wahr, wenn zwei Bedingungen zugleich erfüllt sind ("und"); zweitens, wenn nur eine der beiden stimmt ("oder"), drittens gar keine ("nicht"). Später kam noch die Funktion "nicht/und" (englische Abkürzung "nand") sowie "nicht/oder" (englisch "nor") hinzu. Mittels dieser theoretischen Konstrukte ließen sich so genannte Logikgatter erzeugen, mit denen einer neuen Weltauffassung und Welterfassung nichts mehr im Wege stand. Und wie Daniel Hillis beschrieb, lassen sich solche Logikgatter auch ohne Strom konstruieren. Entscheidend ist nur, dass man es schafft, viele An/aus-Schalter hintereinander zu montieren. Denkbar wäre eine Seilzugmechanik. Oder man nimmt den "Strom" wörtlich und baut einen Wassercomputer.
...bis Konrad Zuse
Bis in die 1960er-Jahre konnten Studenten nur primitive Hilfsmittel benutzen, den Rechenschieber etwa oder gedruckte Logarithmentafeln. In Büros und Werkstätten taten noch millionenfach mechanische Addierwerke ihren Dienst, die im Grunde nur verfeinerte Leibnizmaschinen waren. Genau darüber hatte sich fünfundzwanzig Jahre zuvor ein junger deutscher Ingenieur geärgert, nämlich Konrad Zuse.
"An der Zahnradkonstruktion sind ja die ganzen Tischrechenmaschinenfabrikanten … nicht gescheitert, aber sie kamen an eine Grenze, wo sie zwar Plus und Minus rechnen konnten, aber dann war Schluss! Das war ausgereizt. Und das war dem Vater auch klar."
Erklärt Horst Zuse. Emeritierter Professor für Informatik, Berlin. Sein Vater konstruierte in den 1930er-Jahren einen binären Rechner. Mit über einer Tonne an verbauten mechanischen Schaltgliedern aus Metall, die sich oft verhakten, war das Gerät kaum einsatzfähig – doch unbestritten der erste programmierbare Computer der Welt, den Z 1. Er funktionierte vollständig mechanisch, wies aber schon den grundlegenden Aufbau eines Computers auf: Er bestand aus a) Datenspeicher, b) Recheneinheit und c) Kontrolleinheit mit Daten-Ein/Ausgabegeräten. Der Nachfolger Z2 basierte dann bereits auf elektromechanischen Relais, die im Vorkriegs-Deutschland einfacher verfügbar waren, als die vorgesehenen Vakuumröhren und wurde gemeinsam von Zuse und seinem Freund und Mitarbeiter Helmut Schreyer 1940 fertiggestellt. Der im Dezember 1941 fertig gestellte Z3 wird inzwischen als der erste vollständig funktionierende Rechner mit automatischem Ablauf der einzelnen Operationen und Binärlogik bezeichnet und nimmt damit die Stelle ein, die lange Zeit dem Januar 1943 vollendeten Harvard Mark I zugeschrieben wurde.
Der Z3 war ein Digitalrechner, der nun noch eine Programmiersprache brauchte. Auch in diesem Punkt erwies sich Konrad Zuse als Pionier, von dem kaum einer etwas ahnte. Denn in der Abgeschiedenheit eines Allgäuer Bergdorfs, wohin es Zuse nach 1945 verschlagen hatte, entstand in der unmittelbaren Nachkriegszeit die allererste Programmiersprache der Welt. Das 300-seitiges Typoscript mit dem Namen "Plankalkül" entstand bar jeder praktischen Erprobung am Schreibtisch. Sohn Horst Zuse erklärt:
"Da hat er schon 1942 drüber nachgedacht, hier in Berlin: Ich kann doch keinen Mathematiker begeistern, oder salopp gesagt hinterm Ofen vorlocken, wenn der den Lochstreifen nur bestechend aus Löchern per Hand stanzen muss, und die ganzen Instruktionen, das ist dann ne typische Maschinensprache. Da kann ich doch niemanden begeistern mit, dass der meine Maschinen benutzt. Da war ihm 42/43 – da gibt’s auch Unterlagen – schon klar, also das muss anders gehen! Also der Mathematiker muss meine Maschinen über eine Sprache bedienen, und zwar über eine Sprache, die er versteht. Und das ist die Mathematik, wo er dann einfach auch so angeben kann, was gemacht werden soll."
Bei Mathematik – beziehungsweise klassischen Rechenregeln – blieb es nicht, denn Programmieren heißt ja, das Boole‘sche Konzept der formalen Logik auf die Maschine zu übertragen. Rasch stieß Konrad Zuse dabei auf ein komplett nutzloses, die Menschheit jedoch seit Jahrhunderten faszinierendes Regelwerk, das sie selbst geschaffen hat: das Schachspiel. In seiner Autobiografie schreibt er dazu:
"Ich selbst habe schon während des Krieges und kurze Zeit danach versucht, eine algorithmische Formelsprache zu entwickeln, die die numerischen Rechnungen als Nebenzweck behandelt, in erster Linie aber rein logischen Kombinationen dient. Das Schachspiel diente mir dabei als ein gutes Modell. Nicht, weil ich es als besonders wichtig erachtete, dass man eines Tages einen Schachspieler mit dem Computer besiegt, sondern nur, weil ich ganz bewusst ein Gebiet suchte, auf dem möglichst alle komplizierten und komplexen Kombinationen vorkommen."
Konrad Zuse: Der Computer mein Lebenswerk. Verlag Moderne Industrie, 1970
Beim Schachspiel sind die Figuren unterschiedlich wichtig und daher hat Konrad Zuse auch Bewertungsfunktionen entwickelt. Das wurde allerdings nie auf einem Zuse-Computer oder anderer Hardware "implementiert", wie es im Fachjargon heißt, weil der Plankalkül erst 1972 an die Öffentlichkeit kam. Längst hatten da andere Programmiersprachen wie Algol und Fortran das Rennen gemacht – beides amerikanische Reaktionen auf dasselbe Bedürfnis der Mathematiker, die neuen Maschinen nicht Bit um Bit ansteuern zu müssen, sondern komplette Befehle zu besitzen. Beim Plankalkül waren sie diesem Ziel – theoretisch – zum ersten Mal nahe gekommen.
Frauen programmieren
"Ich bin eigentlich sehr spät zum Programmieren gekommen, und das Problem dabei war, dass ich eigentlich schon, seit ich 14 war oder wahrscheinlich noch früher, von Leuten umgeben war, die das schon konnten. Also für mich war das sehr unattraktiv! Ich hatte das Gefühl, die machen das, seit sie acht sind – war wahrscheinlich auch korrekt! – und das ist unaufholbar."
Kathrin Passig/Johannes Jander: Weniger schlecht programmieren. O’Reilly, Köln 2013.
Kathrin Passig ist Programmiererin, Schriftstellerin und Autorin des Buches "Weniger schlecht programmieren". Sie ist Trägerin des Ingeborg-Bachmann-Preises und des Johann-Heinrich-Merck-Preises für literarische Kritik und Essay. Sie kann sich im technischen und im literarischen Universum gleichermaßen bewegen.
"Ich bin in den 90ern mal mit einem dicken Java-Buch auf Papier in Urlaub gefahren und hab das von vorne bis hinten durchgelesen und dann aber gedacht: "Java, das können jetzt schon alle, jetzt ist es zu spät!"
Auch als die US-Amerikanerin und Software-Ingenieurin Ellen Ullman das erste Mal von Java hörte, hieß es schon, es sei zu spät, wie sie es in ihrem Buch ‚Close to the Machine’ beschreibt:
"»Ich würde gern Java-Programmierungen machen«, sagte Mark.
»Java?« fragte ich. »Wer bezahlt dir, dass du Java lernst?« Zu dem Zeitpunkt war Java eine noch kaum bekannte Computersprache. Es war der letzte Schrei, die Sprache des Internets. Uns war allen klar, dass wir sie lernen mussten, aber keiner wusste genau wie und wann. »Wir haben unser SQL schon vergessen«, sagte ich, »und in C++ sind wir noch nicht sehr weit. Müssen wir uns da schon an Java ranmachen?«
Mark und ich schauten uns an. Beide waren wir mit der Programmiersprache C »erwachsen« geworden, und mit der Nachfolgerin C++ konnte keiner von uns richtig umgehen. Aber Mark wollte nicht, dass ich darüber sprach.
»Randy bringt mir Java bei«, sagte Mark. »Er ist ein alter Java-Hase.«
»Ein alter Java-Hase?« fragte ich. »Wie alt kann der Hase denn sein? Java selbst ist ja erst ein Jahr alt.«
»Randy hat das damals im Mai gelernt.«
Wir führten dieses Gespräch im September. »Ach so, damals im Mai!«
»Genau, das ist heutzutage alt.«
»Richtig«, sagte ich, »uralt.«"
»Java?« fragte ich. »Wer bezahlt dir, dass du Java lernst?« Zu dem Zeitpunkt war Java eine noch kaum bekannte Computersprache. Es war der letzte Schrei, die Sprache des Internets. Uns war allen klar, dass wir sie lernen mussten, aber keiner wusste genau wie und wann. »Wir haben unser SQL schon vergessen«, sagte ich, »und in C++ sind wir noch nicht sehr weit. Müssen wir uns da schon an Java ranmachen?«
Mark und ich schauten uns an. Beide waren wir mit der Programmiersprache C »erwachsen« geworden, und mit der Nachfolgerin C++ konnte keiner von uns richtig umgehen. Aber Mark wollte nicht, dass ich darüber sprach.
»Randy bringt mir Java bei«, sagte Mark. »Er ist ein alter Java-Hase.«
»Ein alter Java-Hase?« fragte ich. »Wie alt kann der Hase denn sein? Java selbst ist ja erst ein Jahr alt.«
»Randy hat das damals im Mai gelernt.«
Wir führten dieses Gespräch im September. »Ach so, damals im Mai!«
»Genau, das ist heutzutage alt.«
»Richtig«, sagte ich, »uralt.«"
Ellen Ullman: Close to the Machine - Technophilia and its Discontents San Francisco : City Lights Books, 1997
Ellen Ullman: Mein Leben mit dem Computer. Surhrkamp 1999.
Viele Frauen sind über Umwege zum Programmieren gekommen. Ihnen wurde in den vergangenen Jahrzehnten kaum nahegelegt, sich intensiv mit der neuen Weltmaschine zu befassen. Ellen Ullman beschreibt, wie sie Ende der 1970er-Jahre als Programmiererin in eine reine Männerwelt eindrang. Trotzdem haben Frauen wesentliche Impulse für die Weiterentwicklung des Computers geliefert. Etwa Grace Hopper.
Amazing Grace Hopper
Grace Hopper, Spitzname: Amazing Grace, hat für das US Militär gearbeitet. Geboren 1906, promovierte Grace Hopper in Mathematik und unterrichtete dieses Fach bis 1944 am Vassar College. Als sie nach Pearl Harbour der Familientradition folgend in die US-Navy eintrat, wurde sie statt auf ein Schiff nach Harvard kommandiert. Dort stand die MARK 1, ein elektromechanischer Relaisrechner wie Zuses Z3 und Z4, der ballistische Berechnungen durchführen sollte. Hier beginnt die Geschichte der angewandten Programmiersprachen – und zwar im Zusammenspiel von militärischem Ingenieursgeist bei der Hardware und weiblichem Scharfsinn bei der Software. Anders als die meisten Mathematikprofessoren legte sie großen Wert darauf, dass ihre Studenten gut schreiben konnten. Ihren Statistikkurs begann sie mit einer Vorlesung über ihre Lieblingsformel und ließ die Studenten anschließend einen Aufsatz darüber schreiben, den sie nach Klarheit des Ausdrucks und Schreibstil benotete. Ihr zentrales Motiv - kommunizierbare Formen für schwierige logische Prozeduren zu entwickeln - prägte Grace Hoppers gesamtes Berufsleben. Sie wurde zu einer wichtigen Vermittlerin zwischen Mensch und Maschine.1952 hatte sie den ersten funktionierenden Compiler der Welt entwickelt, das A-0-System, das die Zeichen des mathematischen Codes in eine Maschinensprache übersetzte und damit das Schreiben von Programmen auch für Normalsterbliche möglich machte. Sie krempelte die zuvor isolationistische Arbeitsweise der Computertüftler um. Bei der Arbeit pflegte sie ein zupackendes Miteinander und wurde zu so etwas wie einer Geburtshelferin der Open-Source-Bewegung: Sie sandte die ersten Versionen des Compilers an ihre Freunde und Bekannten im Programmiererkosmos und bat um Verbesserungsvorschläge. Dasselbe tat sie als technische Leiterin bei der Koordination der COBOL-Entwicklung, der ersten betriebssystemunabhängigen standardisierten Computersprache. Ihr Gefühl, dass das Programmieren hardwareunabhängig gestaltet werden sollte, entsprang ihrer Vorliebe für ein kollegiales Teamwork, selbst Maschinen sollten gut zusammenarbeiten können, fand sie. Sie erkannte früh eine wichtige Tendenz des Computerzeitalters: dass die Hardware zu einem Alltagsprodukt mutieren würde, während sich das Programmieren als wahrhaft werthaltig erweisen sollte. Eine Einsicht, die den meisten Männern verschlossen blieb. Frauen strukturieren, organisieren, kommunizieren. Sie machen aus einem Haufen zusammengebastelter Einzelteile eine brauchbare Maschine.
Der Philosoph und Programmierer Martin Burckhardt schreibt dazu in seinem Buch "Eine kurze Geschichte der Digitalisierung":
"Um zu demonstrieren, dass die wahre Kunst der Programmierung nicht in der Kenntnis der Hardware, sondern in der Einbildungskraft lag – immer grundiert von der Bereitschaft, lieb gewordene Überzeugungen über Bord zu werfen –, rekrutierte Hopper ihre Programmierer nicht selten unter den Sekretärinnen. Sie hatte beobachtet, dass die jungen Frauen ihre Arbeit höchst gewissenhaft erledigten – und damit eine Tugend an den Tag legten, die im Umgang mit der Maschine unerlässlich war. Hoppers ‚Marilyn-Projekt‘ – also die Verwandlung des dummen Blondchens zum Programmierer-Genie – wurde belohnt. Sehr bald schon bestand mehr als die Hälfte ihrer Programmiererschar aus Frauen. Es war bewiesen, dass man weder höhere Mathematik noch Quantenmechanik beherrschen musste, um einen Computer programmieren zu können."
Die Programmiersprache COBOL
Allerdings drehte der Wind rasch. Auf Grace Hoppers Pionierphase folgte die Restauration. Sobald die Männer erkannt hatten, wo die Macht, das Geld und der Einfluss im Computerbusiness liegen würden, verschwanden viele Frauen wieder aus der Softwareentwicklung. Als Hoppers große Hinterlassenschaft gilt bis heute die Programmiersprache COBOL, über die die Autorin Kathrin Passig berichtet:
"Und dann meinte jemand, dass COBOL-Programmierer händeringend gesucht werden. Und zwar, weil es immer noch Software gibt aus den 60er-Jahren, die ganz unten in Banken und Flugbuchungssystemen – also den Systemen, die als erste auf Computer umgestellt haben – auf der alleruntersten Ebene noch läuft. Oder auf der sagen wir mal zweituntersten vielleicht. Und die hat man einfach nicht ausgetauscht. Und dann hab ich gelacht und mir gedacht: "Ach, diese konservativen Leute, die sich einfach nicht durchringen konnten, diese Software auszutauschen!" Aber dann ist mir klar geworden, das hat natürlich gute Gründe, diese Software läuft … also wenn was seit 50 Jahren oder so halbwegs reibungslos läuft, dann ist es sehr schlau, es nicht auszutauschen gegen irgendwas, wo überhaupt nicht gesagt ist, dass es auch nur bis nächsten Montag funktionieren wird. Und die ganzen ursprünglichen Programmierer sind natürlich jetzt in Ruhestand, und man kann die zwar noch überreden, ab und zu mal aus ihrem Ruhestand zurückzukommen und irgendwelche Änderungen vorzunehmen. Aber man kann sie nicht rumkommandieren. Die machen das nur zum Spaß. Und wenn sie keine Lust haben oder man ihnen dumm kommt oder zu wenig bezahlt, dann gehen sie wieder. Deshalb sind COBOL-Programmierer händeringend gesucht. Und ich hab mir dann Stellenanzeigen angeguckt und festgestellt: "Hallo, das ist wirklich so!" Alle wollen welche, es gibt keine. Und sah mich schon in einer lukrativen Zukunft den Rest meines Lebens Geld mit COBOL verdienen."
COBOL gilt allerdings als eine Programmiersprache, die für Betriebswirtschaftler entworfen worden ist. Unter der Federführung Grace Hopper entwickelten Teams in den 1950er-Jahren die "Common Business Oriented Language", die den Übergang der Rechnertechnologie vom militärischen und wissenschaftlichen Bereich in die Wirtschaft ermöglichte. Komplizierte mathematische Operationen beherrschten die zeitgleich entwickelten Programmiersprachen der zweiten Generation wie ALGOL und FORTRAN besser doch COBOL nahm Rücksicht auf die spezifischen Bedürfnisse von Banken, Versicherungen, Fluggesellschaften und anderen Organisationen, die ihre Datenmengen bis dato mit Karteikarten zu bewältigen suchten.
Darin spiegelt sich wohl bis heute Grace Hoppers Mission, den Umgang mit der Rechenmaschine sprachnäher, menschlicher, allgemeinverständlicher zu machen. Womit sie allerdings nicht gerechnet hatte – niemand aus ihrer Generation tat das –, war das hohe Alter, das Programmiersprachen einst erreichen würden. Zehn Jahre, zwanzig Jahre allenfalls vermochte man sich vorzustellen – dann spätestens würde sich die Hardware derart radikal verändert haben, dass alte Programmiersprachen darauf nicht mehr laufen könnten. Die Softwareentwickler der ersten Generation irrten allerdings gründlich, wie Ellen Ullman schreibt:
"Ich arbeitete einmal an einem Mainframe-Computersystem, wo die Auflistung meines COBOL-Programms auf Endlos-Papier so hoch angesehen wurde wie ein Mensch. Mein Programm war sechzehn Jahre alt, als ich es erbte. Nach den Bibliothekseinträgen hatten vor mir sechsundneunzig Programmierer daran gearbeitet. Ich verbrachte ein Jahr damit, alle Unterroutinen und Servicemodule zu durchwandern, aber da waren immer noch geheimnisvolle Orte, an die ich nicht zu rühren wagte. Dieses System hatte Fehler, die seit zehn Jahren niemand in Ordnung bringen konnte. Es gab Bereiche, wo das Hinzufügen einer einzigen Code-Zeile merkwürdige Resultate erzeugte, von Programmierern ‚Nebenwirkungen‘ genannt, Fehler, die nicht direkt aus dem hinzugefügten Code entstehen, sondern aus einer späteren, unbekannten Permutation weiter unten im Prozess. Mein Programm näherte sich dem Ende seines ‚Lebenszyklus‘. Es war dem Tod sehr nahe. Dennoch konnte das System nicht weggeworfen werden. Wenn ein Computersystem einmal alt geworden ist, versteht es keiner mehr vollständig. Ein System, das aus alter, schrottreifer Technik besteht, wird paradoxerweise wertvoll. Man lässt es weiterlaufen, jedoch wie in einer Samtschatulle: Öffne es vorsichtig und schau es dir an, aber berühren verboten."
Als Ellen Ullman dies Ende der 1990er-Jahre schrieb, war COBOL noch die in der Wirtschaft am weitesten verbreitete Programmiersprache, obwohl sie nicht nur viele Fehler und Undurchsichtigkeiten enthielt, sondern auch einen fatalen Mangel aufwies: Sie konnte das Jahr 2000 nicht als Datensatz verarbeiten, da Jahreszahlen aus Speicherplatzgründen grundsätzlich nur zweistellig abgespeichert wurden. Bekannt wurde dies – mit einem gewaltigen hysterischen Rauschen in der Öffentlichkeit – als "Jahr-2000-Problem" oder "Millenium-Bug. Man erwartete gravierende Probleme in allen möglichen elektronischen Systemen. Tatsächlich passierte relativ wenig. In einer Wikipedia-Aufzählung kann man von nicht funktionierenden Fahrkartenentwertern in zwei australischen Bundesstaaten lesen, von rund 150 ausgefallenen Spielautomaten an einer US-Pferderennbahn und 170 fälschlich auf den 4. Januar 1900 datierte Gerichtsvorladungen in Südkorea. Dass der Weltuntergang ausblieb, hatte allerdings zuvor Software-Wartungskosten von mehreren hundert Milliarden US-Dollar erzeugt und – nach glimpflicher Bewältigung des Jahrtausendwechsels – COBOL damit für weitere Jahrhunderte vor dem Untergang bewahrt. Denn der Code erlaubt nun Datumsangaben bis zum 31.12.9999.
Wie viele Programmiersprachen gibt es?
Es gibt, je nach Zählweise, zwischen 500 und über 8.000 Programmiersprachen. Experten stellen aber fest, dass viele neue Programmiersprachen nur Dialekte von solchen sind, die schon da waren. Somit dürften sich die tatsächlich eigenständigen Programmiersprachen im niedrigen dreistelligen Bereich bewegen. Zwischen ihnen – der Tür zur Maschine – und Anwenderprogramm – dem Fenster zur Welt – sitzt noch das Betriebssystem. Jedes Mal beim Hochfahren des Computers macht es sich zeitraubend bemerkbar. Das Betriebssystem ist die Schnittstelle zwischen der Hardware und den Programmiersprachen und Anwendungssystemen. Ohne Betriebssystem kann man einen Rechner überhaupt nicht benutzen. Am weitesten verbreitet ist UNIX, auf dem zum Beispiel auch die Apple-Betriebssysteme für Computer, Handys und Tablets basieren. Die UNIX zugrundeliegende Programmiersprache C++ weist dabei einen Abstraktionsgrad auf, der selbst Profis wie Ellen Ullman verstört:
"Ich schielte auf den Code. Es war die merkwürdige, hässliche Syntax von C++. Mit ihrer Vorgängerin C bin ich technisch aufgewachsen, konnte sie schreiben und lesen wie Englisch, sie korrigieren, wenn man sie mir nur am Telefon vorlas, aber hier war es, als wäre ich ein Spanier, der versucht Portugiesisch zu lesen. Ja, die Wurzeln waren dieselben, ja, das hier sind dieselben Wörter, doch woher sind all die komischen Buchstaben gekommen? Wie ist aus dem Wort das hier geworden? Diese Sprache kam eindeutig von der anderen Seite einer politischen und kulturellen Grenze, aus einem neuen und unbekannten Land, in dem ich mich gerade eben verständlich machen konnte."
Dass sich ein Grenzgänger zwischen Sprache und Programmiersprache überhaupt bilden konnte, liegt am Urknall unserer heutigen digitalen Welt: der Entwicklung des Mikroprozessors Anfang der 1970er-Jahre – und der Erfindung einer primitiven, von 14-Jährigen beherrschbaren Programmiersprache namens Beginner’s All purpose Symbolic Instruction Code, kurz BASIC.
Der Siegeszug von Basic
Strenggenommen entstand BASIC als PR-Maßnahme von Informatikern, um ihren Arbeitsbereich langfristig ökonomisch abzusichern. Ab den späten 1970er-Jahren gab es genügend Leute, die sich durch die überschaubare Komplexität von BASIC dazu verleiten ließen, als Laien eine Programmiersprache zu lernen. Das hatte es zuvor nie gegeben: Algorithmisches Denken wurde massentauglich. Dank des kommerziellen Spürsinns eines jungen Studenten namens Bill Gates ging die nun auch für Spiel- und Hobbyzwecke erschwingliche Hardware eine fast automatische Verbindung mit BASIC als Basissoftware ein.
Das schreibt Jochen Ziegenbalg in seinem Buch "Algorithmen von Hammurapi bis Gödel":
"Aufgrund der Minimalität der Sprache ließen sich leicht BASIC-Interpreter für die mit sehr kleinen Speichern ausgestatteten Mikrocomputer der ersten Generationen entwickeln. In der Folgezeit wurde praktisch jeder Mikrocomputer mit einem BASIC-Dialekt ausgestattet, welcher in etwa der von der Firma Microsoft entwickelten BASIC-Version entsprach. BASIC wurde so fast zur ‚kanonischen‘ Programmiersprache der Mikrocomputer."
[*Anm. d. Red.] An dieser Stelle haben wir die Definition von HTML korrigiert.