Labels

FizzBuzz (2) PHP (2) Quizzler (1)

Dienstag, 16. November 2010

Erste Kritik an FizzBuzz

Dass einige Bewerber die FizzBuzz-Aufgabe nicht lösen konnten, soll ab jetzt nicht weiter stören. Die Diskussion um Blödheit und Nichtblödheit von Absolventen überlasse ich liebend gern Spiegel-, Zeit- und Heise-Online.

Ab jetzt wird mit FizzBuzz gespielt! Fingerübungen für Programmierer! Wir Programmierer sind Spielkinder!

Mit der ersten Variante - ich gehe das nochmal durch - kommt man vielleicht durch ein Bewerbungsgespräch, aber an der Front hat so ein Code nichts zu suchen. Sowas kann man als Programmierer einfach nicht stehen lassen. Das Berufsethos fängt dann sonst zum Randalieren an.
$i=1;
while ($i<=100) {
So, die Schleife ist hier quasi in Stein gemeißelt. Sowas geht gar nicht. Warum soll sich ein Programmierer nicht für die FizzBuzz-Werte zwischen 306 und 983 interessieren dürfen? Das muss ich ändern!
$antwort = '';
$antwort.= (istTeilervon(3,$i)?'Fizz':'');
$antwort.= (istTeilervon(5,$i)?'Buzz':'');

Hier sehe ich gleich zwei Probleme:
- zum einen sind die Teiler auf drei und fünf festgelegt; warum soll das nicht auch mit vier und sieben funktionieren?
- zum anderen sind die Zahlen drei und fünf an die Worte Fizz und Buzz gekettet; das kann ich so auch nicht gebrauchen
Und, hey, warum eigentlich nur zwei Zahlen? Warum macht man nicht ein Fizz, Buzz, Tozz mit drei Zahlen? Oder ein Wulli, Rulli, Tulli, Zulli und Pulli mit fünf Teilern?

echo (empty($antwort)?$i:$antwort).' ';

Das ist besonders schön! PHP wurde für die Webentwicklung erfunden, aber dieses Skript kann man nicht in einen Webserver einbinden. Naja, man kann schon, aber es macht keinen Sinn. Der Webdesigner hat keinen Zugriff auf die Daten und kann sie so nicht per CSS (formatieren|verhübschen|verhunzen).
function istTeilervon($teiler, $cand) {
return ($cand % $teiler) == 0;
}
Im Bewerbungsprogramm werden die Parameter $cand und $teiler fest im Code verankert. Es kann also zu keinen Bereichsüberläufen oder Exceptions kommen. In der Realität müssen die Parameter aber abgesichert werden. Wenn $teiler gleich Null ist, dann steigt neben der Mathematik eben auch die PHP-Engine aus.

Es ist ja nicht so, dass die Welt händeringend auf ein korrektes FizzBuzz-Programm wartet. Aber der Programmierer, der Technokrat, das Berufsethos und der Blogger in mir sagen: "machs trotzdem"

Derart überstimmt werde ich also in den Folgeposts aus dem simplen FizzBuzz eine PHP-Library machen. Es geht bald weiter!

Keine Kommentare:

Kommentar veröffentlichen