Psycho-Test
Zitat: "Dieser Test sagt Ihnen vielleicht mehr über
Ihren Programmierstil als Sie es wünschen."
Dieser kurze Test kann Ihren Standort als Programmierer
feststellen:
Eine Variable I (Definition: PL/1-DEC FIXED (2,0);
COBOL-PIC 99 COMP-3) enthalte die Werte 1 oder 2. Erstellen Sie einen
Code, der den Wert von I aendert. Enthaelt I den Wert 1, so wird er in 2
geaendert.
1. IF I = '2' THEN I = 1 2. if i = 2 then i = 1;
ELSE I = 2; if i = 1 then i = 2;
3. IF I = 1 THEN GO TO 4. j = 2;
SKIP; if i = 2 then j = 1;
i = 1; i = j;
go to done;
skip: i = 2;
done:
5. DCL switch label; 6. dcl onetwo (2);
if i = 1 then switch one; fixed binary (31);
if i = 2 then switch two; initial (2,1);
go to switch; i = onetwo (i);
one: i = 2;
go to done;
two: i = 1;
done:
7. i = 3 - i 8. i = i - ((i/2)*2) + 1
9. if I = 2 10. if i = 1 then i = 2;
then do; else do;
i = 1; if i > 2 then put list
end ('i falsch, wird auf 1
else do; gesetzt');
i = 2; i = 1;
ende; end;
Auswertung:
- 1. Absolventen eines Programmierkurses
- Wahrscheinlich verstehen nur 10% der Absolventen
von Programmierlehrgängen den Unterschied zwischen 2 und '2'. Es
ist ein Geheimnis, wie man erfolgreich programmieren kann ohne ein so
grundsätzliches Prinzip zu verstehen.
- 2. Programmier-Instruktor
- Die Lösung ist ebenso falsch wie die
vorhergehende. Es ist fraglich, wieviele Instruktoren irgendwelche
bedeutenden Programme entworfen, codiert und getestet haben.
- 3. Erfahrener FORTRAN-Programmierer, der eben einen
PL/1-Kurs absolviert hat
- "Man kann einem alten Hund keine neue Tricks
zeigen." Die Lösung ergibt ein angemessenes Resultat; mehr
kann man dazu nicht sagen.
- 4. Assemblerprogrammierer, der den selben Kurs
besucht hat
- An sich ist die Lösung recht gut lesbar, aber
nicht gerade sehr zielgerichtet und effizient; wahrscheinlich ein
Resultat des PL/1-Trainings. Immerhin ist es bemerkenswert, daß
die Lösung keinen sich selbst modifizierenden Code enthält.
- 5. Systemanalytiker
- Diese Lösung beleuchtet eine Denkweise, in der
es die Pflicht eines Systemanalytikers ist, ein Programm in einem Maße
zu verkomplizieren, daß sogar ein guter Programmierer unfähig
aussieht.
- 6. Informatiker
- Wahrscheinlich die cleverste Lösung. Da sie
jedoch nicht erläutert wird, haben normale Sterbliche einige Verständnisschwierigkeiten.
- 7. Mathematiker
- Ähnlich wie die vorhergehende Lösung ist
diese auch ziemlich elegant, aber ohne zusätzliche Erklärung
nur schwer zu verstehen.
- 8. Auf Arbeitsplatz-Sicherung bedachter
Programmierer
- Dies ist eine sehr kunstvolle Lösung und natürlich
wird sie auch nicht erläutert. Sie funktioniert tatsächlich,
aber wie Lewis Carrol sagt: "Ich hätte dies sehr viel
komplizierter machen koennen, sagte die rote Königin ungeheuer
stolz."
- 9. Fan der strukturierten Programmierung
- Man könnte dies als billige Polemik gegen STP
bezeichnen. Zu viele diskutieren jedoch darüber, wieviele Spalten
man einrücken müßte, anstatt die Technik richtig
anzuwenden.
- 10. Guter Programmierer
- Haben Sie bemerkt, daß keine der anderen Lösungen
I daraufhin überprüft, ob I Werte außerhalb der
angegebenen Grenzen enthält? Dies ist sehr gefährlich,
trotzdem allgemein üblich. Unglücklicherweise helfen alle
Programmiertechniken, trickreiche oder elegante Lösungen nicht,
wenn I zu Beginn einen anderen Wert als 1 oder 2 enthält.