Informatique et SG


José Klingbeil

Copyright © 1997 José Klingbeil. L'auteur donne ici permission d'utiliser cet article sous forme électronique seulement, en partie ou en totalié, à toute personne ou institution pour des motifs éducatifs, tant qu'aucun payement n'est perçu en retour.

Un pseudo-paradoxe classique consiste à opposer la logique binaire des ordinateurs à celle, non-aristotélicienne, -valente, de la sémantique générale. L'informatique serait ainsi une application de la logique A, contredisant, par son succès, l'intérêt d'une logique .

Le paradoxe est très superficiel: la logique binaire sur laquelle s'appuie l'ordinateur, cas particulier de la logique , est inhérente à sa conception physique actuelle (1997). Elle ne concerne pas son utilisation au travers de programmes et encore moins les processus de création des informaticiens, comme Jean-Marc Fouet l'a (brillamment) montré dans son article du Go Sane ! n1. Rappelons-nous aussi que, en gros, les neurones fonctionnent sur un mode binaire.

L'informatique, comme toutes les autres sciences et technologies, constitue un comportement spécifique des time-binders. En tant que tel, les prémisses de la sémantique générale devraient donc s'appliquer et donner de meilleurs résultats que les prémisses aristotéliciennes. J'ai pu constater à de nombreuses occasions que c'était effectivement le cas.

Cette prémisse est évidemment respectée aux niveaux silencieux. Il est moins connu que, très souvent, deux ordinateurs de même marque et de même modèle présentent des différences matérielles non-négligeables. Les constructeurs pouvant faire varier les spécifications internes de leur machine sans prévenir (la marque et le modèle du disque dur par exemple, qui conservera la même capacité).

De plus, matériels et logiciels peuvent y être installés par l'utilisateur. Le principe de non-identité s'applique également à tous ces éléments rajoutés, car là-aussi, des modifications sont apportés en permanence par les constructeurs et les éditeurs de logiciels (par exemple des correctifs du système d'exploitation de la machine).

Toutes ces modifications ont un impact sur le comportement de la machine dans une situation donnée.

La complexité actuelle des matériels et logiciels fait que les interactions entre les différents éléments d'un système peuvent devenir très largement 'imprévisibles'. Malgré la simplicité d'utilisation des machines, à chaque instant, un grand nombre d'éléments sont actifs simultanément. Il n'y a donc pas forcément une seule 'cause' a une 'panne' donnée ('panne' due à l'interaction de plusieurs composants, par exemple), ce qui explique les fréquents renvois de balle entre constructeurs, éditeurs et utilisateurs, dans la culture aristotélicienne ambiante.

La multiordinalité se manifeste également dans des domaines de pointe, comme celui dont traite Jean-Marc Fouet, mais je lui laisse le soin d'en parler.

Considérant tout cela, vous pouvez vous demander comment il est possible que quoi que ce soit se passe normalement ! En fait, la situation n'est pas aussi dramatique que ça, car le taux d'erreur est relativement faible et les systèmes actuels prévoient ces effets de complexité et incorporent des mécanismes capables d'en éliminer une bonne partie automatiquement. Cependant, dans des environnements particulièrement complexes (développement de gros programmes, télécommunications, réseaux d'ordinateurs, etc.), il est très fréquent de tomber sur des cas ou la machine ne peut résoudre elle-même ces conflits.

Et c'est là que la pratique de la sémantique générale peut aider, en permettant de distinguer entre observations et inférences et surtout en favorisant une approche extensionnelle.

Je me souviens d'un exemple particulièrement frappant, au début de ma carrière, lorsque deux collègues étaient venus me demander de l'aide pour un problème sur lequel ils avaient 'séché' pendant une heure. Me présentant une partie de leur programme, l'un d'eux me dit: "D'après nos tests, le problème doit venir d'ici. Là, nous avons déjà vu et c'est bon, pas la peine de regarder." Et, joignant le geste à la parole, il pose une main sur la partie 'bonne' pour me la cacher. Vous devinez la suite... Je soulève doucement sa main et je commence a vérifier précisément cette partie du programme. Au bout d'une minute, j'avais trouvé une cause majeure de panne. La situation était débloquée...

Depuis, devant des problèmes 'insolubles', je me suis souvent posé la question "Quel est l'élément que je refuse d'incriminer ?"

Combien de fois ai-je entendu les mots "Je n'ai rien changé", "Ca marchait hier", ou "J'ai tout essayé" ? J'ai renoncé depuis longtemps à faire le calcul... Confronté à ce type de problème, il vaut mieux passer immédiatement à une exploration extensionnelle de ce qui a changé et de ce qui a effectivement été essayé.