Was ist Rubber Duck Debugging?
Es gibt nur sehr wenige Dinge, die sich schlimmer anfühlen, als Ihr Programm zum x-ten Mal auszuführen, nur um zu erfahren, dass es immer noch nicht startet. Selbst die besten Programmierer wissen, wie es ist.
Sie starren auf einen Codeblock, auf den Sie stundenlang gemeißelt haben. Diese Syntax sieht korrekt aus, Ihr Abstand ist konsistent, Sie haben Ihre Variablen entsprechend benannt … also was gibt es?
Möglicherweise benötigen Sie eine neue Methode zum Debuggen. Und Sie wären überrascht, wenn Sie feststellen würden, dass eine der bewährten Methoden seltsamerweise ein Spielzeug der Badewannensorte umfasst.
Was ist Rubber Duck Debugging?
Dies lässt sich am besten durch eine kleine Geschichte erklären. Stellen Sie sich Folgendes vor: Sie sind Programmierer und arbeiten mit einem Team von Menschen zusammen. Sie erledigen Ihre tägliche Arbeit, codieren alles, was Sie zum Codieren benötigen, und stoßen dann auf ein Problem. Aus irgendeinem Grund funktioniert das Programm nicht wie es sollte.
Also beschließen Sie, den Flur entlang zu gehen und Ihrem Kollegen zu sagen, dass Sie mit einem hartnäckigen Käfer zu tun haben. Sie erklären sich bereit, Ihnen zu helfen und Sie zu fragen, was genau falsch ist. Sie erklären das Problem im Detail und stellen fest, dass Sie in der Mitte Ihrer Erklärung eine Lösung gefunden haben.
Dies passiert in der realen Welt tatsächlich öfter als Sie denken. Sie fragen sich vielleicht, was das alles mit Gummienten zu tun hat. Nun, Sie hätten sich einem gelben Plastikkumpel (oder einem leblosen Gegenstand) anvertrauen können, anstatt jemand anderen zu stören.
Der beste Teil? Sie können sich trösten, wenn Sie wissen, dass Ihre Ente Sie nicht für Ihr langatmiges Spiel beurteilen wird. Wenn Sie häufig debuggen müssen, lesen Sie diese Liste der häufigsten Programmier- und Codierungsfehler .
Woher kommt der Begriff "Rubber Duck Debugging"?
"Rubber Duck Debugging" ist ein Verweis auf eine Geschichte in einem Programmierbuch mit dem Titel The Pragmatic Programmer: Vom Gesellen zum Meister von Andrew Hunt und David Thomas. Darin trug ein Programmierer eine Gummiente mit sich herum und debuggte ihren Code, indem er sich zwang, ihn der Ente Zeile für Zeile zu erklären.
Warum funktioniert das Debuggen von Gummienten?
Wenn Sie beschreiben, was der Code tun soll, beobachten Sie häufig, was der Code tatsächlich tut, und finden anschließend heraus, wo die Dinge nicht übereinstimmen. Deshalb heißt es, dass das Unterrichten eines Fachs eine der besten Möglichkeiten ist, es zu lernen. Sie müssen Probleme aus verschiedenen Perspektiven bewerten, um anderen das Verständnis zu erleichtern, was Ihnen das Verständnis erleichtert.
Der wichtigste Teil bei der Verwendung dieser Methode ist Ihr Engagement dafür. Ja, es mag sehr albern sein, ein so gründliches einseitiges Gespräch zu führen. Aber so viel Mühe darauf zu verwenden, eine andere Person (real, imaginär oder aus Gummi) durch Ihr Problem zu führen, ist genau das, was das Problem scheinbar von selbst lösen lässt.
Diese Methode funktioniert so gut, weil die meisten Fehler im Code durch das Fehlen expliziter Informationen und Anweisungen für die Software verursacht werden. Computer können vage Anweisungen nicht verstehen. Wenn Sie davon ausgehen, dass Ihre Ente überhaupt nichts über Ihr Problem weiß, müssen Sie alle Details beschreiben. Es stellt sich heraus, dass Sie nicht alles so gut verstanden haben, wie Sie dachten.
Wie verwende ich die Gummiente-Methode?
Es gibt nur drei einfache Schritte, um sich zu ducken:
- Angenommen, Ihre Ente weiß absolut nichts über Ihr Problem. Geben Sie das Problem an, wie die Dinge im Moment sitzen und was Sie stattdessen erreichen möchten.
- Erklären Sie den Fluss der Dinge. Was ist passiert? Gehen Sie jeden einzelnen Schritt des Prozesses durch, ohne ein einziges Detail zu verpassen.
- Kommen Sie zu einer Offenbarung.
Anwendung der Methode auf ein reales Problem
Diese praktische Methode wurde von Programmierern geprägt, kann aber definitiv auf Probleme außerhalb der Programmierung angewendet werden. Wie? Lassen Sie uns hier ein weiteres imaginäres Szenario erstellen: Sie haben gerade einen neuen Kühlschrank für Ihr Haus gekauft.
Sie erhalten den neuen Kühlschrank zu Ihnen nach Hause und stellen ihn in die Küche. Sie übertragen alle Waren aus Ihrem alten Kühlschrank in den neuen und entfernen den ersteren. Der Tag endet und du gehst ins Bett. Wenn Sie am nächsten Morgen aufwachen, öffnen Sie die Kühlschranktür und stellen fest, dass all Ihr Essen über Nacht schlecht geworden ist!
Sie sind natürlich wütend und beginnen, sich an ein Familienmitglied zu wenden. "Wie konnte das passieren? Ich habe dafür bezahlt, es zurückgebracht und alles in diesem Ding bewegt, das, wenn es mit Strom versorgt wird, eine unglaubliche Temperaturregelung haben soll -"
Oh. Du hast vergessen, das verdammte Ding anzuschließen.
Das ist ein bisschen peinlich, aber zumindest kennen Sie das Problem jetzt. Das liegt daran, dass Sie sich die Zeit genommen haben, von Anfang bis Ende über die gesamte Situation nachzudenken. Manchmal, wenn Sie so tief und mit einem Prozess vertraut sind, bemerken Sie nicht, dass die offensichtlichsten Probleme direkt an Ihnen vorbeiziehen.
Anwenden der Methode auf Code
Zum Beispiel werden wir einige Beispiele für Python-Code durchgehen. Wie wir jedoch gezeigt haben, können Sie mit Ihrer zuverlässigen Gummiente alle möglichen Probleme lösen. Die Methode kann auf jede Programmiersprache angewendet werden, in der Sie gerade arbeiten.
Wir wollen die Zahlen eins bis fünf drucken. Also geben Sie den gesamten Code ein:
for x in range(5):
print(x, end=" ")
Output: 0 1 2 3 4
Huh. Das ist komisch. Sie haben den Compiler gebeten, einen Bereich von fünf Zahlen zu drucken. Was ist das Problem hier? Lassen Sie uns alle Möglichkeiten durchgehen. Ihre Syntax ist korrekt, da der Code fehlerfrei ausgeführt wurde. Es ist nicht so, dass Ihnen Argumente fehlen, da die Argumente start und step optional sind …
Abwarten. Die Bereichsfunktion gibt eine Folge von Zahlen zurück, erhöht sich (standardmäßig) um eins und stoppt vor einer von Ihnen festgelegten Obergrenze. Aber wo fangen die Bereiche an? In Python beginnen Bereiche bei Null, sofern nicht anders angegeben.
Jetzt weißt du, dass du schreiben sollst.
for x in range(5):
print(x+1, end=" ")
Output: 1 2 3 4 5
Ihr unwahrscheinlicher Programmierfreund
Gummienten können Ihnen zwar nicht nur sagen, wo genau Sie in Ihrem Code einen Fehler gemacht haben, aber sie haben Programmierern überall geholfen. Wenn Sie das nächste Mal beim Programmieren auf einen Fehler stoßen, versuchen Sie, eine Gummiente (oder ein anderes Objekt oder eine andere Person, die als eine Person fungiert) zu ergreifen, und prüfen Sie, ob diese Methode zur Problemlösung für Sie funktioniert.
Wer hätte gedacht, dass Gummienten mehr als nur ein Badespielzeug sein könnten?