Ein echter Computerprogrammierer sagte Dinge wie "DO 10 I=1,10" oder "ABEND", und der Rest der Welt quengelte "Computer sind mir zu kompliziert" oder "Ich kann zu Computern keine gefühlsmäßige Bindung aufbauen - sie sind so unpersönlich". Dabei zeigte schon Remy Eyssen's Buch "Echte Männer mögen kein Müsli" (Heyne TB 6290), daß Echte Männer zu nichts und niemanden eine "gefühlsmäßige Bindung" aufbauen, und daß sie auch keine Angst haben, unpersönlich zu sein.
Aber die Zeiten ändern sich. Heute stehen wir einer Welt gegenüber, in der kleine alte Damen vollcomputerisierte Mikrowellenherde kaufen können, in der 12 Jahre alte Dreikäsehochs gestandene Männer bei ASTEROID und PACMAN sattmachen, und in der jeder seinen eigenen Heimcomputer kaufen und sogar verstehen kann. Der Echte Programmierer ist gefährdet, von Studenten mit einem igITT 2020 (deutsche Version des ABFALL-II) im Gepäck ersetzt zu werden.
Es gibt allerdings einige Unterschiede zwischen dem typischen PACMAN-spielenden Gymnasiasten und einem Echten Programmierer. Die Kenntnis dieser Unterschiede wird den Heranwachsenden ein Ziel geben, nach dem sie streben können - ein Vorbild, eine Vaterfigur. Ausserdem schützt sie den echten Programmierer vor der Arbeitslosigkeit.
Akademische Computerspezialisten sind in den letzten Jahren aufs Abstellgleis der strukturierten Programmierung geraten. Sie behaupten, daß Programme verständlicher werden, wenn bestimmte Sprachkonstrukte und Programmiertechniken benutzt werden. Sie können sich natürlich nicht einigen, welche Konstrukte am besten geeignet sind, und die Beispiele, an denen sie ihre speziellen Standpunkte aufzeigen wollen, passen ausnahmslos auf eine einzige Seite irgend eines obskuren Journals. Als ich aus der Schule kam, dachte ich, ich sei der Programmierer der Welt. Ich konnte ein unschlagbares TIC-TAC-TOE-Spiel (Vier-in-einer-Reihe) schreiben, beherrschte 5 verschiedene Programmiersprachen und schrieb fehlerfreie 1000-Zeilen-Programme. Dann kam ich in die Wirklichkeit.
Meine erste Aufgabe bestand darin, ein 200000-Zeilen-FORTRAN-Programm zu lesen, zu verstehen und um den Faktor 2 zu beschleunigen. Jeder Echte Programmierer wird einem versichern, daß die gesamte strukturierte Programmierung der Welt in einem solchen Fall nicht hilft - hier braucht man wirklich Talent.
UNIX ist natürlich schon viel komplizierter - der typische UNIX- Hacker weiß nie, wie das PRINT-Kommando diese Woche heißt - aber wenn man es genau nimmt, ist UNIX auch nur ein verherrlichtes Telespiel. Niemand arbeitet auf UNIX-Systemen an ernsthaften Dingen - man schickt kleine Witzchen über das USENET rund um die Welt oder schreibt ein neues Adventure-Spiel oder Forschungsberichte.
Nein, der Echte Programmierer benutzt OS/370. Ein guter Programmierer kann die Beschreibung des Fehlers Ijk305i in seinem JCL-Manual (Job Control Language, BATCH-Kommandosprache) finden und verstehen. Ein großartiger Programmierer kann JCL schreiben, ohne je ein Manual zu sehen. Ein wahrhaft guter Programmierer kann Fehler in einem 6-Megabyte-Hexdump finden, ohne einen Taschenrechner zu benutzen.
OS/370 ist wirklich ein bemerkenswertes Betriebssystem. Mit einem einzigen falsch plazierten Leerzeichen kann man die gesamte Arbeit mehrerer Tage zerstören, was die Wachsamkeit im Programmierteam ungemein fördert. Der beste Weg zum System ist der Kartenstanzer. Zwar behaupten einige Leute, es gäbe ein Timesharing System unter OS/370, aber nach sorgfältigen Nachforschungen bin ich zu dem Schluß gekommen, daß sie sich irren.
Einen der Echten Programmierer, die ich am meisten bewundere, arbeitete als Systemprogrammierer für Texas Instruments. Eines Tages erhielt er ein Ferngespräch von einem Benutzer, dessen System inmitten einer wichtigen Arbeit abgestürzt war. Der Typ reparierte dann den Schaden übers Telefon. Er brachte den Benutzer dazu, an der Maschinenkonsole Disk-I/O-Instruktionen einzutasten, Systemtabellen in Hexadezimal zu reparieren und Registerinhalte übers Telefon durchzugeben. Die Moral von der Geschichte: Obwohl ein Echter Programmierer normalerweise Kartenlocher und Schnelldrucker benutzt, kommt er im Notfall auch mit Maschinenkonsole und Telefon aus.
In einigen Firmen besteht die Programmeingabe allerdings nicht mehr aus 10 schlangestehenden Ingenieuren, die auf einen 029-Locher warten. In meiner Firma zum Beispiel steht kein einziger Kartenlocher. Der echte Programmierer muß in diesem Fall seine Arbeit mit einem Texteditor erledigen. Auf den meisten Rechnern stehen verschiedene Editoren zur Verfügung, und der Echte Programmierer muß aufpaßen, daß er einen erwischt, der seinen persönlichen Stil wiedergibt. Viele Leute glauben, daß die besten Editoren der Welt am Xerox Palo Alto Research Center geschrieben wurden und auf Altos- und Dorado-Computern laufen. Unglücklicherweise würde jedoch kein Echter Programmierer einen Computer mit einem Betriebssystem benutzen, das SmallTalk heißt, und sicherlich auch nicht über eine Maus mit dem Rechner kommunizieren.
Einige Konzepte der Xerox-Editoren sind mittlerweile in Editoren eingeflossen, die unter sinnvoller benannten Betriebssystemen arbeiten, so wie EMACS und VI. Das Problem mit diesen Editoren ist, daß Echte Programmierer das Konzept des "Du kriegst, was Du siehst" für schlecht halten. Der Echte Programmierer will einen "Du hast es so gewollt, da hast Du's"-Editor, einen der kompliziert ist, kryptisch, leistungsfähig, gnadenlos und gefährlich. TECO, um genau zu sein.
So wurde beobachtet, daß TECO-Kommandofolgen dem Leitungsrauschen ähnlicher sind als lesbarer Text. Eins der unterhaltsameren Spiele, die mit TECO möglich sind, besteht darin, den eigenen Namen als Kommando einzugeben und zu raten, was dann passiert. So ungefähr jeder mögliche Tippfehler kann dank TECO das gerade editierte Programm zerstören, oder schlimmer noch, kann kleine mysteriöse Fehler in erstmals funktionierende Unterprogramme einbringen.
Aus diesem Grund editieren Echte Programmierer nur sehr widerwillig Programme, die schon fast laufen. Sie finden es viel einfacher, den binären Objektcode direkt zu ändern, für gewöhnlich mit einem wundervollen Programm, das SUPERZAP heißt (auf Nicht-IBM- Rechnern entsprechend anders). Dies funktioniert so gut, daß viele laufende Programme auf IBM-Systemen keine Ähnlichkeit mit den ursprünglichen FORTRAN-Quellprogrammen haben. In einigen Fällen ist nicht einmal mehr das Quellprogramm vorhanden. Wenn dann der Zeitpunkt gekommen ist, so ein Programm zu ändern, würde kein Manager auch nur daran denken, einem geringeren als einem Echten Programmierer diese Arbeit zu übertragen - kein Müsli-fressender strukturierter Programmierer wüßte auch nur, wo er mit der Arbeit anfangen soll. Man nennt das Arbeitssicherungsmaßnahme.
Hier eine Liste der wichtigsten Programmierhilfen, die der Echte Programmierer nicht benutzt:
Einige der Ehrfurchteinflössendsten Echten Programmierer arbeiten in dem Propulsion Laboratory in Kalifornien. Viele von Ihnen kennen das gesamte Betriebssystem der Pioneer- und Voyager-Sonden auswendig. Mit einer Kombination aus großen, bodengebundenen FORTRAN-Programmen und kleinen, von den Sonden mitgeführten Assemblerprogrammen vollbringen sie unglaubliche Kunststücke der Navigation und Improvisation. So treffen sie nur 10 Kilometer große Fenster nahe Saturn nach 6 Jahren Flug durch den Weltraum, oder reparieren bzw. umgehen defekte Sensoren, Sender oder Batterien. Angeblich soll es einem Echten Programmierer sogar gelungen sein, in ein paar hundert Byte unbenutzten Speichers innerhalb der Voyager-Sonde ein Mustererkennungsprogramm zu pressen, das einen neuenn Mond des Jupiters suchte, fand und photographierte.
Für die Galileo-Sonde ist vorgesehen, daß sie auf ihrem Weg zum Jupiter entlang einer schwerkraftgelenkten Bahn um den Mars vorbeizieht. Diese Bahn führt in einer Entfernung von 80 +/- 3 km an der Marsoberfläche vorbei. Kein Mensch würde diese Art der Navigation einem Pascal-Programm oder gar Programmierern anvertrauen.
Viele der echten Programmierer dieser Welt arbeiten für die amerikanische Regierung, meist für das Verteidigungsministerium. So soll es sein. In letzter Zeit allerdings erscheinen dunkle Wolken am Horizont der Echten Programmierer. Es scheint, als hätten einige einflußreiche Müsli-Fresser im Verteidigungsministerium entschieden, daß in Zukunft alle Verteidigungsprogramme in so einer Art von großer, vereinheitlichter Programmiersprache namens ADA geschrieben werden müßten. Lange Zeit schien es, als läge ADA's Bestimmung im Verstoß gegen alle Regeln der Echten Programmierung. Es ist eine Sprache mit Strukturen, Datentypen, strenger Typenbindung und Semikolons. Kurz, sie ist wie geschaffen um die Kreativität des typischen Echten Programmierers zu verkrüppeln.
Glücklicherweise hat die jetzt von DoD ausgewählte Sprache noch genügend interessante Eigenschaften, um dem Echten Programmierer eine Annäherung zu ermöglichen: Sie ist unglaublich komplex, sie enthält Möglichkeiten, um mit dem Betriebssystem herumzumachen und Speicherbereiche neu zu verteilen, und Edgar Dijkstra mag sie nicht. Dijkstra ist, wie man wissen sollte, der Autor von "GOTO's Considered Harmful", einem Meilenstein der Programmiermethologie, der von Pascal-Programmierern und Müsli-Fressern gleichermaßen bewundert wird. Und außerdem, ein zu allem entschlossener Echter Programmierer kann in jeder Sprache FORTRAN Programme schreiben.
Der Echte Programmierer kann allerdings auch Kompromisse in Bezug auf seine Prinzipien machen und an etwas geringeren Aufgaben als der Vernichtung des Lebens arbeiten, sofern er dafür entsprechend bezahlt wird. Viele Echte Programmierer schreiben z.B. Videospiele für ATARI, allerdings spielen sie nicht damit. Ein Echter Programmierer weiß, wie er die Maschine jedesmal schlagen kann, und damit ist es keine Herausforderung mehr. Jeder bei Lucas-Film ist ein Echter Programmierer, denn es wäre verrückt, das Geld von 50 Millionen STAR_WARS-Fans auszuschlagen.
Der Anteil der Echten Programmierer im Bereich der Computer- Grafik ist etwas geringer als anderswo, was wahrscheinlich daran liegt, daß noch niemand irgendeinen Nutzen der Computer-Grafik entdeckt hat. Andererseits werden Computer-Graphics überwiegend in FORTRAN abgehandelt, daher gibt es einige Leute, die so das Schreiben von COBOL-Programmen vermeiden.
Der typische Echte Programmierer lebt vor einem Computerterminal. Rund um dieses Terminal liegen Ausdrucke von jedem Programm, an dem er je gearbeitet hat, sie stapeln sich grob chronologisch geordnet auf jeder ebenen Fläche des Büros. Im Zimmer verteilt finden sich über ein Dutzend mit kaltem Kaffee mehr oder weniger gefüllter Tassen. Gelegentlich schwimmen Zigarettenkippen darin herum, in einigen Fällen auch Reste von Orangenschalen. Irgendwo liegen Kopien des OS JCL-Manuals und der "Principles of Operation" an besonders interessanten Stellen aufgeschlagen herum, außer bei extrem guten Leuten. An der Wand klebt ein Schnelldruckerkalender mit Snoopy aus dem Jahr 1969. Über den Boden verteilt liegen Reste der Verpackungen von gefüllten Keksen (der Typ, der schon in der Fabrik furztrocken gebacken wird, daß er auch bei längerem Liegen im Automaten nicht schlecht wird). Schließlich, in der linken, oberen Schublade des Schreibtisches, unter der Schachtel mit den Muntermachern, liegt eine Schablone für Flußdiagramme, die sein Vorgänger dort vergessen hat. Echte Programmierer schreiben Programme und keine Dokumentationen, das überlässt man den Typen von der Wartung.
Der Echte Programmierer ist in der Lage, 30, 40, ja sogar 50 Stunden in einem Rutsch zu arbeiten, und das unter hohem Zeitdruck. Genau genommen mag er es so am liebsten. Schlechte Antwortzeiten regen den Echten Programmierer nicht auf - sie geben ihm die Chance, zwischen zwei Kommandos ein bißchen Schlaf zu ergattern. Wenn die Planung nicht genug Zeitdruck bereithält, dann tendiert der Echte Programmierer dazu, seine Arbeit herausfordernder zu machen, indem er sich die ersten neun Wochen mit einem kleinen, aber sehr interessanten Teil des Problems befaßt, um dann in der letzten Woche seine Aufgabe in zwei oder drei 50 Stunden Marathonsitzungen zu beenden. Dies beeindruckt nicht nur den Manager, sondern schafft gleichzeitig eine hervorragende Entschuldigung für das Fehlen der Dokumentation.
Und überhaupt: Kein Echter Progammierer arbeitet von 9 bis 5, außer denen von der Nachtschicht. Echte Programmierer tragen keine Schlipse. Echte Programmierer tragen keine hochhackigen Schuhe. Echte Programmierer kommen zur Arbeit, wenn andere zum Mittagessen gehen. Ein Echter Programmierer vergißt vielleicht den Vornamen seiner Angetrauten, aber niemals den Inhalt der gesamten ASCII- (oder EBCDIC-) Tabelle. Echte Programmierer können nicht kochen. Da Supermärkte selten um 3 Uhr morgens geöffnet sind, müssen sie sowieso von Kaffee und Keksen leben.
Im Gegenteil! Aus meiner Erfahrung heraus kann ich nur berichten, daß die Zukunft für die Echten Programmierer überall nur strahlend ist. Weder OS/370, noch FORTRAN zeigen irgendwelche Anzeichen des Aussterbens, trotz aller Anstrengungen der PASCAL-Programmierer auf der ganzen Welt. Selbst subtile Versuche wie die Hinzufügung strukturierter Programmkonstrukte zu FORTRAN haben versagt. Oh, sicherlich, einige Computerhersteller kommen mit einem FORTRAN77-Compiler aus, aber jeder einzelne von ihnen kann mit einer einfachen Option in einen FORTRAN66- Compiler zurückverwandelt werden, um DO-Schleifen zu compilieren, wie Gott sie schuf.
Sogar UNIX ist nicht mehr so schlecht zu Echten Programmierern, wie es einmal war. Die letzte Version von UNIX hat die Möglichkeiten eines Betriebssystems, das eines Echten Programmierers würdig ist. Es hat zwei verschiedene und leicht inkompatible Benutzerschnittstellen, einen aufwendigen und komplizierten Terminaltreiber und virtuellen Speicher. Wenn man die Tatsache vergi&azlig;t, daß es strukturiert ist, kann der Echte Programmierer sogar der C-Programmierung einiges abgewinnen. Immerhin gibt es keine Typüberprüfungen, Variablennamen können sieben (zehn? acht?) Zeichen lang sein, und der Bonus von Pointer-Typen wird einem geschenkt. Es ist, als ob das beste aus FORTRAN und ASSEMBLER in einer Sprache vereinigt wurden. (Einige der kreativeren Anwendungen des #define brauchen wir hier nicht erst zu erwähnen.)
Nein, die Zukunft ist im ganzen nicht schlecht. In den letzten paar Jahren haben sogar die Zeitungen über die neue Generation von Hackern und Computersüchtigen berichtet, die Orte wie Stanford und MIT verliessen, und die wirkliche Welt betraten. Allem Anschein nach, lebt der Geist der Echten Programmierer in diesen jungen Männern und Frauen fort. Solange es unklare Ziele, bizarre Fehler, und unrealistische Zeitpläne gibt, wird es Echte Programmierer geben, die in die Bresche springen, und das Problem lösen, um sich die Dokumentation für später aufzusparen. Lang lebe FORTRAN!