Beim Programmieren kann man viele schöne Erfahrungen machen, zum Beispiel mit Fehlern. Fehler sind dabei nämlich etwas Alltägliches. Anders als beim Fehler im Deutschaufsatz merkt man aber gleich, dass etwas falsch ist, und das ganz ohne den Hinweis eines Lehrers: Der Computer weigert sich zum Beispiel, einen Programmtext zu akzeptieren, weil man irgendeinen syntaktischen (=grammatischen) Fehler gemacht hat. Den muss man dann suchen und verbessern, sonst geht es nicht weiter. Das halte ich für eine lehrreiche Erfahrung.
Noch spannender sind die semantischen Fehler: Das Programm läuft zwar, aber es tut einfach nicht das, was es soll. Das ärgert einen. Die unmittelbare Reaktion ist: der Computer hat einen Fehler gemacht, Tatsächlich muss man aber akzeptieren, dass – in den in der Schule auftretenden Fällen jedenfalls – das Programm genau das macht, was man ihm gesagt hat. Nur hat man ihm einfach das Falsche gesagt; es ist ein Fehler des Programmierers und nicht des Computers.
Erst neulich: Da war so eine Stelle, eingebettet in viele ähnliche Stellen, da hieß es quasi
wenn (a<0 oder b>0) dann:
tue Folgendes
Das Programm hat jenes eher komplizierte Folgende aber nicht. Erster Schritt: Überprüfen, ob die beiden Bedingungen tatsächlich erfüllt sind. „Doch, sind sie,“ versicherte der Schüler. „Kann gar nicht anders sein. Das muss so sein, weil sonst hätte ja gar nicht…“ Der Erklärung habe ich gar nicht zugehört. Warum das logisch gar nicht sein kann, dass die Bedingungen nicht erfüllt sind, ist mir egal, solange sich einfach überprüfen lässt, welchen Wert a und b zu diesem Zeitpunkt im Programmablauf haben, also in welchem Zustand sich das Programm zu diesem Zeitpunkt befinden. Manche Entwicklungsumgebungen bringen dazu ein Debugger genanntes Werkzeug mit, aber man kann sich auch einfach den Wert vona und b ausdrucken lassen, kurz bevor sie abgefragt werden.
Und was nicht sein konnte, war dann doch so. Jetzt muss man weiter suchen, wieso a oder b den Wert haben, den sie nicht haben sollen. Hypothesen aufstellen, überprüfen, ausbessern.
Schreibe einen Kommentar