Argument. L’essentiel du code se tient en une seule ligne : elle s’écrit « x++; ». Cette seule et unique instruction demande à l’ordinateur d’augementer la valeur de la variable x. Comme l’ordinateur suit cette instruction 60 fois par seconde, et que cette valeur est ensuite utilisée pour dessiner le trait vertical à la position de x, nous nous trouvons avec le diagramme ci-contre d’un trait qui balaye l’écran.
Sauf que nous n’avons jamais demandé ni au trait, ni à x, de revenir en permanence à sa position d’origine. Nous n’avons pas demandé à la valeur x de se boucler éternellement entre les mêmes 256 valeurs. Comment se fait-il alors que x balaye en boucle sur notre écran, au lieu de compter à l’infini comme il devrait faire logiquement ? Pourquoi sur un ordinateur, agumenter la valeur de x revient à compter en boucle entre 0 et 255 ?
Imaginons quelqu’un qui ne peut compter qu’à 10. Pour le comprendre, sortez vos mains et commencez à compter avec vos doigts : 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, ..., hmmm, que faire après 10 ? Vous rencontrez au fait un problème assez rapidement de la limite des doigts disponibles. Pour certains d’entre nous, nous continuerions néanmoins à compter au delà de 10 : 11, 12, 13, 14, etc. Mais notre hypothèse concernait une personne ne sachant compter qu’à dix. Et bien cette personne n’a que deux choix : arrêter de compter, ou recommencer à 0.
Comme un enfant qui ne peut compter qu’avec ces doigts, les §[variables](variable) stockées dans un ordianteur sont limitées par le nombre qu’elles peuvent représenter. Contrairement aux déclarations de la « virtualité » de l’ordinateur, entendu par certains comme chose totalement déconnectée de la réalité physique et donc du corps (cf. Kurzweil, 1998, Kurzweil, 2005), un ordinateur ne peut que compter qu’avec des doigts, c’est-à-dire avec des §[arrays](array) d’intérrupteurs bien concrets, bien réels, bien délimités dans l’espace, quelque soit la miniaturisation de ceux-ci. Et si un ordinateur ne peut que compter avec les doigts, il devient essentiel de savoir combien il a de doigts pour effecteur ses opérations.
Une variable « booléenne » ne sait compter que deux chiffres : 0 et 1. Une variable « byte » sait compter de 0 à 255, ou de -128 à 127, c’est-à-dire uniquement 256 différentes valeurs. D’autres variables peuvent compter 65.536 valeurs, alors que d’autres encore peuvent compter jusqu’à 1.677.721, et d’autres encore plus.
Pour comprendre alors le diagramme ci-contre, il faut regarder en amont, et voir quelle est l’étendu des valeurs que la variable x est censée représenter. En lisant le code « wraparound.pde », nous voyons qu’il a été défini au tout début du code comme une variable contennant un « byte », c’est-à-dire uniquement 256 différentes valeurs :
byte x = 0;
Un « byte » est l’équivalent des huit interrupteurs décrites dans le diagramme bitmask : il ne peut que représenter 256 valeurs distinctes. Une fois dépassé cette valeur, une fois arrivé à 256, 257, 258, 259, etc., il reboucle sur zéro : 0, 1, 2, 3, etc.
Pour répondre à notre question de départ, ce diagramme wraparound utilise une variable limitée exactement à 256. Quand x va trop loin à droite, quand elle dépasse 255, l’ordinateur force cette variable de recommencer à compter à partir de zéro, exactement comme on peut faire avec ses propres mains : une fois arrivé à 10, nous recommençons avec un seul doigt pour compter 11. Mais comme l’ordinateur est instruit d’uniquement compter avec les 256 doigts de sa main, une fois que celle-ci n’a plus de doigts, il recommence à zéro et perd pour ainsi dire les valeurs culmulatives. C’est comme si la machine a d’un seul coup perdu la mémoire : eh hop! nous voilà de nouveau à gauche, sans aucune trace que nous venons de mathématiquement effectuer l’équivalent d’un saut interspatial comme dans la série Star Trek.
D’où l’effet de §[bouclage](boucle) de notre ligne sur l’écran, et d’où certains effets esthétiques comme, particulièrement, l’effet pacman.