Table des Matières

Sujet précédent

2. Apprentissage guidé par des tâches

Sujet suivant

4. Collection de jetons

Cette page

3. Fichus bogues!

Personne n’aime avoir à discuter au sujet des bogues en informatique. Mais, malheureusement, vous devez en savoir davantage à leur sujet et, surtout, apprendre comment vous en débarrasser.

Cette leçon est un peu plus longue que les précédentes, mais je vous encourage à lire le tout au moins une fois.

3.1. Qu’est-ce qu’un bogue?

L’origine du mot bogue, adapté de l’anglais bug qui signifie insecte, est souvent attribué à un incident où un papillon de nuit a été trouvé à l’intérieur de l’ordinateur Mark II de l’Université Harvard. Cet insecte avait été trouvé par les membres d’une équipe menée par l’illustre informaticienne, mathématicienne et jeune officier naval Grace Murray Hopper, qui inventa par la suite le concept de compilateur de langages informatiques. Madame Grace Hopper, Ph.D., a également atteint le titre d’amiral (Rear Admiral) dans la marine américaine.

Ce papillon a été préservé, collé dans le journal de bord de Madame Hopper, tel qu’illustré ci-dessous. Fait intéressant, on note une mention qui dit “First actual case of bug being found.” qu’on pourrait traduire par Premier cas actuel d’un bogue/insecte trouvé.

image0

Image adaptée de l’archive publique U.S. Naval Historical Center

En fait, la première utilisation du mot anglais bug dans un contexte technologique est attribuée à l’inventeur Thomas Edison. Selon le dictionnaire Oxford, le texte suivant aurait été publié le 11 mars 1889 dans le journal Pall Mall Gazette:

Mr. Edison, I was informed, had been up the two previous nights discovering ‘a bug’ in his phonograph - an expression for solving a difficulty, and implying that some imaginary insect has secreted itself inside and is causing all the trouble.
Ce qu’on peut traduire en français par:
J’ai été informé que M. Edison a été réveillé les deux dernières nuits découvrant ‘un insecte’ dans son phonographe - une expression signifiant résoudre un problème, et impliquant qu’un insecte imaginaire s’est introduit à l’intérieur, causant tous les problèmes.

Donc, il semblerait que le bogue original, bien qu’il ait fait référence à un insecte, en aurait été un imaginaire...

Malheureusement, les bogues, bien qu’ils ne soient pas des insectes, ne sont pas imaginaires.

3.2. Composer avec les bogues

Dans le jargon informatique, un bogue est une erreur qui fait qu’un programme se comporte d’une façon inattendue. Si vous écrivez des programmes informatiques, tôt ou tard vous allez rencontrer des bogues. Les bons programmeurs cherchent à éliminer les bogues aussitôt que leur programme se comportent d’une manière inattendue.

Les programmeurs incompétents disent que les bogues dans leurs programmes n’en sont pas, mais qu’il s’agit plutôt de particularité ou de trait intéressant du caractère de leur programme. Vous allez devenir de bons programmeurs, contrairement aux créateurs de Reeborg dont le programme est rempli de bogues.

../_images/reeborg_costume.jpg

Reeborg, grandeur nature (New Jersey, États-Unis)

Photo courtoisie de A. Judkis.
  1. Reeborg a une fuite d’huile. De telle fuite sont dommageables pour l’environnement et pas très pratique pour Reeborg qui doit refaire le plein de façon périodique, lorsqu’il n’est pas occupé à accomplir les tâches que vous lui confiez. Les créateurs de Reeborg prétendent qu’en fait il s’agit d’une caractéristique utile puisque ceci vous permet de suivre Reeborg à la trace, comme tout bon programmeur doit pouvoir faire dans ses programmes. Vous apprendrez plus tard à réparer cette fuite. Et je vous montrerai une façon moins dommageable pour l’environnement afin de suivre ce que fait Reeborg; des techniques plus avancées utilisant des logiciels connus sous le nom de débogueurs vont au-delà de ce qui est couvert dans ces leçons.
  2. Le mécanisme de direction de Reeborg n’est pas utilisé correctement par le logiciel de Reeborg, ce qui fait que ce dernier ne peut que tourner vers la gauche. Les créateurs de Reeborg, une fois de plus, prétendent qu’il s’agit là d’une caractéristique utile puisque ceci vous permet d’apprendre le concept de fonctions. Reeborg n’est pas d’accord. Vous apprendrez sous peu comment accommoder tant bien que mal cette limitation de Reeborg et trouver une façon détournée pour lui permettre de faire des virages à droite. Beaucoup plus tard, vous apprendrez à véritablement réparer Reeborg pour lui permettre de tourner à droite aussi aisément qu’il peut déjà tourner à gauche.
  3. Reeborg possède une boussole lui permettant de déterminer dans quelle direction il va. Malheureusement, une fois de plus, le logiciel de Reeborg a un bogue qui fait en sorte que Reeborg peut seulement dire s’il se dirige vers le nord ... ou non. Vous apprendrez d’abord à composer avec ce bogue pour trouver une façon détournée de permettre à Reeborg de s’orienter correctement. Plus tard, vous apprendrez à corriger le logiciel de Reeborg correctement.
  4. Reeborg peut voir s’il y a un mur qui bloque le passage devant lui, et peut tourner la tête pour voir s’il y a un mur à sa droite. Malheureusement une limitation de son programme (ce qui est une expression malhonnête que les manufacturiers utilisent pour éviter de dire que leurs programmes ont des bogues) empêche Reeborg de déterminer correctement si un mur se trouve immédiatement à sa gauche.

Pour déterminer la cause d’un bogue, il est parfois utile d’interrompre le flot normal d’un programme. À cette fin, vous pouvez utiliser un ou plusieurs des trucs suivants:

  1. Vous pouvez pauser un programme en voie d’exécution simplement en cliquant sur le bouton pause. Ceci est semblable à ce qu’on appelle un point d’arrêt (“breakpoint”) dans un programme.
  2. Plutôt que de cliquer sur le bouton de pause, vous pouvez insérer l’instruction pause() à n’importe quel point du programme, ce qui aura exactement le même effet.
  3. Vous pouvez exécuter un programme une instruction à la fois en cliquant sur le bouton une commande. Si vous faites ceci, vous remarquerez peut-être que les instructions sont surlignées avant d’être exécutées. Dans des cas très rares, il peut arriver que le surlignage puisse causer des problèmes pour l’exécution de certains programmes; vous pouvez désactiver le surlignage en cliquant sur un bouton en haut du code.
  4. Vous pouvez changer la vitesse d’exécution (le temps entre deux instructions) à n’importe quel point à l’intérieur d’un programme; j’expliquerai comment faire ceci plus tard.
  5. Vous pouvez demander à Reeborg d’écrire certaines notes à n’importe quel point à l’intérieur d’un programme; je vous montrerai également comment faire ceci plus tard.
  6. Finalement, vous pouvez arrêter complètement l’exécution d’un programme en cliquant le bouton stop; malheureusement, ceci ne fonctionnera pas toujours si vous avez ce qu’on appelle une boucle infinie hors du contrôle de Reeborg. Dans le pire des cas, vous pouvez simplement recharger la page web et redémarrer à zéro.