Echte Programmierer meiden PASCAL oder "Lang lebe FORTRAN!"

                Echte Programmierer meiden PASCAL

         Aus DATAMATION 7/83, uebersetzt durch Bernd Leeds

Vor  langer  Zeit,  in  der goldenen Aera der  Computer,  war  es  noch 
einfach,  die  Maenner von den Memmen zu trennen (mitunter auch  ``Echte 
Maenner''  und ``Muesli-Fresser'' genannt).  Echte Maenner  programmierten 
Computer,  und Muesli-Fresser liessen es bleiben.  Ein echter Computer-
Programmierer sagte Dinge wie ``DO 10 I=0,10'' oder ``ABEND'', und der Rest 
der Welt quengelte ``Computer sind mir zu kompliziert'' oder ``Ich kann zu 
Computern  keine  gefuehlsmaessige  Bindung  aufbauen  -  sie  sind  zu 
unpersoenlich''.  Dabei  zeigt schon Remy Eyssen's Buch  ``Echte  Maenner 
moegen kein Muesli'' (Heine TB 6290),  dass echte Maenner zu nichts  und 
niemandem eine ``gefuehlsmaessige Bindung'' aufbauen,  und dass sie  auch 
keine Angst haben, unpersoenlich zu sein.

Aber die Zeiten aendern sich.  Heute stehen wir einer Welt  gegenueber, 
in  der kleine alte Damen vollcomputerisierte  Mikrowellenherde  kaufen 
koennen,  in  der 12 Jahre alte Dreikaesehochs gestandene  Maenner  bei 
ASTEROIDS  und  PACMAN  sattmachen,  und in der  jeder  seinen  eigenen 
Heimcomputer kaufen und sogar verstehen kann.  Der Echte  Programmierer 
ist  gefaehrdet,  von Studenten mit einem igITT 2020 (deutsche  Version 
des ABFALL II, A.d.Ue.) im Gepaeck 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 koennen - ein Vorbild,  eine Vaterfigur. Ausserdem schuetzt 
sie die Echten Programmierer vor der Arbeitslosigkeit.

Der einfachste Weg,  um einen Echten Programmierer zu erkennen,  fuehrt 
ueber  die  von ihm benutzte  Programmiersprache.  Echte  Programmierer 
benutzen FORTRAN.  Muesli-Fresser benutzen Pascal.  Niklaus Wirth,  der 
Schoepfer  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,    dass   Wirth   ein   Muesli-Fresser   ist.    Der    einzige 
Parameteruebergabemechanismus, den Echte Programmierer akzeptieren, ist 
call-by-value-return (call-by-result,  A.d.Ue.),  wie er in den IBM/370 
Fortran-G  und  -H-Compilern  implementiert  ist.  Echte  Programmierer 
brauchen  schliesslich keine abstrakten Konzepte;  sie sind  vollkommen 
gluecklich mit einem Lochkartenstanzer,  einem Fortran-IV-Compiler  und 
einem   Bier.   Echte   Programmierer   erledigen   Listenverarbeitung, 
Zeichenketten-Manipulationen,  Abrechnungswesen  (wenn ueberhaupt)  und 
kuenstliche  Intelligenz in FORTRAN.  Was sie mit FORTRAN nicht  machen 
koennen,  machen sie mit Assembler;  was sie mit Assembler nicht machen 
koennen, lassen sie veraechtlich liegen.

Akademische  Computerspezialisten  sind  in  den  letzten  Jahren  aufs 
Abstellgleis der strukturierten Programmierung geraten.  Sie behaupten, 
dass Programme verstaendlicher werden,  wenn bestimmte Sprachkonstrukte 
und  Programmiertechniken benutzt werden.  Sie koennen sich  natuerlich 
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  irgendeines   obskuren 
Journales.  Als ich aus der Schule kam,  dachte ich,  ich sei der beste 
Programmierer der Welt.  Ich konnte ein unschlagbares TIC-TAC-TOE-Spiel 
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,   dass   die   gesamte 
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 Seiten lange  DO-Schleifen,  ohne 
     durcheinander zu geraten.
 *   Echte  Programmierer lieben arithmetische IF-Statements  (die  mit 
     den  3  Ausgaengen,  A.d.Ue.),  weil sie  den  Code  interessanter 
     machen.
 *   Echte  Programmierer  schreiben  selbstmodifizierende   Programme, 
     speziell wenn sie damit in einer kleinen Schleife 20  Nanosekunden 
     einsparen koennen.
 *   Echte  Programmierer brauchen keine Kommentare, das  Programm  ist
     selbstdokumentierend.
 *   Da   FORTRAN  strukturierte  IF-,   REPEAT...UNTIL-   oder   CASE-
     Anweisungen  nicht  kennt, braucht sich  der  Echte  Programmierer
     nicht zu sorgen,  dass  er sie nicht benutzt.  Ausserdem kann  man
     sie noetigenfalls ueber "Assigned GOTOs" (Zuweisung eines  Sprung-
     labels auf eine Variable, A.d.Ue.) simulieren.

Auch  Datenstrukturen  waren  in der letzten Zeit  in  der  Diskussion. 
Abstrakte Datentypen,  Records,  Pointer, Listen und Zeichenketten sind 
in  gewissen  Kreisen populaer  geworden.  Wirth,  der  Muesli-Fresser, 
verfasste  sogar  ein ganzes Buch ("Algorithmen  und  Datenstrukturen",
Teubner  1975),  in  dem er behauptete,  dass man  Programme  schreiben
koenne, die auf Datenstrukturen aufbauen, statt es umgekehrt zu machen.
Wie  jeder  Echte  Programmierer  weiss,  gibt  es  nur  eine  wirklich
nuetzliche Datenstruktur, das Array. Zeichenketten, Listen, Records und
Mengen  sind  allesamt  Sonderfaelle von Arrays  und  koennen  auch  so
behandelt  werden,  ohne dadurch die Sprache  zu  verkomplizieren.  Das
Schlimmste  an den ganzen schoenen Typen ist ausserdem,  dass  man  sie
deklarieren muss,  waehrend Echte Programmiersprachen,  wie man  weiss,
den  Type 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  Spielzeug-Betriebssystem.  Selbst 
kleine  alte  Damen   und  Hauptschueler   koennen  CP/M  benutzen  und
verstehen.

UNIX ist natuerlich schon viel komplizierter - der typische UNIX-Hacker 
weiss nie, wie das PRINT-Kommando diese Woche heisst - aber wenn man es 
genau nimmt,  ist UNIX auch nur ein verherrlichtes  Telespiel.  Niemand 
arbeitet  auf UNIX-Systemen an ernstzunehmenden Dingen  -  man  schickt
kleine Witzchen ueber USENET rund um die Welt,  oder schreibt ein neues
Adventure-Spiel oder Forschungsberichte.

Nein,  der  Echte Programmier benutzt OS/370.  Ein guter  Programmierer 
kann  die Beschreibung des Fehlers IJK305I in seinem JCL  (Job  Control
Language,  A.d.Tippers)-Manual finden und verstehen.  Ein  grossartiger
Programmierer  kann JCL schreiben,  ohne je das Manual  zu  sehen.  Ein
wahrhaft  ausserordentlich 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  zerstoeren,  was  die  Wachsamkeit  im  Programmierteam 
ungemein foerdert. Der beste Weg zum System ist der Kartenstanzer. Zwar 
behaupten einige Leute,  es gaebe ein Timesharing-System unter  OS/370, 
aber  nach  sorgfaeltigen  Nachforschungen  bin  ich  zu  dem   Schluss 
gekommen, dass sie sich irren.

Welche   Werkzeuge  kann  ein  Echter  Programmierer   benutzen?   Nun, 
theoretisch  koennte  er  seine Programme  ueber  die  Maschinenkonsole 
eingeben und laufen lassen.  In den fruehen Tagen der  Computerei,  als 
Computer  noch Maschinenkonsolen hatten,  wurde dies auch  gelegentlich 
getan.  Der  typische Programmierer wusste den System-Urlader Bit  fuer 
Bit  auswendig  und  tastete ihn ein,  sobald er  von  seinem  Programm 
zerstoert worden war.  Damals war Speicher auch noch Speicher - der war 
nicht  einfach leer,  wenn der Strom ausfiel.  Hauptspeicher von  heute 
hingegen vergessen entweder Dinge, die sie behalten sollen, oder halten 
Informationen,  die  schon  lange weg sein sollten.  Aber  zurueck  zum 
Thema.  Die Legende sagt,  dass Seymour Cray,  der Erfinder des Cray-I-
Supercomputers und der meisten anderen Rechner von Control Data, selbst
das  erste  Betriebssystem fuer die CDC 7600  an  der  Maschinenkonsole
eingetastet hat,  als sie das erste Mal eingeschaltet wurde.  Cray  ist
selbstverstaendlich ein echter Programmierer.

Einer  der Programmierer,  die ich am meisten bewundere,  arbeitet  als 
Systemprogrammierer fuer Texas Instruments.  Eines Tages erhielt er ein 
Ferngespraech  von  einem  Benutzer,  dessen  System  mitten  in  einer 
wichtigen Arbeit abgestuerzt war.  Der Typ reparierte dann den  Schaden 
ueber's Telefon.  Er brachte den Benutzer dazu, an der Maschinenkonsole 
Disk-I/O-Instruktionen  einzutasten,  Systemtabellen in Hexadezimal  zu 
reparieren und Registerinhalte ueber's 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  muss  in diesem Fall seine Arbeit mit  einem  Texteditor 
erledigen.  Auf  den meisten Rechnern stehen verschiedene Editoren  zur 
Verfuegung,  und der Echte Programmierer muss aufpassen,  dass er einen 
erwischt,   der  seinen  persoenlichen  Stil  wiedergibt.  Viele  Leute 
glauben,  dass die besten Editoren der Welt im Xerox Palo Alto Research 
Center  geschrieben wurden und auf Alto- und  Dorado-Computern  laufen. 
Ungluecklicherweise  wuerde  jedoch  kein  Echter  Programmierer  einen 
Computer mit einem Betriebssystem benutzen,  das Smalltalk  (Geplapper, 
A.d.Ue.)  heisst,  und sicherlich auch nicht ueber eine Maus mit  einem 
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,  dass  Echte 
Programmierer  das Prinzip "Du kriegst,  was du siehst"  fuer  schlecht
halten.  Der Echte Programmierer will einen "Du hast es so gewollt,  da
hast   du's"-Editor,    einen,    der   kompliziert   ist,   kryptisch,
leistungsfaehig, gnadenlos und gefaehrlich. TECO, um genau zu sein.

Es  wurde  beobachtet,  dass TECO-Kommandofolgen  dem  Leitungsrauschen 
aehnlicher  sind  sind als lesbarem  Text.  Eins  der  unterhaltsameren 
Spiele,  die mit TECO moeglich sind,  besteht darin,  den eigenen Namen 
als Kommando einzugeben und zu raten,  was dann passiert.  So ungefaehr 
jeder moegliche Tippfehler kann dank TECO das gerade editierte Programm 
zerstoeren,  oder  schlimmer noch,  kann kleine mysterioese  Fehler  in 
einstmals funktionierende Unterprogramme einbringen.

Aus  diesem  Grund editieren Echte Programmierer nur  sehr  widerwillig 
Programme,  die schon fast laufen.  Sie finden es viel  einfacher,  den 
binaeren  Objektcode  direkt zu aendern,  fuer  gewoehnlich  mit  einem 
wundervollen  Programm,  das  SUPERZAP heisst  (auf  Nicht-IBM-Rechnern 
entsprechend  anders).  Dies funktioniert so gut,  dass viele  laufende 
Programme  auf IBM-Systemen keine Aehnlichkeit mit dem  urspruenglichen 
FORTRAN-Quellprogramm haben.  In einigen Faellen ist nicht einmal  mehr 
das Quellprogramm vorhanden.  Wenn dann der Zeitpunkt gekommen ist, ein 
Programm zu aendern,  wuerde kein Mananger auch nur daran denken, einem 
geringeren als einem Echten Programmierer diese Arbeit zu uebertragen - 
kein  Muesli-fressender strukturierter Programmierer wuesste auch  nur, 
wo   er   mit   der   Arbeit   anfangen   sollte.    Man   nennt    das 
Arbeitssicherungsmassnahme.

Hier  eine  Liste  der wichtigsten  Programmierhilfen,  die  der  Echte 
Programmierer nicht benutzt:

 *   FORTRAN-Praeprozessoren  wie  MORTRAN  oder  RATFOR.  Diese  Haute 
     Cuisine der Programmierung eignet sich hervorragend,  um Muesli zu 
     produzieren.
 *   Quellcodeorientierte Debugger. Echte Programmierer lesen Hexdumps.
 *   Compiler, die Code fuer Array-Indexpruefung zur Laufzeit erzeugen. 
     Sie  ersticken  jede  Kreativitaet,  zerstoeren  die  meisten  der 
     interessanteren  Anwendungen  der  EQUIVALENCE-Vereinbarung,   und 
     machen  Aenderungen des Betriebssystems mittels negativer  Indizes 
     unmoeglich. Und, schlimmer noch, solcher Code ist ineffizient.
 *   Programm-Pflege-Systeme.  Ein  Echter  Programmierer  haelt  seine 
     Software als Kartenstapel unter Verschluss,  denn dies zeigt, dass 
     der  Besitzer  seine wichtigen Programme  nicht  unbewacht  lassen 
     kann.

Wo der typische Echte Programmierer arbeitet? Welche Art von Programmen 
derart talentierter Individuen wuerdig ist?  Nun, man kann sicher sein, 
dass   man   nie  einen  Echten  Programmierer   beim   Schreiben   von 
Buchhaltungsprogrammen in COBOL erwischen wird, oder gar beim Sortieren 
der  Abonnentenadressen  des SPIEGEL.  Nein,  ein  echter Programmierer
braucht Aufgaben von weltbewegender Bedeutung.

Echte  Programmierer arbeiten fuer das Los Alamos  National  Laboratory 
und  schreiben dort Atomkriegs-Simulationen auf  Cray-I-Supercomputern,
oder  sie arbeiten bei der National Security Agency und  entschluesseln
russische Funksprueche. Nur weil tausende Echter Programmierer fuer die 
NASA gearbeitet haben,  waren "unsere Jungs" eher auf dem Mond als  die
Kosmonauten.   Die   Computer  im  Space  Shuttle  wurden  von   Echten
Programmierern  programmiert,  und auch die Betriebssysteme der  Cruise
Missiles  der  Firma  BOEING wurden  von  diesen  echten  Professionals
entworfen.

Einige der ehrfurchtseinfloessendsten Echten Programmierer arbeiten  im 
Jet  Propulsion Laboratory in Kalifornien.  Viele von ihnen kennen  das 
gesamte  Betriebssystem der Pioneer- und Voyager-Sonden  auswendig. Mit
einer Kombination von grossen,  bodengebundenen FORTRAN-Programmen  und
kleinen,  von den Sonden mitgefuehrten Assembler-Programmen vollbringen
sie  unglaubliche  Kunststuecke der Navigation  und  Improvisation.  So
treffen  sie nur 10 Kilometer grosse 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
gelungen sein, in ein paar hundert Byte unbenutzten Speichers innerhalb
der  Voyager-Sonde ein Mustererkennungsprogramm zu pressen,  das  einen
neuen Mond des Jupiters suchte, fand und fotografierte.

Fuer  die  Galileo-Sonde ist vorgesehen,  dass sie auf  ihrem  Weg  zum 
Jupiter  entlang einer schwerkraftgelenkten Bahn am  Mars  vorbeizieht. 
Diese  Bahn  fuehrt  in  einer  Entfernung von  80  +/-  3  km  an  der 
Marsoberflaeche  vorbei.  Kein Mensch wuerde diese Art  der  Navigation 
einem Pascal-Programm oder gar -Programmierer anvertrauen.

Viele   der  Echten  Programmierer  dieser  Welt  arbeiten   fuer   die 
amerikanische Regierung,  meist fuer das  Verteidigungsministerium.  So 
soll es sein.  In letzter Zeit erscheinen dunkle Wolken am Horizont der 
Echten  Programmierer.  Es scheint,  als haetten einige  einflussreiche 
Muesli-Fresser im Verteidigungsministerium entschieden, dass in Zukunft 
alle   Verteidigungsprogramme   in   so   einer   Art   von    grosser, 
vereinheitlichter  Programmiersprache  namens  ADA  geschrieben  werden 
muessten.  Lange Zeit schien es, als laege ADA's Bestimmung im Verstoss 
gegen  alle Regeln der Echten Programmierung.  Es ist eine Sprache  mit 
Strukturen,  Datentypen,  strenger Typbindung und Semikolons. Kurz, sie 
ist   wie  geschaffen,   um  die  Kreativitaet  des  typischen   Echten 
Programmierers zu verkrueppeln.

Gluecklicherweise  hat  die  jetzt  vom  DoD  (Department  of  Defense, 
A.d.Tippers)   ausgewaehlte   Sprache   noch   genuegend   interessante 
Eigenschaften,   um  dem  Echten  Programmierer  eine  Annaeherung   zu 
ermoeglichen: Sie ist unglaublich komplex, sie enthaelt Moeglichkeiten, 
um  mit dem Betriebssystem herumzumachen,  und Edgar Dijkstra  mag  sie 
nicht.  Dijkstra  ist,  wie  man wissen sollte,  der Autor  von  "GOTOs
Considered Harmful", einem Meilenstein der Programmiermethodologie, der
von Pascal-Programmierern und Muesli-Fressern gleichermassen  bewundert
wird.  Und ausserdem,  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  eingehen und an etwas geringeren  Aufgaben  als  der 
Vernichtung des Lebens arbeiten,  sofern er dafuer entsprechend bezahlt 
wird.  Viele Echte Programmierer schreiben z.B.  Telespiele fuer Atari, 
allerdings spielen sie nicht damit. Ein Echter Programmierer weiss, wie 
er  die  Maschine  jedesmal  schlagen kann,  und  damit  ist  es  keine 
Herausforderung   mehr.   Jeder   bei   Lucas-Film   ist   ein   Echter 
Programmierer,  denn es waere doch verrueckt, das Geld von 50 Millionen 
Star-Wars-Fans auszuschlagen.

Der  Anteil der Echten Programmierer im Bereich der  Computer  Graphics 
ist etwas niedriger als anderswo,  was wahrscheinlich daran liegt, dass 
noch  niemand  irgendeinen Nutzen der Computer  Graphic  entdeckt  hat. 
Andererseits   werden   Computer  Graphics   vornehmlich   in   FORTRAN 
abgehandelt,  daher  gibt  es einige Leute,  die so das  Schreiben  von 
COBOL-Programmen vermeiden.

Im  Allgemeinen spielt der Echte Programmierer,  wie er arbeitet -  mit 
Computern.  Er ist staendig darueber erheitert,  dass sein  Arbeitgeber 
ihn tatsaechlich fuer etwas bezahlt, was er nur so zum Spass ebenso tun 
wuerde  - allerdings achtet er darauf,  diese Meinung nicht zu laut  zu 
aeussern.  Gelegentlich  kommt der Echte Programmierer auch aus  seinem 
Buero heraus, um sich ein wenig frische Luft und ein oder zwei Bierchen 
zu  genehmigen.   Hier  daher  einige  Hinweise,  wie  man  den  Echten 
Programmierer ausserhalb des Computerraums erkennt:

 *   Auf   Parties  stehen  Echte  Programmierer  in  einer  Ecke   und 
     diskutieren  ueber Sicherheitsmechanismen von Betriebssystemen und
     wie man darum herumprogrammiert.
 *   Bei   Fussballspielen  vergleicht  der  Echte  Programmierer   die 
     Ergebnisse   mit   seinen  auf   gruenliniertem   Leporello-Papier 
     gedruckten Computer-Simulationsergebnissen.
 *   Am  Strand zeichnet der Echte Programmierer Flussdiagramme in  den 
     Sand.
 *   Ein Echter Programmierer geht in die Disco, um sich die Lichtorgel 
     anzusehen.
 *   Bei  Begraebnissen  sagt der  Echte  Programmierer  typischerweise 
     "Armer Hans-Helmut.  Er war mit seinem Sortierprogramm schon  fast
     fertig, als ihn der Herzinfarkt erwischt hat".
 *   Im  Supermarkt  besteht  der  Echte  Programmierer  darauf,  seine
     Bierdosen  selber  ueber  das  Fenster  des  Strichcodelesers   zu
     schieben,  weil  er  keinem Kassierer zutraut,  dies  beim  ersten
     Versuch richtig zu machen.

In  welcher  Umgebung der Echte Programmierer am  besten  funktioniert? 
Nun,  dies  ist  eine sehr wichtige Frage fuer die 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 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  Flaeche des Bueros.   Im Zimmer verteilt finden sich ueber  ein 
Dutzend   mit  kaltem  Kaffee  mehr  oder  minder   gefuellte   Tassen. 
Gelegentlich schwimmen Zigarettenkippen darin herum, in einigen Faellen 
auch  Reste  von  Orangenschalen.  Irgendwo liegen Kopien  des  OS  JCL 
Manuals   und  der  "Principles  of  Operation"  an   einer   besonders
interessanten  Stelle  aufgeschlagen herum,  ausser  bei  extrem  guten
Leuten.  An der Wand klebt ein Schnelldrucker-Kalender mit Snoopy drauf
aus  dem  Jahre  1969.  Ueber  den  Boden  verteilt  liegen  Reste  der
Verpackungen von gefuellten Keksen (der Typ, der schon in der Fabrik so
furztrocken  gebacken  wird,  dass  er auch  bei  laengerem  Liegen  im
Automaten nicht schlechter wird).  Schliesslich,  in der linken, oberen
Schublade des Schreibtischs, unter der Schachtel mit den Muntermachern,
liegt  eine  Schablone fuer Flussdiagramme,  die sein  Vorgaenger  dort
vergessen  hat.  Echte  Programmierer  schreiben  Programme  und  keine
Dokumentation, das ueberlaesst 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. Genaugenommen 
mag  er  es so am liebsten.  Schlechte Antwortzeiten  regen  den  Echte 
Programmierer  nicht  auf - sie geben ihm eine  Chance,  zwischen  zwei 
Kommandos  ein  bisschen Schlaf zu ergattern.  Wenn die  Planung  nicht 
genuegend Zeitdruck bereithaelt,  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  befasst,  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 fuer das Fehlen der Dokumentation.  Und ueberhaupt: Kein 
Echter  Programmierer  arbeitet  von 9 bis  5,  ausser  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 vergisst vielleicht den Vornamen seiner Angetrauten, aber 
niemals den Inhalt der gesamten ASCII- (bzw.  EBCDIC-)  Tabelle.  Echte 
Programmierer  koennen nicht kochen.  Da Supermaerkte um 3 Uhr  morgens 
selten  geoeffnet  haben,  muessen sie sowieso von  Kaffee  und  Keksen 
leben.

Die   Zukunft   betrachtend   machen  sich  eine   Reihe   von   Echten 
Programmierern Sorgen,  dass die juengste Programmierergeneration nicht 
mehr  mit  der gleichen Lebensperspektive aufwaechst  wie  sie  selbst. 
Viele der Juengeren haben noch nie einen Computer mit  Maschinenkonsole 
gesehen.  Kaum ein Schulabgaenger kann heute noch hexadezimal  rechnen, 
ohne  einen Taschenrechner zu benutzen.  Die Studenten von  heute  sind 
weich  -  geschuetzt  vor  den  Realitaeten  der  Programmierung  durch 
symbolische  Debugger,   Texteditoren,   die  Klammern   zaehlen,   und 
benutzerfreundliche  Betriebssysteme.  Und das schlimmste  ist,  einige 
dieser angeblichen Computer-Spezialisten kommen zu Rang und Namen, ohne 
je FORTRAN zu lernen!  Sind wir dazu verdammt, eine Industrie von UNIX-
Hackern und Pascal-Programmierern zu werden?

Nun, aus meiner Erfahrung heraus glaube ich, behaupten zu duerfen, dass 
das Schicksal den Echten Programmierern wohlgesonnen ist.  Weder OS/370 
noch FORTRAN zeigen irgendwelche Symptome des Aussterbens,  trotz aller 
Anstrengungen der Pascal-Programmierer. Selbst subtilere Tricks wie das 
Hinzufuegen  strukturierter Schleifen zu FORTRAN  sind  fehlgeschlagen. 
Sicher,  einige  Computerhersteller liefern  FORTRAN-77-Compiler,  aber 
jeder einzelne von ihnen laesst sich ueber eine einzige Compiler-Option 
in  einen FORTRAN-66-Compiler verwandeln - mit  DO-Schleifen,  wie  von 
Gott geschaffen.

Selbst UNIX scheint fuer den Echte Programmierer nicht mehr so schlecht 
zu sein wie frueher.  Die neueste UNIX-Version hat das Potential  eines 
Betriebssystems,  das eines Echten Programmierers wuerdig ist.  Sie hat
zwei verschiedene,  leicht inkompatible  Benutzerschnittstellen,  einen
geheimnisvollen  und  komplizierten  Teletype-Treiber  und   virtuellen
Speicher.   Und   wenn  der  Echte  Programmierer  die   Strukturierung
ignoriert,  kann er sich sogar mit C anfreunden.  Schliesslich gibt  es
keine Typenbindung,  Bezeichner sind sieben (Zehn? Acht?) Zeichen lang,
und man hat Zeiger als Bonus.  Das ist, als haette man die besten Teile
von FORTRAN und Assembler vereinigt, von den kreativeren Moeglichkeiten
des #define ganz zu schweigen.

Nein,  die  Zukunft  ist nicht voellig schlecht.  So hat  sich  in  den 
vergangenen  Jahren die populaere Presse sogar ueber die  clevere  neue 
Brut  von Computer-Schraten und -Hackern geaeussert,  die  Plaetze  wie 
Stanford  und  MIT zugunsten der Wirklichkeit  verlassen  haben.  Allen 
Anzeichen  nach  lebt  der Geist der Echten  Programmierung  weiter  in 
diesen jungen Maennern und Frauen. Und solange es schlecht beschriebene 
Ziele,  bizarre Fehler und unrealistische Zeitplaene gibt, solange wird 
es Echte Programmierer geben,  die bereit sind,  einzuspringen und  das 
Problem  zu  loesen,  und  die  sich  die  Dokumentation  fuer  spaeter 
aufheben.

                       Lang lebe FORTRAN!
Zur Hauptseite Zur Witze-Übersicht