De l’académie française et de la compatibilité binaire.

Quelle est la blague informatique la plus courte? Compatibilité. La compatibilité est un problème récurrent en informatique. Il existe une myriade de compatibilités différentes, mais le problème fondamental reste le même: gérer avec un programme A des données B, lorsque A ou B datent d’époque différentes, ou bien on été créé dans des contextes différents.

La compatibilité n’est pas l’apanage de l’informatique, on retrouve ce problème dans le format des sacs d’aspirateurs, l’écartement des voies de chemin de fer, ou le voltage des appareils électriques. C’est aussi un problème qui se retrouve dans la manière dont sont gérés les langages humains, même si on n’utilise en général pas le mot compatibilité. Dans la mesure ou le but d’un langage humain est de communiquer, il est important que ce qui est dit ou écrit par Alice soit compréhensible par Bob.

Même si le rythme n’est pas aussi effréné qu’en informatique, les langues humaines évoluent et le problème de la compatibilité historique se pose: comment gérer le fait que les écrits d’Alice datent d’une époque bien antérieure à celle ou vit Bob? Une solution consiste à fixer la langue écrite, ainsi les textes restent lisible, le probléme c’est que la relation entre langue écrite et parlée devient problèmatique. On retrouve cette situation avec l’anglais: les mots ont gardé leur orthographe historique, le prix à payer est que la relation entre la manière dont on écrit l’anglais et la manière dont il est prononcé est compliquée: ainsi le mot ghoti s’il existait, pourrait se prononcer fish. Une autre solution consiste à simplement toujours écrire phonétiquement. Le problème, à ce moment, c’est que les textes anciens sont difficiles à lire. La troisième solution consiste à avoir un système d’écriture qui n’est pas à proprement parler phonétique, mais sémantique, c’est grosso-modo le cas du chinois.

Il est intéressant de voir que ces différentes solutions se retrouvent en informatique. En particulier lorsque le problème est de faire fonctionner un programme A sur une plateforme B. Un programme est typiquement traduit d’un langage de programmation en un programme binaire, exécutable par la machine, comme c’est un processus long, on fait en général cela durant la conception du programme. La première solution, fixer le système d’écriture, s’appelle dans ce contexte la compatibilité binaire: un programme (texte) ancien peut-être exécuté sans encombre sur une système d’exploitation récent. C’est la compatibilité de programmes classiques, elle a l’avantage d’être simple pour l’utilisateur. Le défaut de cette approche, c’est qu’elle impose à la plateforme un bagage historique qui se révelle complexe et lourd.

La seconde approche, simplifier l’écriture mais perdre la compatibilité des textes est ce qu’on appelle la compatibilité source, c’est le mode préféré des système open-source, ou le code source est généralement disponible. Lorsque la plateforme évolue, on recompile simplement tout. Le problème de cette approche c’est qu’on ne peut pas simplement exécuter un programme ancien, il faut avoir le code source et espérer qu’il soit encore compilable. En un sens, le problème de la compatibilité est repoussé sur le compilateur.

La troisième approche, utiliser une représentation symbolique intermédiaire correspond à la notion de machine virtuelle. Le programme n’est pas compilé pour une vraie architecture d’ordinateur, mais une version simplifiée et plus symbolique. C’est par exemple le cas des programmes Java. De manière schématique, le programme est interprété a chaque exécution. Cela permet en théorie d’exécuter un programme dans un contexte très différent de celui ou il a été écrit. On gagne en flexibilité et on évite largement le problème de compatibilité historique au prix d’une complexité additionelle. C’est peut-être pour cette raison que le système d’écriture chinois est parmis les plus anciens…

En un sens, le rôle de l’académie française n’est pas très différent de celui de ISO.

One thought on “De l’académie française et de la compatibilité binaire.

  1. L’avantage de la compatibilité du code source, c’est aussi de pouvoir analyser et modifier, donc de pouvoir restaurer une compatibilité perdue. Pas possible (ou bien plus difficilement) en binaire…

Leave a Reply to Krystof von MurphyCancel reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.