Latest article: Exporter des données depuis Excel

De la classification des bugs

Billet semi-humoristique sur les différents types de bugs rencontrés dans un programme et leur classification

Tout comme les biologistes classent les êtres vivants, les développeurs classent aussi leurs bugs.

Aujourd’hui j’ai découvert certaines catégories de bugs aux noms amusants, et très révélateurs. Je vous propose une petite liste.

Heisenbug

Celui là est nommé d’après Heisenberg, un physicien célèbre. Pour ceux qui ne le connaissent pas, il est entre autre auteur du Principe d’incertitude en physique quantique.

Ce principe veut qu’on ne peut pas en physique quantique connaitre deux informations avec le même degré de précision et de certitude.

L’exemple le plus connu est la position et la vitesse. Il est impossible de connaitre précisément les deux, si je connais la position, j’ignore la vitesse, et vice-versa.

Ce principe se transpose avec beaucoup d’aisance à l’informatique. Ainsi l’Heisenbug à tendance à disparaitre lorsqu’on l’observe et qu’on tente de le résoudre. Par exemple, il arrive dans certains cas que l’utilisation d’un débuggueur fasse disparaitre le bug que l’on tente de résoudre. C’est notamment courant avec les bugs dûs aux variables non initialisés (puisque le débuggueur les initialise lui même).

Mandelbug

Cette fois c’est d’après Mandelbrot, grand spécialiste du hasard, de la loi des grands nombres et des fractales, qu’est nommé ce bug.

Mandelbrot a entre autre soutenu que les formes géométriques ressemblant au premier abord au hasard, sont en réalité dictés par la loi des grandes nombres, comme les arbres, les nuages, ou même les fractales.

Un Mandelbug est donc un bug qui est tellement complexe qu’il semble dû au hasard, aléatoire et chaotique, et par conséquent très difficile à analyser et à résoudre.

Schrödinbug

Schrödinger est surement le spécialiste de la physique quantique le plus connu. Sans doute avez vous entendu parler de son chat virtuel, utilisé pour démontrer un des grands principes de la physique quantique.

Résumer l’expérience du Chat de Schrödinger serait long et surement au dessus de mes compétences en physique, je laisse donc Wikipedia le faire à ma place : page Wikipedia sur le Chat de Schrödinger.

Cette expérience veut démontrer que tant qu’on observe pas un état, ce dernier n’est pas déterminé. Dans la boite, le chat n’est ni mort ni vivant jusqu’à ce que l’observateur ouvre le couvercle. L’observateur est malgré tout acteur.

C’est la même chose pour le Schrödinbug qui décrit un bug qui ne se manifeste pas tant qu’il n’a pas été découvert dans le code source. C’est le genre de bug qui nous pousse à nous demander : “mais comment ça a pu marcher tout ce temps ?”.

Et en effet, une fois que le bug est découvert, ça ne marche plus. Même si en apparence rien n’a changé.

C’est sans doute le bug le plus impressionnant car totalement irrationnel. Ce qui pousse à croire que c’est également un Mandelbug, dont les causes sont incompréhensibles de par leur complexité.

Je trouve ces trois catégories de bugs particulièrement amusantes et pertinentes, après tout, qui n’a jamais eu affaire avec l’un de ces bugs ?

Mentions

    Discussion

    1. Apo Strof

      October 16, 2008
      9:28 pm

      Qui n’a jamais eu affaire à, au moins, ces trois bugs (sans forcément pouvoir les nommer) ?

      Personnelement, le Mandelbug est surement un des plus courant.. Encore que j’hésite avec le Heisenbug.. Quand au Schrödinbug, ca m’est arrivé plus rarement. 😀

      Reply

    2. Aranoth

      October 16, 2008
      10:06 pm

      Le Mandelbug est sans aucun doute le plus fréquent, il est lié à tellement de facteurs qu’on se demande si c’est vraiment un bug ou si c’est pas plutôt l’alignement de Mars et Neptune qui influence le programme…

      Le Heisenbug je dois avouer l’avoir rarement connu. Déjà je n’utilise pas de débuggueur, ce qui réduit fortement les risques : les conditions de débuggage et d’exécution normale sont les même. Donc le bug est reproduit.
      Par contre ça arrive que ce soit dû à des facteurs extérieur, c’est assez déstabilisant de se lancer dans un débuggage pour se dire “mais… mais ça marche en fait ?!”, alors que le bug est bel et bien là, mais muet.

      Quand au Shrödinbug, c’est beaucoup plus rare, c’est sur, mais ça m’est arrivé quand même pas mal de fois.
      C’est toujours synonyme d’une belle prise de tête en perspective, pour comprendre pourquoi ça marchait avant, et pourquoi ça ne marche plus maintenant, alors que rien d’autre n’a changé. En fait il y a toujours quelque chose, mais c’est là où on l’attend le moins.
      En tout cas c’est assez impressionnant car totalement incompréhensible de prime abord.

      Reply

    Reply