Echte Programmierer meiden Pascal

(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.


COPYRIGHT HICOSOFT GMBH 1997 Email an Hicosoft GmbH