L’algèbre booléen 
1. L’origine des tests 
Les tests effectués tant en algorithmique qu’en programmation sont des tests logiques, ou plutôt faisant appel à la logique. Le chapitre 
Les variables et opérateurs a déjà brièvement abordé ce point lorsqu’il a été question des opérateurs booléens. Les opérateurs dits 
logiques ET, OU et NON sont des représentations de la logique. De quelle logique parle­t­on ? 
Fondamentalement, la logique est la même pour tout le monde, bien que évidemment l’interprétation des résultats puisse varier d’un 
individu à l’autre (en statistique par exemple). La logique est universelle. Monsieur Spock, s’il avait existé n’aurait pas dit mieux. Mais 
jusqu’à  peu  (dans  l’échelle  de  l’humanité)  il  n’y  avait  aucun  moyen  de  se  la  représenter  réellement,  sous  forme  de  symboles, 
d’assertions, etc. Il n’y avait aucune représentation formelle de la logique. 
Or un ordinateur est logique (même si on peut lui demander des choses illogiques, c’est vous qui le programmez après tout). La logique 
est même la base de nombreuses applications mathématiques, électroniques, d’intelligence artificielle. En informatique, le matériel est 
électronique et dépend de la logique, et les programmes dépendent tant de tests et de calculs faisant appel à la logique, et devant 
fonctionner sur des circuits électroniques. Sans logique, pas d’électronique, ni d’ordinateurs, ni de programmes. 
C’est ce qui fait que les opérateurs, conditions et tests ne doivent pas être posés n’importe comment. Il n’y a rien de plus logique qu’un 
ordinateur, mais aussi rien de plus stupide : il va bêtement (et encore la notion de bêtise lui est inconnue) exécuter exactement ce que 
vous lui demandez, même si le résultat entraîne une erreur ou est faux et cela du moment que les tests sont bien posés et qu’une 
réponse logique peut en être déduite. Ainsi : 
PROGRAMME STUPIDE
VAR
froid, nu, sortir en Booléen
DEBUT
Froid←VRAI 
Nu←VRAI 
Si Froid=VRAI ET nu=VRAI Alors 
Sortir←VRAI 
FinSi 
FIN
Cet algorithme peut être ainsi interprété : "S’il fait froid dehors et que je suis nu, alors je peux sortir". Cet algorithme est pour vous et 
moi,  êtres  humains,  faux.  Vous  n’allez pas sortir nu s’il  fait  froid,  vous  auriez  plutôt  intérêt  à  mettre  Sortir  à  FAUX,  ou  à  inverser  la 
condition froid ou nu. C’est évident ! Mais l’ordinateur s’en fiche : il n’a aucun moyen de savoir que vous avez fait une erreur dans vos 
tests. Le programme est mathématiquement logique : chaque test analysé est correct et donc les conditions sont remplies pour passer 
la variable Sortir à VRAI. 
La suite aborde des points théoriques. Le but n’est pas de vous donner un cours magistral sur l’algèbre de Boole mais de vous fournir 
des bases de compréhension du fonctionnement de la logique vu du côté de l’informatique. Si vous voulez aller plus loin, il existe une 
littérature  conséquente  à  ce  sujet  dans  les  bibliothèques  et  les  librairies  (par  exemple,  "Algèbre  de  Boole"  chez  Masson).  S’il  vous 
intéresse un jour d’aller largement au­delà et d’explorer les mécanismes de logique et de pensée humaine ou d’intelligence artificielle, il 
existe un gros ouvrage de référence, référence de nombreux scientifiques, informaticiens etc, qui s’appelle "Gödel, Escher, Bach : les 
brins d’une guirlande éternelle", par Douglas Hofstadter. 
2. Petites erreurs, grosses conséquences 
Comprenez­vous maintenant l’importance de la logique formelle et de bien écrire les tests et conditions dans un algorithme ? 
Pour vous conforter un peu voici deux exemples de programmes mal écrits et de leurs désastreuses conséquences. 
a. Ariane 5 
Le  4  juin  1996  un  bug  d’un  programme  de  la  première  fusée  Ariane  5  a  provoqué  sa  destruction  après  40  secondes  de  vol.  Le 
programme en question contrôlait les gyroscopes (qui indiquent l’orientation) de la fusée. Il venait d’Ariane 4 et n’avait pas été testé ni 
modifié  pour  Ariane  5.  En  gros,  un  nombre  de  64  bits  a  été  converti  en  16  bits.  Évidemment  ça  ne  "rentre  pas"  et  les  valeurs 
retournées par ce programme sont devenus aberrantes. Or ce programme était  critique  et  n’aurait jamais dû retourner de valeurs 
impossibles. Les données retournées n’étaient pas testées et vérifiées par le programme central de calcul de vol qui les prenaient pour 
argent comptant et les interprétaient telles quelles. Sur un nombre signé, le dernier bit correspond au signe. Lorsque les 16 bits ont 
été remplis, le dernier bit est passé à un. Le programme a reçu une indication comme quoi la fusée avait changé de sens (pointait vers 
le bas) et a orienté les tuyères des réacteurs en les braquant à fond pour rectifier une situation totalement fausse. La fusée a donc 
subi  à  un  moment  donné  de  par  la  poussée  et  sa  position,  des  forces  aérodynamiques  telles  que  sa  destruction  est  devenue 
inévitable. Le comble ? Le programme des gyroscopes ne devait être utilisé que durant le compte à rebours et uniquement sur les 
modèles Ariane 3 ! Autrement dit, il n’aurait jamais dû être présent ni fonctionner en vol. 
b. Mars Climate Orbiter 
L’autre exemple touche encore au domaine spatial. Le 11 décembre 1998 la NASA lança une sonde en direction de Mars : Mars Climate 
Orbiter  (MCO),  dans  le  but  d’étudier  le  climat  martien.  La  sonde  arriva  en  insertion  orbitale  (mise  en  orbite  autour  de  Mars)  le  23 
septembre 1999. La sonde devait allumer son moteur principal un bon quart d’heure, passer derrière la planète (perte de contact avec 
la Terre) puis de nouveau devant (reprise de contact). Le contact n’a jamais repris. Pourquoi ? Parce que lors des calculs nécessaires à 
cette insertion sur orbite, MCO a fait appel à un programme issu d’un autre fournisseur (Lockheed Martin). Or MCO programmé par la 
- 1 -
© ENI Editions - All rigths reserved - Jonifar lina
61
Précédent

- 61/220

Suivant