Qu’est-ce que le débogage Rubber Duck?
Il y a très peu de choses qui semblent pires que d'exécuter votre programme pour la énième fois pour apprendre qu'il ne démarre toujours pas. Même les meilleurs programmeurs savent à quoi cela ressemble.
Vous regardez un bloc de code que vous ciselez depuis des heures. Cette syntaxe semble correcte, votre espacement est cohérent, vous avez nommé vos variables de manière appropriée … alors qu'est-ce que cela donne?
Peut-être avez-vous besoin d'une nouvelle méthode pour déboguer. Et vous seriez surpris de constater que l'une des façons éprouvées de s'y prendre, curieusement, implique un jouet de la variété de la baignoire.
Qu'est-ce que le débogage Rubber Duck?
Ceci est mieux expliqué par une petite histoire. Imaginez ceci: vous êtes un programmeur travaillant avec une équipe de personnes. Vous faites votre travail quotidien, codez tout ce dont vous avez besoin pour coder, puis vous rencontrez un problème. Pour une raison quelconque, le programme ne fonctionne pas comme il se doit.
Vous décidez donc de marcher dans le couloir et de dire à votre collègue que vous avez affaire à un insecte tenace. Ils acceptent de vous aider et de vous demander ce qui ne va pas exactement. Vous commencez à expliquer le problème en détail et vous constatez qu'au milieu de votre explication, vous avez trouvé une solution.
Cela se produit en fait plus souvent que vous ne le pensez dans le monde réel. Vous vous demandez peut-être ce que tout cela a à voir avec les canards en caoutchouc. Eh bien, vous auriez pu vous confier à un copain en plastique jaune (ou à n'importe quel objet inanimé), au lieu de déranger quelqu'un d'autre.
La meilleure partie? Vous pouvez trouver du réconfort en sachant que votre canard ne vous jugera pas pour votre long discours. Si vous avez besoin de déboguer souvent, consultez cette liste des erreurs de programmation et de codage les plus courantes .
D'où vient le terme «débogage de canard en caoutchouc»?
"Débogage de canard en caoutchouc" est une référence à une histoire dans un livre de programmation intitulé The Pragmatic Programmer: From Journeyman to Master par Andrew Hunt et David Thomas. Dans ce document, un programmeur transportait un canard en caoutchouc et déboguait son code en se forçant à l'expliquer, ligne par ligne, au canard.
Pourquoi le débogage de Rubber Duck fonctionne-t-il?
Souvent, en décrivant ce que le code est censé faire, vous observez ce que fait réellement le code, et par la suite, vous trouvez où les choses ne s'alignent pas. C'est pourquoi on dit que l'enseignement d'une matière est l'un des meilleurs moyens de l'apprendre. Vous devez évaluer les problèmes sous différents angles pour aider quelqu'un d'autre à comprendre, ce qui vous aide à comprendre.
La partie la plus importante de l'utilisation de cette méthode est votre engagement envers elle. Oui, il peut sembler extrêmement ridicule d'avoir une conversation unilatérale aussi approfondie. Mais déployer tant d'efforts pour faire marcher une autre personne (réelle, imaginaire ou faite de caoutchouc) à travers votre problème est exactement ce qui le fera apparemment se résoudre.
Cette méthode fonctionne si bien car la plupart des bogues dans le code sont causés par un manque de fourniture d'informations et d'instructions explicites au logiciel. Les ordinateurs ne peuvent pas comprendre des instructions vagues. En supposant que votre canard ne sait rien du tout sur votre problème, vous êtes obligé de décrire tous les détails. Il s'avère que vous n'avez pas tout compris aussi bien que vous le pensiez.
Comment utiliser la méthode du canard en caoutchouc?
Il n'y a que trois étapes simples pour esquiver le caoutchouc:
- Supposez que votre canard ne sache absolument rien de votre problème. Énoncez le problème, comment les choses se passent en ce moment et ce que vous essayez d'accomplir à la place.
- Expliquez le flux des choses. Qu'est-il arrivé? Passez en revue chaque étape du processus sans manquer un seul détail.
- Arrivez à une révélation.
Appliquer la méthode à un problème de la vie réelle
Cette méthode pratique a été inventée par les programmeurs, mais elle peut certainement être appliquée à des problèmes en dehors de la programmation. Comment? Ici, construisons un autre scénario imaginaire: vous venez d'acheter un nouveau réfrigérateur pour votre maison.
Vous recevez le nouveau réfrigérateur livré à votre domicile et le mettez à sa place dans la cuisine. Vous transférez toutes les marchandises de votre ancien réfrigérateur dans le nouveau et vous débarrassez de l'ancien. La journée se termine et vous vous couchez. Lorsque vous vous réveillez le lendemain matin, vous ouvrez la porte du réfrigérateur pour découvrir que toute votre nourriture a mal tourné du jour au lendemain!
Vous êtes furieux, bien sûr, et vous commencez à vous défouler vers un membre de votre famille. "Comment cela a-t-il pu arriver? Je l'ai payé, je l'ai ramené et j'ai tout déplacé à l'intérieur de cette chose qui, lorsqu'elle est alimentée, est censée avoir un contrôle de température incroyable-"
Oh. Vous avez oublié de brancher ce sacré truc.
C'est un peu embarrassant, mais au moins vous connaissez le problème maintenant. C'est parce que vous avez pris le temps de réfléchir à l'ensemble de la situation du début à la fin. Parfois, lorsque vous êtes si profond et familier avec un processus, vous ne remarquez pas les problèmes les plus évidents qui vous échappent.
Application de la méthode au code
Par exemple, nous allons passer en revue un exemple de code Python. Comme nous l'avons démontré, vous pouvez utiliser votre fidèle canard en caoutchouc pour résoudre toutes sortes de problèmes. La méthode peut être appliquée à n'importe quel langage de programmation dans lequel vous travaillez.
Nous voulons imprimer les nombres un à cinq. Alors, allez-y et tapez tout ce code:
for x in range(5):
print(x, end=" ")
Output: 0 1 2 3 4
Huh. C'est bizarre. Vous avez demandé au compilateur d'imprimer une plage de cinq nombres. Quel est le problème ici? Passons en revue toutes les possibilités. Votre syntaxe est correcte car le code s'est exécuté sans erreur. Ce n'est pas qu'il vous manque des arguments, car les arguments de début et d'étape sont facultatifs …
Attendre. La fonction de plage renvoie une séquence de nombres, incrémentée de un (par défaut) et s'arrête avant une limite supérieure que vous définissez. Mais où commencent les gammes? En Python, les plages commencent à zéro sauf indication contraire.
Maintenant, vous savez que vous êtes censé écrire.
for x in range(5):
print(x+1, end=" ")
Output: 1 2 3 4 5
Votre copain de programmation improbable
Bien qu'ils ne soient pas en mesure de vous dire exactement où vous vous êtes trompé dans votre code, les canards en caoutchouc ont aidé les programmeurs du monde entier. La prochaine fois que vous rencontrez un bogue lors de la programmation, essayez de saisir un canard en caoutchouc (ou un autre objet ou une personne pour agir en tant que tel) et voyez si cette méthode de résolution de problèmes fonctionne pour vous.
Qui aurait pensé que les canards en caoutchouc pouvaient être plus qu'un simple jouet de bain?