Was ist Rubber-Duck-Debugging? (2024)

Es gibt kaum etwas Schlimmeres, als ein Programm zum x-ten Mal auszuführen und dann festzustellen, dass es immer noch nicht startet. Selbst die besten Programmierer wissen, wie das ist.

Sie starren auf einen Codeblock, an dem Sie stundenlang herumgebastelt haben. Die Syntax sieht korrekt aus, Ihre Abstände sind konsistent, Sie haben Ihre Variablen angemessen benannt ... was ist also los?

Vielleicht brauchen 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 in der Badewanne beinhaltet.

Was ist Rubber-Duck-Debugging?

Dies lässt sich am besten anhand einer kleinen Geschichte erklären. Stellen Sie sich Folgendes vor: Sie sind ein Programmierer, der mit einem Team von Leuten zusammenarbeitet. Sie gehen Ihrer täglichen Arbeit nach, programmieren, was auch immer Sie programmieren müssen, und dann stoßen Sie auf ein Problem. Aus irgendeinem Grund funktioniert das Programm nicht so, wie es sollte.

Sie beschließen also, den Flur entlangzugehen und Ihrem Kollegen zu sagen, dass Sie es mit einem hartnäckigen Virus zu tun haben. Er erklärt sich bereit, Ihnen zu helfen und fragt Sie, was genau los ist. Sie beginnen, das Problem im Detail zu erklären und stellen fest, dass Sie mitten in Ihrer Erklärung auf eine Lösung gestoßen sind.

Das passiert in der realen Welt tatsächlich häufiger, 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 beliebigen unbelebten Gegenstand) anvertrauen können, anstatt jemand anderen zu stören.

Und das Beste daran? Sie können beruhigt sein, denn Ihre Ente wird Sie nicht für Ihre langatmigen Ausführungen verurteilen. Wenn Sie häufig debuggen müssen, lesen Sie diesListe der häufigsten Programmier- und Codierfehler.

Woher kommt der Begriff „Rubber Duck Debugging“?

„Rubber-Duck-Debugging“ ist eine Anspielung auf eine Geschichte aus einem Programmierbuch mit dem Titel „The Pragmatic Programmer: From Journeyman to Master“ von Andrew Hunt und David Thomas. Darin trug ein Programmierer eine Gummiente mit sich herum und debuggte seinen Code, indem er sich zwang, ihn der Ente Zeile für Zeile zu erklären.

Warum funktioniert Rubber Duck-Debugging?

Wenn Sie beschreiben, was der Code tun soll, beobachten Sie oft, was der Code tatsächlich tut, und finden dann heraus, wo die Dinge nicht zusammenpassen. 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 jemand anderem das Verständnis zu erleichtern, was wiederum Ihrem Verständnis hilft.

Das Wichtigste bei der Anwendung dieser Methode ist Ihr Engagement. Ja, es mag sich extrem albern anfühlen, ein so ausführliches, einseitiges Gespräch zu führen. Aber wenn Sie so viel Mühe darauf verwenden, einer anderen Person (real, imaginär oder aus Gummi) Ihr Problem zu erklären, ist das genau das, was das Problem scheinbar von selbst lösen wird.

Diese Methode funktioniert deshalb so gut, weil die meisten Fehler im Code dadurch verursacht werden, dass der Software keine expliziten Informationen und Anweisungen gegeben werden. Computer können vage Anweisungen nicht verstehen. Wenn Sie davon ausgehen, dass Ihre Ente überhaupt nichts über Ihr Problem weiß, sind Sie gezwungen, alle Einzelheiten zu beschreiben. Es stellt sich heraus, dass Sie nicht alles so gut verstanden haben, wie Sie dachten.

Wie verwende ich die Gummientenmethode?

Zum Rubber Ducking sind nur drei einfache Schritte nötig:

  1. Gehen Sie davon aus, dass Ihre Ente absolut nichts über Ihr Problem weiß. Beschreiben Sie das Problem, wie die Dinge im Moment stehen und was Sie stattdessen erreichen möchten.
  2. Erklären Sie den Ablauf. Was ist passiert? Gehen Sie jeden einzelnen Schritt des Prozesses durch, ohne ein einziges Detail zu übersehen.
  3. Erreichen Sie eine Offenbarung.

Anwendung der Methode auf ein reales Problem

Diese praktische Methode wurde von Programmierern entwickelt, kann aber durchaus auch auf andere Probleme als die Programmierung angewendet werden. Wie? Lassen Sie uns ein weiteres fiktives Szenario erstellen: Sie haben gerade einen neuen Kühlschrank für Ihr Haus gekauft.

Sie lassen sich den neuen Kühlschrank nach Hause liefern und stellen ihn an seinen Platz in der Küche. Sie räumen alle Lebensmittel aus Ihrem alten Kühlschrank in den neuen und entsorgen den alten. Der Tag geht zu Ende und Sie gehen ins Bett. Wenn Sie am nächsten Morgen aufwachen, öffnen Sie die Kühlschranktür und stellen fest, dass alle Ihre Lebensmittel über Nacht verdorben sind!

Natürlich bist du wütend und fängst an, deinem Ärger bei einem Familienmitglied Luft zu machen. „Wie konnte das passieren? Ich habe dafür bezahlt, es zurückgebracht und alles in diesem Ding, das, wenn es eingeschaltet ist, eine unglaubliche Temperaturregelung haben soll, umgestellt –“

Oh. Du hast vergessen, das verdammte Ding anzuschließen.

Das ist ein bisschen peinlich, aber zumindest kennen Sie jetzt das Problem. Das liegt daran, dass Sie sich die Zeit genommen haben, die gesamte Situation von Anfang bis Ende zu durchdenken. Manchmal, wenn Sie so tief in einen Prozess eingestiegen sind und ihn so gut kennen, bemerken Sie nicht, dass die offensichtlichsten Probleme einfach an Ihnen vorbeischleichen.

Anwenden der Methode auf Code

Als Beispiel werden wir einige Python-Beispielcodes durchgehen. Wie wir jedoch gezeigt haben, können Sie Ihre bewährte Gummiente verwenden, um alle möglichen Probleme zu lösen. Die Methode kann auf jede Programmiersprache angewendet werden, mit der Sie gerade arbeiten.

Wir möchten die Zahlen eins bis fünf ausdrucken. Geben Sie also den gesamten Code ein:

for x in range(5):
print(x, end=" ")

Output: 01234

Hm. Das ist komisch. Sie haben den Compiler aufgefordert, einen Bereich von fünf Zahlen auszudrucken. Was ist hier das Problem? Lassen Sie uns alle Möglichkeiten durchgehen. Ihre Syntax ist korrekt, da der Code ohne Fehler ausgeführt wurde. Es ist nicht so, dass Ihnen Argumente fehlen, denn die Argumente „Start“ und „Schritt“ sind optional …

Moment mal. DieReichweiteDie Funktion gibt eine Zahlenfolge zurück, erhöht sich um eins (standardmäßig) und stoppt vor einer von Ihnen festgelegten Obergrenze. Aber wo beginnen Bereiche? In Python beginnen Bereiche bei Null, sofern nicht anders angegeben.

Jetzt wissen Sie, dass Sie schreiben sollen.

for x in range(5):
print(x+1, end=" ")

Output: 12345

Ihr ungewöhnlicher Programmierkumpel

Gummienten können Ihnen zwar nicht einfach sagen, wo genau Sie einen Fehler in Ihrem Code gemacht haben, aber sie haben Programmierern überall geholfen. Wenn Sie beim Programmieren das nächste Mal auf einen Fehler stoßen, versuchen Sie, eine Gummiente (oder einen anderen Gegenstand oder eine Person, die als solche fungiert) zu schnappen und sehen Sie, ob diese Problemlösungsmethode für Sie funktioniert.

Wer hätte gedacht, dass Gummienten mehr als nur ein Badespielzeug sein können?

Was ist Rubber-Duck-Debugging? (2024)

References

Top Articles
Latest Posts
Article information

Author: Duane Harber

Last Updated:

Views: 6477

Rating: 4 / 5 (71 voted)

Reviews: 94% of readers found this page helpful

Author information

Name: Duane Harber

Birthday: 1999-10-17

Address: Apt. 404 9899 Magnolia Roads, Port Royceville, ID 78186

Phone: +186911129794335

Job: Human Hospitality Planner

Hobby: Listening to music, Orienteering, Knapping, Dance, Mountain biking, Fishing, Pottery

Introduction: My name is Duane Harber, I am a modern, clever, handsome, fair, agreeable, inexpensive, beautiful person who loves writing and wants to share my knowledge and understanding with you.