Exemple
Exemple de code non bugué mais pouvant provoquer une erreur et correction du code pour un fonctionnement détectant les erreurs des autres programmes ou de la machine.
- Le pseudo-code suivant représente une fonction prenant en entrée une adresse mémoire et incrémentant la valeur qui y est stockée.
fonction IncPointeur( pointeur ) *pointeur ++ fin fonction
- Le problème est que dans les systèmes informatiques, il est fréquent que seule une portion de la mémoire soit accessible en écriture et qu’une tentative de le faire dans une zone mémoire protégée ou inexistante, provoque un bug, une interruption du programme ou au pire, un arrêt du système.
- Dans les systèmes complexes, il est souvent difficile et fastidieux de prévoir tous les cas possibles, c’est pourquoi la tolérance totale n’existe pas. Ceci n’empêche pas de prévoir un maximum de cas pour rendre le programme le plus robuste possible.
fonction IncPointeur( pointeur ) si EstValide( pointeur ) *pointeur ++ retour OK sinon retour ERREUR fin si fin fonction
- Dans le pseudo-code ci-dessus, le programme teste la validité de l’adresse avant d’y accéder, ce qui permet au programme de continuer même si une adresse erronée lui est transmise.
Quatre types de bugs particuliers
Jeux vidéo
Le terme de bug dans les jeux vidéo a pour signification première une erreur dans le déroulement supposé d’une action. La résultante finale du bug n’occasionnera pas la même gêne suivant son intensité. Une main d’un joueur traversant un mur dans un FPS n’aura pas la même nuisance qu’une impossibilité d’accomplir la quête principale d’un jeu de rôle.
L’existence des bugs n’apportent pas que des points négatifs :
- La recherche et la correction de bugs démontrés permettent souvent une correction d’autres bugs inconnus à ce jour et/ou une optimisation du code source, ce qui est très profitable au joueur (jouabilité améliorée) comme au développeur (le support technique régulier d’un jeu est un gage de renommée).
- La popularité exceptionnelle d’un jeu qui connaît toutefois des bugs est souvent initiatrice d’une communauté très prolifique capable de corriger ces bugs à l’aide de différents outils. Le jeu le plus symbolique de ce phénomène est certainement Fallout 2.
- Certains bugs peuvent être profitables à des joueurs plus ou moins mal intentionnés. Dans les parties jouables en réseau (sur Internet ou en réseau local), les bugs exploitables sont duaux : soit ils sont source de destruction du fair play (notamment dans les jeux de tir subjectif), soit ils permettent une avancée spectaculaire et peuvent, par le fait, s’apparenter à de la triche.
- Dans les concours de Speedrun, certains bugs sont très profitables afin de finir un jeu ou une séquence le plus rapidement possible.
Le terme de bug englobe d’autres notions moins usitées à cause de la popularité du nom de bug. Il serait judicieux de nommer certaines erreurs par oubli plutôt que par bug.