ALL EN FR ES IT

Logo

≡ ▲

Echte Programmierer

Computerwelt

Echte Programmierer verwenden PASCAL nicht

(oder auch "Echte Männer essen keine Quiche)

Damals, in der goldenen Ära der Computer, war es einfach, die Männer von den Knaben zu unterscheiden (Die manchmal auch "Echte Männer" und "Quiche - Fresser" genannt wurden).

Zu dieser Zeit waren die Echten Männer die, die das Programmieren von Computern verstanden, und die Quiche-Fresser waren die, die es nicht konnten. Ein echter Computer-Programmierer sagte Dinge wie 'DO IO 1 = 1,10' und 'ABEND' und der Rest der Welt sagte Dinge wie 'Computer sind zu kompliziert für mich' und 'Ich kann zu Computern keine Beziehung aufbauen - sie sind so unpersönlich'. Ein frühes Werk, B. Feirstein's 'Echte Männer essen keine Quiche', ein Taschenbuch aus dem Jahre 1982, machte deutlich, dass echte Männer keine Beziehung zu irgendwas haben und keine Angst davor, unpersönlich zu sein.

Aber die Zeiten ändern sich. Heute sehen wir uns einer Welt gegenüber, in der nette alte Damen computerisierte Mikrowellenherde bekommen, 12-jährige Kinder Echte Männer bei 'Asteroids' und 'Pac-Man' aus dem Rennen werfen können und jeder seinen eigenen Personal-Computer kaufen und verstehen kann. Der echte Programmierer ist in Gefahr, von High-School-Studenten mit TRaSh-80's ersetzt zu werden! Es gibt aber Unterschiede zwischen dem typischen High-School Pac-Man spielenden Jüngling und einem echten Programmierer. Diese Unterschiede zu kennen, kann den Kids etwas geben, wonach sie streben können - eine Rolle, eine Vaterfigur. Es wird auch helfen, echte Programmierer beschäftigt zu halten.

Der einfachste Weg, zu bestimmen, wer die echten Programmierer sind, ist die Programmiersprache, die sie benutzen. Echte Programmierer benutzen FORTRAN. Quiche-Fresser benutzen PASCAL. Nicklaus Wirth, der Erfinder von PASCAL, wurde einmal gefragt 'Wie spricht sich Ihr Name aus?'.'Sie können mich entweder beim Namen rufen, wenn Sie es 'Veert' betonen oder mich beim Wert rufen 'Worth'', antwortete er. Man kann sofort anhand dieser Antwort sagen, dass Nicklaus Wirth ein Quiche-Fresser ist. Der einzige Wert-Übergabe-Mechanismus, der von echten Programmieren gutgeheißen wird, ist call-by-value-return, wie er in den IBM/370 FORTRAN G und H Compilern implementiert ist. Echte Programmierer brauchen keine abstrakten Konzepte, um ihre Arbeit zu machen; sie sind wunschlos glücklich mit einem Kartenlocher, einem FORTRAN IV Compiler und einem Bier.

Echte Programmierer machen Listenverarbeitung, String-Manipulation, Buchführung (wenn sie's überhaupt tun) und Künstliche Intelligenz mit FORTRAN. Wenn du's in FORTRAN nicht kannst, mach's in Assembler. Wenn du's in Assembler nicht kannst, ist es nicht wert, überhaupt gemacht zu werden. Informatik-Akademiker sind seit einigen Jahren auf einem ausgeleierten 'Strukturierte Programmierung-Gleis'. Sie nehmen für sich in Anspruch, dass Programme einfacher verstanden werden können, wenn spezielle Sprachkonstrukte und Techniken verwendet werden. Sie stimmen natürlich nicht alle darin überein, welche Konstrukte, und die Beispiele, die sie benutzen, um ihren jeweiligen Standpunkt zu verdeutlichen, passen ausnahmslos auf eine Seite einiger obskurer Zeitschriften.

Als ich aus der Schule kam, glaubte ich, der beste Programmierer der Welt zu sein. Ich konnte ein unbesiegbares Tic-Tac-Toe Programm schreiben, fünf verschiedene Computersprachen benutzen und ein 1000 Zeilen-Programm schreiben, das funktionierte. Dann kam ich in die richtige Welt. Meine erste Aufgabe war, ein 200.000-Zeilen FORTRAN Programm zu lesen und zu verstehen und es dann um den Faktor 2 schneller zu machen... Jeder echte Programmierer wird Ihnen erzählen, dass aller strukturierter Code auf der Welt Ihnen nicht helfen wird, solch ein Problem zu lösen - man braucht tatsächlich Talent.

Einige Blicke auf echte Programmierer und strukturierte Programmierung:

Über Datenstrukturen wurde ebenfalls kürzlich geredet. Abstrakte Daten-Typen, Strukturen, Zeiger und Strings sind in bestimmten Kreisen populär geworden. Wirth, der Quiche-Fresser, schrieb tatsächlich ein ganzes Buch, (Algorithmen und Datenstrukturen) das behauptete, sie könnten ein Programm schreiben, das auf Datenstrukturen aufbaut, anstatt umgekehrt. Wie jeder echte Programmierer weiß, ist die einzige nützliche Datenstruktur das Feld. Strings, Listen, Strukturen und Sets sind alles Spezialfälle von Feldern und können als solche behandelt werden ohne die Programmiersprache komplizierter zu machen... Das Übelste an diesen schrulligen Datentypen ist, dass sie deklariert werden müssen und echte Programmiersprachen haben, wie wir alle wissen, implizite Typen, die auf dem ersten Buchstaben des sechs Zeichen langen Variablennamens basieren.

Welches Betriebssystem wird von einem echten Programmierer benutzt? CP/M? Um Gottes Willen! Das ist im Wesentlichen ein Spielzeug-Betriebssystem. Sogar nette alte Damen und Grundschüler können CP/M benutzen und verstehen. UNIX ist natürlich eine ganze Ecke komplizierter - der typische UNIX-Hacker kann sich nie erinnern, wie das PRINT-Kommando diese Woche heißt - aber genaugenommen ist UNIX ein hochgelobtes Videospiel. Leute machen keine ernsthafte Arbeit mit UNIX-Systemen; sie schicken Scherze um die Welt mit USENET oder schreiben Abenteuerspiele und Forschungsarbeiten. Nein, echte Programmierer benutzen OS/370. Ein guter Programmierer kann die Beschreibung des UK350t-Fehlers finden und verstehen, den er gerade in seinem JCL-Handbuch gefunden hat. Der große Programmierer kann sogar JCL schreiben, ohne überhaupt ins Handbuch zu schauen. Ein wahrhaft hervorragender Programmierer kann Fehler finden, die in einem 6-Megabyte Speicher-Auszug begraben sind, ohne einen Hexadezimal-Taschenrechner zu benutzen. OS/370 ist ein wahrhaft bemerkenswertes Betriebssystem. Es ist möglich, die Arbeit mehrerer Tage mit einem einzigen falsch gesetzten Leerzeichen zu zerstören. Der beste Weg, das System zu erreichen, ist der Lochkartenstanzer. Einige Leute behaupten, dass es ein Time-Sharing-System gibt, das unter OS/370 läuft, aber nach sorgfältiger Prüfung habe ich festgestellt, dass sie irren.

Welche Hilfsmittel benutzt ein echter Programmierer?

In der Theorie kann ein echter Programmierer sein Programm laufen lassen, indem er es in die Schalttafel des Computers eintippt. In den frühen Tagen, als die Computer noch Schalttafeln hatten, wurde das hin und wieder so getan. Ihr typischer Echter Programmierer kannte den gesamten Urlader im Hex-Code und tippte ihn ein, wenn er durch sein Programm zerstört wurde. Anschließend - Speicher war noch Speicher - ging er nicht weg, wenn der Strom abgeschaltet wurde. Heute vergißt der Speicher entweder Sachen, wenn Sie es nicht wollen, oder erinnert sich an Sachen, lange nachdem er sie vergessen haben sollte. Die Legende erzählt, dass Seymour Cray, der Erfinder des Cray 1 und der meisten Control Data Computer, das erste Betriebssystem für die CDC7600 aus dem Gedächtnis in die Schalttafel eintippte, als sie zum ersten Mal eingeschaltet wurde. Cray ist natürlich ein Echter Programmierer.

Einer meiner liebsten Echten Programmierer war ein System-Programmierer von Texas Instruments. Eines Tages bekam er ein Ferngespräch von einem Benutzer, dessen System mitten in einer wichtigen Arbeit zusammenge-brochen war. Jim reparierte den Schaden über das Telefon, indem er den Benutzer dazu brachte, Disketten-Ein-/Ausgabe-Operationen über die Schalttafel einzugeben, Systemtabellen im Hex-Code zu reparieren und Registerinhalte über das Telefon zurückzulesen. Die Moral von der Geschichte: Während ein Echter Programmierer normalerweise einen Lochkartenstanzer und einen Drucker in seinem Werkzeugkasten hat, kann er in Notfällen auch mit nur einer Schalttafel und einem Telefon auskommen.

In einigen Firmen besteht Textverarbeitung nicht länger aus 10 Ingenieuren, die in einer Schlange vor einem 029-Karten-stanzer stehen. Tatsächlich gibt es in dem Gebäude, in dem ich arbeite, keinen einzigen Kartenstanzer. Der Echte Programmierer muss in dieser Situation mit einem Texteditor arbeiten. Die meisten Systeme verfügen über mehrere Texteditoren, unter denen man wählen kann, und der Echte Programmierer muss sich sehr sorgfältig eines auswählen, das seinem persönlichen Stil entspricht. Die meisten Leute glauben, dass die besten Texteditoren der Welt im Xerox Palo Alto Research Center für die Benutzung auf Alto und Dorado Computer geschrieben wurden. Unglücklicherweise wird kein Echter Programmierer jemals einen Computer mit einem Betriebssystem namens SmallTalk benutzen und wird sich sicherlich nie mit dem Computer mittels einer Maus unterhalten. Einige dieser Konzepte in diesen Xerox-Editoren wurden in Editoren übernommen, die unter vernünftig klingenden Namen wie EMACS oder VI laufen. Das Problem mit diesen Editoren ist, dass Echte Programmierer glauben, dass 'Was Sie sehen ist, was sie kriegen' (WYSIWYG), ein schlechtes Konzept in Texteditoren ist. Die Echten Programmierer wollen einen 'Sie haben danach gefragt, sie kriegen's ' - Texteditor, einen der kompliziert ist, verschlüsselt, mächtig, unnachgiebig und gefährlich: TECO, um genau zu sein. Es wurde beobachtet, dass TECO-Kommando-Sequenzen mehr Übertragungsleitungsgeräuschen ähneln, als lesbarem Text. Eines der interessanteren Spiele bei TECO ist es, seinen Namen als Kommandozeile einzugeben und zu raten, was passiert. Fast jeder mögliche Schreibfehler bei der Arbeit mit TECO wird voraussichtlich Ihr Programm zerstören, oder, noch übler, unscheinbare und mysteriöse Fehler in eine vorher funktionierende Subroutine einschleusen. Aus diesem Grund editieren echte Programmierer ein fast fertiges Programm nur ungern. Sie finden es viel einfacher, direkt den Maschinencode einzupatchen, mit Hilfe eines wundervollen Programms namens SUPERZAP (oder seinem Äquivalent auf Nicht-IBM-Maschinen). Das funktioniert so wunderbar, dass viele Programme auf IBM-Maschinen kaum noch Ähnlichkeit mit dem üblichen FORTRAN-Code haben. In einigen Fällen gibt es den ursprünglichen Quellcode überhaupt nicht mehr. Wenn die Zeit kommt, solch ein Programm zu überarbeiten, würde kein Manager auch nur daran denken, irgendjemand anderen als einen Echten Programmierer diesen Job machen zu lassen - kein Quiche-fressender strukturierter Programmierer würde auch nur wissen, wo er anfangen soll. Das nennt man Job-Sicherheit.

Programmierer-Hilfsmittel, die ein Echter Programmierer nicht benutzt

Wo arbeitet der typische Echte Programmierer?

Welche Programme sind diese talentierten Individualisten wert? Sie können sicher sein, dass kein Echter Programmierer tot beim Schreiben von Buchungs-Programmen gefunden wird oder beim Sortieren von Versandlisten für das 'People-Magazin'. Ein Echter Programmierer will Aufgaben von erd-erschütternder Bedeutung. Echte Program- mierer arbeiten für das Los Alamos National Laboratory, wo sie Programme für Atombomben-Simulationen auf dem Cray 1 - Supercomputer schreiben. Sie arbeiten auch in der National Security Agency, indem sie russische Funksprüche entschlüsseln. Es war in erster Linie wegen der Anstrengungen von tausenden von Echten Programmierern, dass unsere Jungs vor den Kosmonauten auf den Mond und zurück kamen. Die Computer im Space-Shuttle wurden programmiert von Echten Programmierern, und diese wahren Profis arbeiten für Boeing, wo sie Betriebssysteme für Cruise Missiles entwerfen. Einige der ehrfurchtsgebietendsten Echten Programmierer arbeiten im Jet Propulsion Laboratory in Kalifornien. Viele von ihnen kennen das komplette Betriebssystem der Pioneer- und Voyager-Sonde im Schlaf. Mit einer Kombination aus riesigen bodengestützten FORTRAN-Programmen und kleinen Assemblerprogrammen in der Sonde können sie unglaubliche Kunststücke an Navigation und Improvisation vollbringen, wie nach sechs Jahren im All 10 km große Fenster auf dem Saturn zu treffen oder beschädigte Sensor-Plattformen, Radios oder Batterien zu reparieren oder zu überbrücken. Angeblich schaffte es ein Echter Programmierer, ein Muster-Erkennungsprogramm in einige hundert Byte unbenutzten Speicher einer Voyager-Sonde zu packen, das einen neuen Jupiter-Mond suchte, fand und fotografierte.

Ein Plan für die Galileo-Sonde ist es, eine Gravitations-Flugbahn über den Mars zum Jupiter zu benutzen. Diese Flugbahn führt 80 +/- 3 km über der Oberfläche des Mars vorbei. Keiner würde einem PASCAL-Programm oder -Programmierer bei solch einer Art von Navigation trauen. Viele der Echten Programmierer dieser Welt arbeiten für die US-Regierung, hauptsächlich für das Verteidigungsministerium. Das ist so, wie es sein sollte.

In jüngster Zeit allerdings ist eine schwarze Wolke am Horizont der Echten Programmierer aufgezogen. Es scheint, als ob einige hochrangige Quiche-Fresser im Verteidigungsministerium beschlossen haben, dass alle Verteidigungsprogramme in einer großen vereinheitlichten Sprache namens 'Ada' geschrieben werden sollen. Für einige Zeit sah es so aus, dass Ada eine Sprache werden sollte, die gegen alle Regeln der echten Programmierung ver- stoßen sollte. Es ist eine Sprache mit Strukturen, Datentypen, strenger Typisierung und Semicolons. Kurz gesagt, sie wurde entwickelt, um die Kreativität des typischen echten Programmierers zu lähmen... Glücklicherweise hat der für's Verteidigungsministerium angepaßte Sprachentwurf genug interessante Besonderheiten, um ihn annehmbar zu machen - er ist unglaublich komplex, beinhaltet Methoden, um im Betriebssystem rumzupfuschen, Felder nachträglich zu verändern - und Edgar Djikastra mag ihn nicht!
Dijkastra hat, wie Sie wissen sollten, 'GOTOs sind schädlich' herausgegeben, ein grundlegendes Werk über Programmier-Methoden, das von PASCAL-Programmieren und Quiche-Fressern in gleicher Weise beklatscht wurde. Außerdem kann der entschlossene Echte Programmierer FORTRAN-Programme in jeder Sprache schreiben. Der Echte Programmierer kann sich auch damit abfinden, seine Prinzipien und Arbeit auf etwas trivialeres als auf die Zerstörung von Leben zu reduzieren, vorausgesetzt, es steckt genug Geld drin. Es gibt mehrere Echte Programmierer die z.B. Videospiele bei Atari entwickeln. Aber sie spielen selber nicht. Ein Echter Programmierer weiß jederzeit wie ein Spiel zu schlagen ist, es ist keine Herausforderung. Jeder der bei LucasFilm arbeitet ist ein Echter Programmierer, weil es verrückt sein würde, das Geld von 50 Millionen 'Star Wars' Fans auszuschlagen. Der Anteil an Echten Programmierern in der Computer-Graphik ist etwas geringer als die Norm, im Wesentlichen deshalb, weil noch niemand eine sinnvolle Anwendung für Computer-Graphik gefunden hat. Auf der anderen Seite werden alle Graphik- Programme in FORTRAN geschrieben, deshalb gibt es einige Leute, die halt Graphik machen, um nicht COBOL-Programme schreiben zu müssen. Normalerweise spielt der Echte Programmierer genau so, wie er arbeitet - mit Computern. Er ist fortwährend verblüfft, dass sein Arbeitgeber ihn tatsächlich für das bezahlt, was er aus Spaß sowieso machen würde, obwohl er sorgfältig darauf achtet, seine Meinung nicht öffentlich kundzutun. Hin und wieder verläßt der Echte Programmierer sein Büro für eine Briese frische Luft und ein oder zwei Bier.

Hier sind einige Tips, um Echte Programmierer außerhalb der Computer-Säle zu erkennen.

In welcher Umgebung funktioniert der Echte Programmierer am besten?

Das ist eine wichtige Frage für die Manager von Echten Programmierern. Wenn man an die Summe denkt, die es kostet, einen in seiner Belegschaft zu halten, ist es am Besten ihm oder ihr eine optimale Umgebung zu bieten. Der typische Echte Programmierer lebt vor seinem Terminal. Darum herum liegen die Listings von jedem Programm, an dem er jemals gearbeitet hat. Diese sind in halbwegs chronologischer Form auf jeder freien Fläche des Büros gestapelt. Sie werden auch ein halbes Dutzend oder mehr halbvolle Tassen finden, die mit kaltem Kaffee gefüllt sind. Hin und wieder werden Zigarettenkippen im Kaffee schwimmen. In einigen Fällen werden die Tassen Orangensaft enthalten. Und, solange er nicht sehr gut ist, werden Kopien des JCL-Handbuchs herumliegen, die an irgendwelchen interessanten Stellen aufgeschlagen sind,.An der Wand ist ein ausgedruckter Snoopy-Kalender für 1969 gepinnt. Verstreut über den Boden werden einige Hüllen für mit Erdnußbutter gefüllte Käsestangen liegen (Die Sorte, die schon in der Bäckerei altbacken gemacht wird,damit sie im Verkaufsautomaten nicht schlecht wird).
Zuguterletzt befindet sich in der oberen linken Schreibtischschublade ein Hefter mit Flußdiagrammen, den der letzte Benutzer liegengelassen hat. Echte Programmierer schreiben Programme, keine Dokumentationen, das überläßt man den Wartungungsleuten. Der Echte Programmierer ist in der Lage 30, 40, sogar 50 Stunden an einem Stück zu arbeiten, unter schwerster Belastung. Genaugenommen mag er es sogar am liebsten so. Lange Antwortzeiten machen dem Echten Programmierer nichts aus, das macht es ihm möglich, zwischen zwei Compiler-Durchläufen ein bißchen Schlaf abzubekommen.
Wenn der Termindruck nicht groß genug ist für den Echten Programmierer, tendiert er dazu, die Herausforderung zu steigern, indem er sich in den ersten neun Wochen nur mit einigen unwichtigen, aber interessanten Nebenaspekten des Problems beschäftigt. Dann beendet er die Aufgabe in der letzten Woche in zwei oder drei 50 Stunden Marathons. Das beeindruckt nicht nur den Manager, sondern ist auch eine gute Ausrede, um die Dokumentation nicht machen zu müssen.
Ganz allgemein:

Im Hinblick auf die Zukunft sind manche Echte Programmierer besorgt, dass die jüngste Generation von Programmierern nicht dieselbe Weltanschauung hat wie ihre Ahnen. Viele von ihnen haben nie einen Computer mit einer Schalttafel gesehen. Kaum jemand, der heutzutage seinen Schulabschluß macht, kann noch Hexadezimal-Berechnungen ohne einen Taschenrechner machen. Die Schulabgänger von heute sind vor der Realität des Programmierens geschützt durch Source-Code-Debugger, Text-Editoren, die Klammern zählen und benutzerfreundliche Betriebssysteme. Und am allerschlimmsten, manche von diesen angeblichen Informatikern schaffen es, Abschlüsse zu machen, ohne jemals FORTRAN gelernt zu haben! Sind wir dazu verdammt, ein Gewerbe von UNIX- Hackern und PASCAL-Programmierern zu werden?

Aus meiner Erfahrung glaube ich sagen zu können, dass die Zukunft rosig aussieht für Echte Programmierer. Weder OS/370 noch FORTRAN zeigen irgendwelche Zeichen des Aussterbens, trotz der Anstrengungen der PASCAL- Programmierer. Sogar sehr vorsichtige Tricks, wie das Hinzufügen von Strukturierte - Programmierung - Elementen zu FORTRAN sind fehlgeschlagen. Oh sicher, einige Firmen haben FORTRAN 77-Compiler herausgebracht, aber jeder von ihnen hat eine Methode, sich selbst in einen FORTRAN 66 Compiler zurückzucodieren und DO LOOPS so zu codieren, wie es Gott gewünscht hat.

Sogar UNIX mag nicht so schlecht für Echte Programmierer sein, wie es einmal war. Die letzte Version von UNIX hat die Mächtigkeit eines Betriebssystems, das jedes Echten Programmierers wert ist. Es hat zwei verschiedene und genialerweise inkompatible Benutzer-Schnittstellen, einen geheimnisvollen und komplizierten Drucker-Treiber und virtuellen Speicher. Wenn man außer Acht läßt, das es strukturiert ist, kann ein Echter Programmierer sogar C-Programmierung schätzen lernen. Immerhin gibt es keine Typ-Überprüfung, Variablennamen sind 7 (10?) Zeichen lang und man hat einen Pointer-Datentyp dazugepackt. Das ist, als hätte man die besten Teile von FORTRAN und ASSEMBLER in einem, ganz abgesehen von den kreativen Möglichkeiten von #define.

Nein, die Zukunft ist überhaupt nicht schlecht. Warum hat schließlich in den letzten Jahren die Boulevard-Presse von der breiten Ausbeute an Computer-Junkies und Hackern berichtet, die Orte wie Stanfort oder das MIT gegen die richtige Welt eingetauscht haben. In diesen jungen Männern und Frauen lebt deutlich der Geist der Echten Programmierer weiter. Solange es schlecht definierte Ziele, bizarre Fehler und unrealistische Terminpläne gibt, solange wird es Echte Programmierer geben, die bereit sind einzuspringen und das Problem zu lösen und die Dokumentation für später aufzusparen.

Lang lebe FORTRAN!