On entend souvent des utilisateurs et même parfois des professionnels décrire un comportement ou un dysfonctionnement comme « aléatoire ».  C’est une erreur profonde, l’aléatoire n’a quasiment aucune raison d’exister dans notre monde informatique.

 

La définition  d’aléatoire

Mais tout d’abord définissons le sens d’aléatoire : il s’agit d’un événement dont la survenance est imprédictible, soumise aux lois du hasard : un jet de dé.

Plus  concrètement le résultat d’une action réalisée dans les mêmes conditions mais qui n’aboutira pas forcément au même résultat sans que l’on puisse en expliquer la cause.

 

Un peu de vrai aléatoire

Alors commençons par contenter les puristes pour décrire le peu d’aléatoire de notre monde informatique .

Seule la mise en jeu d’éléments matériels, soumis à des contraintes mécaniques (un disque dur), de température ou électromagnétiques (un composant  mémoire ou un processeur), pourra entrainer  une réaction différente, par exemple selon son usure, une canicule soudaine ou une éruption solaire.

De façon imperceptible par l’utilisateur, mais néanmoins parfaitement réelle, le changement des conditions de fonctionnement va entrainer un changement de résultat, et pourra donc indirectement agir sur un logiciel, et provoquer une réaction inattendue.

 

Simuler l’aléatoire

Pourtant, on utilise souvent des nombres aléatoires au sein des logiciels, alors comment sont ils créés ?

Le plus souvent , il s’agit de l’utilisation d’un compteur qui indique tout simplement le temps depuis lequel un ordinateur est lancé, et à partir duquel on génère le bien connu « RANDOM » des langages de programmation.

Disons qu’il s’agit d’un pseudo-aléatoire, même si le compteur en question n’est pas prédictible à son premier appel, sa réutilisation régulière le rend caduque.

 

Mais les logiciels eux-mêmes ?

Clairement  d’un point de vue logiciel, l’aléatoire n’existe pas : le même logiciel dans les mêmes conditions aura toujours le même comportement.

Vous pourrez répéter la même séquence un million de fois, elle aboutira au même résultat.

 

Alors  d’où vient cette impression de comportement erratique ?

Tout d’abord d’un changement de conditions : ce qui semble identique à l’utilisateur ne l’est pas en réalité. Outre des problèmes matériels, la séquence de réalisation ou les conditions de départ ne sont pas homogènes, et ce à l’insu de l’utilisateur.

Le cas existe aussi à partir d’une combinaison de données non prévue, qui peut embarquer le logiciel dans un cas imprévu, et provoquer ce que l’utilisateur qualifiera de « bug », avec raison d’ailleurs, mais qui est en fait est un cas non géré correctement par le développeur.

Et toujours rien d’aléatoire là dedans…  

 

Le plus souvent l’aléatoire est entre la chaise et le clavier

En fait le plus souvent, le vrai facteur aléatoire se situe juste entre la chaise et le clavier : c’est l’utilisateur lui même qui change son comportement.

Dans une situation pourtant identique, il va se comporter différemment et par voie de conséquence, va entrainer le logiciel dans une logique différente elle aussi.

L’utilisateur en conclura que l’ordinateur a un comportement aléatoire, sans se rendre compte qu’il en est la cause première.   

 

Que répondre à « le problème est aléatoire  » ?

Avant d’abandonner avec un : « profites des fois où cela marche » ou de maudire l’utilisateur qui lui est si aléatoire, il faut tenter d’établir les conditions et de reproduire le problème, au plus près des conditions réelles, avec les données et si possible en observant les habitudes de l’utilisateur concerné.

Plus le diagnostic sera précis, plus les chances de prédire le problème et de le résoudre seront grandes .

Alors bonne chance, et n’oubliez  pas : « seul l’ordinateur est rigoureux ».

 

Olivier Piochaud, Président Directeur Général d’Apsynet

Catégories : Développement & Web