Passer au contenu principal

Qu’est-ce qu’un bug ?

Le premier bug informatique a eu lieu en 1947. A cette époque, Mme Hopper s’attend à ce que l’ordinateur se comporte d’une certaine manière… et cela ne fonctionne pas ! Celle-ci est bien désappointée. Jusque là, l’ordinateur s’est comporté de manière toujours fiable et a toujours fait ce qu’on lui demandait. Après avoir retourné le problème dans tous les sens, et ne voyant pas d’issue, elle décide d’ouvrir le capot de la machine. Stupeur ! Dans les méandres des composants, un insecte, en anglais bug, s’est glissé et, frit par la tension électrique, a créé un court-circuit là où il ne fallait pas. Ce qui explique le comportement étrange de la machine.

En réalité, le mot était déjà utilisé avant cela, mais l’anecdote est croustillante !

Le mot désigne ce qui deviendra le plus grand fléau de l’informatique : une situation où ça devrait marcher, mais ça marche pas. Il est par essence difficile de comprendre d’où vient un bug, car si on le savait, alors ça ne serait pas un bug. Une solution courante dans le milieu informatique est de jeter l’ordinateur par la fenêtre afin de nier le problème.

Un bug célèbre concerne un jeu vidéo bien connu : le premier pac-man. Dans celui-ci, il n’est pas possible d’atteindre le niveau 257, quand bien même vous seriez très fort. En effet, dans la mémoire, le numéro de niveau est stocké dans un octet, c’est-à-dire une suite de 8 chiffres binaires. Au premier niveau, l’octet est égal à 0000 0000. Lorsqu’on gagne le premier niveau, on augmente, à partir de la droite, le compteur : 0000 0001. Lorsque l’on gagne le deuxième niveau, il n’est pas possible d’augmenter le dernier bit de l’octet, celui à droite, car il est déjà égal à 1 et que nous sommes en binaire. À la place, on augmente le bit à sa gauche, et on remet celui-ci à zéro. Nous sommes alors à 0000 0010. Mais lorsque l’on est au niveau 256, l’octet est maintenant égal à 1111 1111. Or, lorsque que l’on gagne le niveau, c’est bel et bien le bit à gauche de l’octet qui sera augmenté. Or celui-ci est hors du score du niveau, et utilisé pour tout-à-fait autre chose… qui ne voudrait pas qu’il change ! Mais l’algorithme en a décidé autrement et fout le bazar dans le programme : le jeu bugue...