Lernhilfe für Programmieranfänger 20.05.2021, 16:29 Uhr

Ein Code-Editor, der Fragen stellt

Das Ideenpapier "An Inquisitive Code Editor for Addressing Novice Programmers' Misconceptions of Program Behavior" skizziert einen neugierigen Editor, der helfen soll, Bugs schon vor dem Programmstart zu beseitigen.
(Quelle: web.eecs.utk.edu)
Die Idee: Was wäre, wenn ein Code-Editor erkennen könnte, dass der Programmierer seinen gerade eingegebenen Code missversteht und der Editor deshalb gezielt nachfragt, um das Missverständnis auszuräumen, noch bevor der Code in einen Debug-Lauf geht. Der skizzierte Editor soll Programmieranfängern helfen korrekten Code zu schreiben und mögliche Fallstricke von Anfang an zu erkennen. Hier ein Beispiel:
Ein Schüler gibt den folgenden Codeschnipsel in den Editor ein.
antwort = 0 
while antwort != 'y' or antwort != 'n': 
    response = input("Bitte geben Sie (y)es oder (n)o ein. \n") 
Das Programm fordert den Benutzer auf, y für ja oder n für nein einzugeben, und wiederholt dies, bis eine gültige Eingabe erfolgt. Allerdings wird die Schleife wegen eines Fehlers nie enden. Das "or" sollte stattdessen ein "and" sein. Diese Art von Fehlern sind als semantische Fehler bekannt. Die Schleife lässt sich kompilieren, verhält sich aber nicht so, wie der Programmierer es erwartet.
Programmkorrektheit ist besonders für Anfänger eine Herausforderung, da sie eine andere Definition von Korrektheit haben als professionelle Programmierer. In einer Studie wurde berichtet, dass Studenten glauben, dass ihr Code korrekt ist, wenn es keine Compilerfehler mehr gibt. Aufgrund dieser fehlerhaften Definition von Korrektheit bleiben semantische Fehler bestehen und es dauert viel länger, sie zu beheben als Syntaxfehler. Tatsächlich kann es bei Anfängern 50-mal länger dauern, semantische Fehler zu beheben, wenn sie überhaupt jemals behoben werden. Letztendlich hat der Anfänger eine falsche Vorstellung davon, wie sich sein Programm verhalten wird, und es kostet ihn erhebliche Mühe, zu erkennen, dass er überhaupt eine falsche Vorstellung hat.
Der im Ideenpapier skizzierte neugierige Code-Editor arbeitet in vier Schritten:
  • Der Code-Editor erkennt potenziell problematischen Code mithilfe von Code-Smell-Detektoren, Programmanalyse und prädiktiven Modellen.
  • Der Editor stellt dem Programmierer eine Frage darüber, wie der Programmierer denkt, dass sich sein Code verhalten wird.
  • Weicht die Antwort von dem ab, wie sich das Programm tatsächlich verhält, kann das Tool versuchen, die falsche Vorstellung zu korrigieren und bei der Behebung des fehlerhaften Codes helfen.
  • Der Editor kann versuchen, zukünftige Fehleinschätzungen desselben Typs zu verhindern, indem er Testcode und Dokumentation generiert und zusammengefasste Berichte über häufige Probleme an den Ausbilder sendet.
Das Ideenpapier zum neugierigen Editor finden Sie hier. Umgesetzt ist das Projekt bislang nur als Prototyp der Initiatoren. Mehrere Doktoranden arbeiten daran, wie man potentiell problematischen Code identifiziert, welche Fragen gestellt werden sollten, welche Informationen in den Erklärungen enthalten sein sollten, und wie man falsch-positive Ergebnisse und Unterbrechungen minimiert. Außerdem wird untersucht, wie ein solches System für professionelle Programmierer angepasst werden könnte (zum Beispiel um sie dazu zu bringen, die komplexen Teile ihres Codes zu dokumentieren).


Das könnte Sie auch interessieren