(Aus eine unbekannten amerikanischen
Quelle, von einem unbekannten Übersetzer).
Vor langer Zeit, in der goldenen Aera der Computer,
war es noch einfach, Männer von Memmen zu trennen,
also Echte Programmierer von den Müslifressern. Echte
Programmierer programmierten Computer, Müslifresser
ließen es bleiben. Ein Echter Computerprogrammierer sagte
Dinge wie 'DO 10 I1, 100' oder 'ABEND',
und der Rest der Welt quengelte 'Computer sind mir zu
kompliziert' oder 'Ich kann zu Computern keine
gefühlsmäßige Beziehung aufbauen, sie sind so
unpersönlich'. Dabei zeigte schon Remy Eysenns 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
Asteroids sind 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 im
Gepäck ersetzt zu werden.
Es gibt allerdings einige Unterschiede zwischen
dem typischen pacmanspielenden 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.
Außerdem schützt sie die Echten Programmierer
vor Arbeitslosigkeit.
Der einfachste Weg, um einen Echten Programmierer
zu erkennen, führt über die von ihm benutzte
Programmiersprache. Echte Programmierer
sprechen Fortran. Müslifresser benutzen
Pascal. N. Wirth, der Schöpfer von Pascal,
wurde einmal gefragt, wie man seinen
Namen ausspreche. 'YOU can either
call me by name, pronouncing it 'veert',
or call me by value 'worth'", antwortete er.
Diese Bemerkung zeigt sofort, daß Wirth
ein Müslifresser ist. Der einzige
Parameterübergabemechanismus, den Echte Programmierer
akzeptieren, ist 'call by value return', wie er
in den
IBM/370 Fortran G- und H-Compilern
implementiert ist. Echte Programmierer brauchen
schließlich keine abstrakten Konzepte, um ihre
Arbeit zu erledigen. Sie sind vollkommen
glücklich mit einem Lochkartenstanzer,
einem Fortran IV Compiler und einem Bier.
Echte Programmierer erledigen Listenverarbeitung,
Zeichenkettenmanipulation, Abrechnungswesen, wenn
überhaupt, und künstliche Intelligenz in Fortran.
Was sie in Fortran nicht machen können,
machen sie in Assembler, was sie in
Assembler nicht machen können, lassen sie verächtlich
liegen.
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 ihren speziellen Standpunkt
aufzeigen wollen, passen ausnahmslos auf eine einzige
Seite irgend eines obskuren Journals. Als ich
aus der Schule kam, dachte ich, ich sei
der beste Programmierer der Welt. Ich konnte ein
unschlagbares TIC TAC TOE schreiben,
beherrschte 5 Programmiersprachen und schrieb
fehlerfreie 1000-Zeilen-Programme. Dann
kam ich in die Wirklichkeit. Meine
erste Aufgabe bestand darin ein
200.000-Zeilen-Frotran-Programm zu lesen, zu
verstehen und um den Faktor 2 zu
beschleunigen. Jeder Echte
Programmierer wird einem versichern, daß die
gesammte strukturierte Programmierung der
Welt in einem solchen Fall nicht hilft,
hier braucht man wirklich Talent.
Einige Beobachtungen zum Thema Echte Programmierer
und strukturierte Programmierung:
Echte Programmierer haben keine Angst
vor gotos.
Echte Programmierer schreiben 5
seitenlange DO Schleifen,
ohne durcheinander zugeraten.
Echte Programmierer lieben das
arithmetische IF Statment,
das mit den drei Ausgängen, weil
es den Code interessanter
macht.
Echte Programmierer schreiben
selbstmodifizierende Program-
me, speziell dann, wenn sie damit
in einer kleinen Schleife
20 Nanosekunden einsparen können.
Echte Programmierer brauchen keine
Kommentare, das Programm
ist selbstdokumentierend.
Da Fortran strukturierte IF-,
REPEAT .. UNTIL- oder CASEan-
weisungen nicht kennt, braucht
sich der Echte Programmierer
nicht zu sorgen, daß er sie nicht
nutzt. Andernfalls kann
man sie über assigned
GOTOs, also die Zuweisung einer
Sprungmarke an eine Variable,
simulieren.
Auch Datenstrukturen waren in der letzten Zeit
in der Diskussion. Abstrakte Datentypen, Records,
Pointer, Listen und Zeichenketten sind in gewissen
Kreisen populär geworden. Wirth, der
Müslifresser, verfaßte sogar ein ganzes Buch,
Algorithmen und Datenstrukturen, in dem er
behauptet, daß man Programme schreiben könne, die
auf Datenstrukturen aufbauen, statt es umgekehrt zu
machen. Wie jeder Echte Programmierer weiß, gibt es
nur eine wirklich nützliche Datenstruktur, das
Array. Zeichenketten, Listen, Records und
Mengen sind allesamt Sonderfälle von Arrays
und können auch so behandelt werden, ohne dadurch die
Sprache zu verkomplizieren. Das Schlimmste an den ganzen
schönen Typen ist außerdem, daß man sie deklarieren
muß, während Echte Programmiersprachen, wie man
weiß, den Typ anhand des ersten Buchstabens eines
maximal 6 Zeichen langen Bezeichners implizit festlegen.
Welches Betriebssystem der Echte Programmierer
benutzt? CP/M? Gott bewahre! Das ist doch
im Grunde ein Spielzeugbetriebssystem.
Selbst kleine, alte Damen und Hauptschüler können
CP/M benutzen und verstehen.
Unix ist natürlich schon viel komplizierter,
und der typische Unixhacker weiß nie,
wie das Printkommando diese Woche heißt. Aber wenn
man es genau nimmt, ist Unix auch nur ein verherrlichtes
Telespiel. Niemand arbeitet auf Unixsystemen an
ernstzunehmenden Dingen, man schickt kleine Witzchen
mit USENET rund um die Welt, oder schreibt ein neues
Adventurespiel oder Forschungsberichte.
Nein, der Echte Programmierer benutzt OS/370. Ein guter
Programmierer kann die Beschreibung des
Fehlers IJK305I in seinem JCLmanual
finden und verstehen. Ein großartiger
Programmierer kann JCL schreiben ohne je ins Manual
zu sehen. Ein wahrhaft außerordentlicher
Programmierer kann Fehler in einem 6 Megabyte Hexdump
finden ohne einen Taschenrechner zu benutzen.
OS/370 ist wirklich Das
Betriebssystem. Mit einem einzigen falsch
plazierten Leerzeichen kann man die Arbeit
mehrer 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 Timesharingsystem
unter OS/370, aber nach sorgfältigen Nachforschungen
bin ich zu dem Schluß gekommen, daß sie sich irren.
Wo der typische Programmierer arbeitet? Welche Art
von Programmen derart talentierter Individuen
würdig ist? Nun, man kann sicher
sein, daß man nie einen Echten Programmierer beim
Schreiben von Buchhaltungsprogrammen in Cobol
erwischen wird, oder beim Sortieren von
Abonnementadressen des Spiegels. Nein, ein
Echter Programmierer braucht Aufgaben von
weltbewegender Bedeutung.
Echte Programmierer arbeiten für das Los Alamos
Laboratory und Schreiben dort Atomkriegssimulationen
auf Cray-1-Supercomputern, oder sie arbeiten bei der
National Security Agency und entschlüsseln russische
Funksprüche. Nur weil tausende Echte
Programmierer für die NASA gearbeitet haben, waren
unsere Jungs eher auf dem Mond als die
Kosmonauten. Die Computer im Spaceshuttle
wurden von Echten Programmieren programmiert, und
auch das Betriebssystem der Cruise
Missles der Firma Boeing wurde von diesen
Echten Programmierern entworfen.
Einige der erfurchteinflößenden Echten Programmierer
arbeiten im Jet Propulsion Laboratory in Kalifornien.
Viele von ihnen kennen das gesamte Betriebssystem der Pioneer-
und Voyagersonden auswendig. Mit einer Kombination aus
großen, bodengebundenen Fortranprogrammen und kleinen, von
den Sonden mitgeführten Assemblerprogrammen vollbringen
sie unglaubliche Kunststücke der Navigation und
Improvisation. So treffen sie nur 10 km große
Fenster nahe Saturn nach sechs 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 Bytes unbenutzten Speichers innerhalb
der Voyagersonde ein Mustererkennungsprogramm zu
pressen, das einen neuen Mond des Jupiters suchte,
fand und fotografierte.
Für die Galileosonde ist vorgesehen, daß sie auf
ihrem Weg zum Jupiter entlang einer
schwerkraftgelenkten Bahn am 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 Pascalprogramm oder gar -programmierer
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 erscheinen
allerdings dunkle Wolken am Horizont der Echten
Programmierer. Es scheint, als hätten einige
einflußreiche Müslifresser 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 im Verstoß gegen alle Regeln der
Echten rogrammierung.
Es ist eine Sprache mit Strukturen, Datentypen, strenger
Typbindung und Semikolons. Kurz, sie
ist wie geschaffen, um die Kreativität
des typischen Programmierers zu verkrüppeln.
Glücklicherweise hat jetzt die vom DoD ausgewähte
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
Programmiermethodologie, der von Pascalprogrammierern und
Müslifressern gleichermaßen bewundert wird. Und
außerdem, ein zu allem entschloßener Fortranprogrammierer
kann in jeder Sprache Fortranprogramme schreiben.
Der Echte Programmierer kann allerdings
auch Kompromisse in bezug auf seine
Prinzipien eingehen 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 doch
verrückt, das Geld von 50 Millionen Star Wars
Fans auszuschlagen.
Der Anteil der Echten Programmierer im Bereich der
Computergrafik ist etwas niedriger als anderswo, was
wahrscheinlich daran liegt, daß noch niemand
irgendeinen Nutzen der Computergrafik entdeckt
hat. Andererseits werden Computergrafiken
überwiegend in Fortran abgehandelt, daher gibt es einige
Leute, die so das Schreiben von Cobolprogrammen
vermeiden.
Im Allgemeinen spielt der Echte Programmierer wie
er arbeitet, mit Computern. Er ist
anständig darüber erheitert, daß sein
Arbeitgeber ihn tatsächlich für etwas bezahlt, was
er doch zum Spaß sowieso tun würde.
Allerdings achtet er darauf, diese
Meinung nicht zu laut zu äußern. Gelegentlich
kommt der Echte Programmierer auch aus
seinem Büro heraus, um sich ein wenig frische
Luft und ein oder zwei Bierchen zugenehmigen. Hier daher
einige Hinweise, wie man den Echten Programmierer
außerhalb des Comuterraums erkennt:
Auf Parties stehen Echte
Programmierer in einer Ecke herum
und diskutieren über
Sicherheitsmechanismen von Betriebssy-
stemen und wie man darum
herumprogrammiert.
Beim Fußballspiel
vergleicht der Echte Programmierer die
Ergebnisse mit seinem auf grünliniertem
Leporellopapier ge-
druckten Computersimulationsergebnissen.
Am Strand zeichnet der Echte
Programmierer Flußdiagramme in
den Sand.
Ein Echter Programmierer
geht in die Disco, um sich die
Lichtorgel anzusehen.
Bei Begräbnissen sagt der Echte
Programmierer typischerwei-
se: 'Armer Hans Helmut. Er
war mit seinem Sortierprogramm
schon fast fertig, als ihn der
Herzinfarkt geholt hat'.
Im Supermarkt besteht der Echte
Programmierer darauf, seine
Bierdosen selber über das Fenster
des Strichcodelesers zu
schieben, weil er keinem Kassierer
zutraut, dies beim er-
sten Versuch richtig zu machen.
In welcher Umgebung der Echte Programmierer am
besten funktioniert? Nun, dies ist eine
sehr wichtige Frage für Manager von Echten
Programmierern. Wenn man bedenkt, wie teuer es ist, einen
von ihnen in Betrieb zu halten, dann sollte man ihn oder
sie in eine optimale Arbeitsumgebung versetzen.
Der typische Echte Programmierer lebt vor seinem
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üllte Tassen.
Gelegentlich schwimmen Zigarettenkippen darin
herum, in einigen Fällen auch
Reste von Orangenschalen.
Irgendwo liegen Kopien das OS JCL Manuals und der
'Principles of Operation' an einer besonders
interessanten Stelle aufgschlagen herum, außer
bei extrem guten Leuten. An der Wand
klebt ein Schnelldruckerkalender mit Snoopy
darauf aus dem Jahre 1969. Über den Boden
verteilt liegen Reste der Verpackungen von gefüllten
Keksen (der Typ von Keks, der in
der Fabrik schon so furztrocken
ist, daß er auch bei längerem liegen im
Automaten nicht schlechter 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 Dokumentation, das überläßt man
den Typen von der Wartung.
Der Echte Programmierer ist in der Lage 30, 40, ja 50
Stunden in einem Rutsch zu arbeiten, und das unter hohem
Zeitdruck. Genaugenommen mag er es so am liebsten.
Wartezeiten regen den Programmierer nicht
auf, sie geben ihm die Chance,
zwischen zwei Kommandos ein bißchen Schlaf
zu ergattern. Wenn die Planung
nicht genug Zeitdruck bereit hält,
dann tendiert der Echte Programmierer
dazu, seine Arbeit herausfordernder zu
machen, indem er sich die ersten neun Wochen
mit einem kleinem, aber sehr
interessanten Teil des Problems befaßt, um
dann in der letzten Woche seine Aufgabe in einer oder
zwei 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 Programmierer
arbeitet von 9 bis 17 Uhr, außer denen von der
Nachtschicht. Echte Programmierer tragen keine
Schlipse. Echte Programmierer tragen keine
hochhakigen 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 EBCDICtabelle. Echte
Programmierer können nicht kochen. Da
Supermärkte morgens um drei selten
geöffnet sind, müssen sie sowieso von Kaffee
und Keksen leben.
Die Zukunft betrachtend machen sich eine Reihe von
Echten Programmierern Sorgen, daß
die jüngste Pogrammierergeneration nicht mehr
mit der gleichen Lebensperspektive aufwächst wie sie
selbst. Viele der Jüngeren haben noch nie
einen Computer mit einer Maschinenconsole
gesehen. Kaum ein Schulabgänger kann
heute noch hexadezimal rechnen, ohne
einen Taschenrechner zu benutzen. Die Studenten
von heute sind weich, geschützt vor den
Realitäten der Programmierung durch symbolische
Debugger, Texteditoren, die Klammern zählen, und
benutzerfreundliche Betriebssysteme. Und das Schlimmste ist,
einige dieser angeblichen Computerspezialisten kommen
zu Rang und Namen, ohne je Fortran zu
lernen. Sind wir dazu verdammt, eine Industrie
von Unixhackern und Pascalprogrammierern zu werden?
Nun, aus meiner Erfahrung heraus glaube ich behaupten zu
dürfen, daß das Schicksal den Echten
Programmierern wohlgesonnen ist. Weder OS/370
noch Fortran zeigen irgendwelche Symptome des
Aussterbens, trotz aller Anstrengungen
der Pascalprogrammierer. Selbst subtilere
Tricks, wie das Hinzufügen
strukturierter Schleifen zu Fortran sind fehlgeschlagen.
Sicher, einige Computerhersteller liefern Fortran 77
Compiler, aber jeder einzelne von Ihnen
läßt sich über eine einzige Compileroption in
einen Fortran 66 Compiler verwandeln, mit DO
Schleifen wie von Gott erschaffen.
Selbst Unix scheint für den Echten Programmierer
nicht mehr so schlecht zu sein wie
früher. Die neueste Unixversion hat das
Potential eines Betriebssystems, das einem Echten
Programmierer würdig ist. Sie hat zwei verschiedene, leicht
inkompatible Benutzerschnittstellen, einen geheimnisvollen
und komplizierten Teletypetreiber und virtuellen Speicher.
Und wenn der Echte Programmierer die Strukturierung
ignoriert, kann er sich sogar mit C
anfreunden. Schließlich gibt es keine
Typenbindung, Bezeichner sind 7, 8 oder 10
Zeichen lang, und man hat Zeiger als Bonus. Das
ist, als hätte man die besten Teile von Fortran und
Assembler vereint, von den kreativen Möglichkeiten
des #define ganz zu schweigen.
Nein, die Zukunft ist nicht vollständig schlecht. So hat
sich in den vergangenen Jahren die populäre Presse sogar
über die clevere, neue Brut von
Computerschraten und -hackern positiv
geäußert, die Plätze wie Stanford und MIT zugunsten
der Wirklichkeit verlassen haben. Allen
Anzeichen nach lebt der Geist der Echten
Progrogrammierung weiter in diesen jungen
Männern und Frauen. Und solange es
schlecht beschriebene Ziele, bizarre Fehler und
unrealistische Zeitpläne gibt, solange wird es Echte
Programmierer geben, die bereit sind einzuspringen und das
Problem zu lösen und die sich die Dokumentation für später
aufheben.
Lang lebe Fortran.