Après la numération sexagésimale et tabulaire des Babyloniens dans l’ancienne Mésopotamie puis le réemploi des cartes imprimées des orgues de Barbarie puis des métiers Jacquard dans les machines d'IBM, nous allons aborder ici une autre source antique de l’informatique : le codage binaire dans l’antiquité chinoise. C’est le philosophe allemand Leibniz qui, en 1703, a fait connaître en Europe un manuel de magie divinatoire dans lequel d’étranges notations utilisaient déjà ces conceptions mathématiques il y a au moins 2500 ans.
Par C. R.
Publié le 08/09/2022
Dernière modification le 22/08/2024
Ce titre traduit d'un ouvrage publié originellement en 1703 par le philosophe allemand polyglotte Gottfried Wilhelm Leibniz (Explication de l’arithmétique binaire, qui se sert des seuls caractères 0 et 1 ; avec des remarques sur son utilité, et sur ce qu’elle donne le sens des anciennes figures chinoises de Fohy, d'après cette traduction du XVIIIe siècle) suggère qu'il voyait déjà l'intérêt extraordinaire du codage binaire (pratiqué dans l'antiquité chinoise en lien avec la divination et avec la philosophie), bien avant qu'il prenne une place centrale en informatique.
Le principe du codage binaire consiste à transformer n’importe quelle chaîne de lettres ou de nombres en une suite de symboles correspondant à seulement deux états opposés comme, par exemple :
...
C’est le principe de l’informatique et de l’électronique, mais aussi du langage morse, des cartes perforées de l'orgue de barbarie, des métiers Jacquard et des premières machines de mécanographie d'IBM, etc.
Cela permet d’écrire les nombres avec seulement deux signes.
Ce codage binaire (la transformation de n'importe quelle chaîne de caractères en signes binaires) utilise bien sûr la numération binaire (l'écriture des nombres en base deux, et non dans la base 10 que nous avons l'habitude d'utiliser pour la numération décimale).
La numération (à ne pas confondre avec la numérotation qui est l'attribution d'un numéro à un ensemble d'objets ou de personnes) est tout simplement un système concret d'écriture des nombres (avec un certain nombre de signes et des règles).
Voici un petit tableau de correspondance entre la numération décimale (en chiffres arabes ici) et la numération binaire (en chiffres arabes également ici) :
Système décimal (dix sortes de caractères) |
Système binaire (2 sortes de caractères) |
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
9 | 1001 |
10 | 1010 |
11 | 1011 |
12 | 1100 |
etc.
|
etc.
|
On peut remarquer au passage que dans le système binaire les puissances de 2 sont marquées par un zéro, tout comme les puissances de 10 dans le système décimal :
Puissances de 10 dans le système décimal |
Puissances de 2 dans le système binaire |
1 = 100 10 = 101 100 = 102 1000 = 103 etc. |
1 = 20 = 1 10 = 21 = 2 100 = 22 = 4 1000 = 23 = 8 etc. |
Le système binaire permet aussi de coder les lettres de l'alphabet avec seulement deux signes également, par exemple de la façon suivante :
Alphabet latin | Codage binaire |
A | 01000001 |
B | 01000010 |
C | 01000011 |
D | 01000100 |
E | 01000101 |
F | 01000110 |
etc.
|
etc.
|
Cela permet même de coder une image (avec un découpage en pixels correspondant à un quadrillage) ou un son (quand un son analogique est numérisé en format WAV ou MP3 par exemple).
Bien sûr, le fait de se limiter à deux signes est très pratique quand on passe de la théorie à la pratique (avec des dispositifs mécaniques, électromécaniques ou électroniques) puisque cela permet de n'exploiter, concrètement, que deux états physiques (le courant passe ou ne passe pas, par exemple).
C’est précisément ce système de codage qui est utilisé dans les supports numériques (de la carte perforée à la clé USB en passant par le disque dur).
Nous avons déjà vu qu’il s’était développé avec les premières formes de programmation sur carte perforée :
Dans ce cas, c’est l’association entre le codage numérique et une trame tabulaire qui rend le codage pratique et efficace. Par exemple, sur la carte perforée d’un orgue de barbarie :
C’est le même principe qui permet de dessiner un motif sur un pull avec un métier à tisser, une image sur l’écran de votre ordinateur ou de votre smartphone...
Pour résumer, les orgues de Barbarie (on ne sait pas encore où se situait cette « Barbarie », autrement dit où ils ont été inventé... mais on peut supposer que celui qui a inventé cela était moins barbare que génial) combinaient :
Les codages informatiques ont essentiellement repris les deux premiers éléments : le système tabulaire et le codage binaire.
Le premier Européen qui a compris que les Chinois avaient inventé le codage binaire dès l’antiquité était un philosophe polyglotte, Gottfried Wilhelm Leibniz, qui a publié dès 1703 un ouvrage intitulé (dans sa traduction en français du XVIIIe siècle) : Explication de l’arithmétique binaire, qui se sert des seuls caractères O et I avec des remarques sur son utilité et sur ce qu’elle donne le sens des anciennes figures chinoises de Fohy.
En effet, un manuel de magie du premier millénaire avant J.-C., le Yi Jing (Livre des transformations ou Livre des mutations) reprenait une figure préexistante de 64 combinaisons binaires (64 figures constituées chacune d’un hexagramme : l'association de deux trigrammes, symbolisant chacun un aspect de la nature) pour théoriser l’ensemble des transformations possibles et disposer d'une base complète pour la divination. Le trait plein et le trait discontinu (qui préfigure la perforation des cartes perforées), correspondent respectivement au 1 et au 0.
Il fallait beaucoup de connaissances (d’abord savoir lire et comprendre le chinois...), de curiosité, d’ouverture intellectuelle, d’esprit d’analyse et de synthèse – en bref, d’intelligence – pour comprendre cela. Pourtant, des esprits éminents ont ironisé sur la découverte de Leibniz, qui allait pourtant changer le monde. Voltaire avait ainsi fait de lui (dans son conte philosophique Candide) le prototype du savant omniscient totalement ridicule, à travers son personnage Pangloss (« celui qui parle de tout » en grec), qui répétait inlassablement les mêmes idées théoriques (la caricature de celles de Leibniz) sans tenir compte du démenti apporté par les faits réels.
Voltaire, philosophe à lucidité variable
Si Voltaire a été un grand auteur de contes philosophiques (notamment) et un intellectuel engagé avant la lettre (en prenant la défense du protestant toulousain Calas accusé d’un crime qu’il ne pouvait avoir commis, tout comme Zola prendra la défense du capitaine Dreyfus également incriminé injustement pour des raisons religieuses), le philosophe de Ferney s’est également parfois lourdement trompé (on dirait aujourd’hui qu’il avait la maladie du Nobel, comme le professeur Luc Montagnier défendant désormais des théories sur la téléportation de l’eau ou relayant des thèses complotistes sur le Covid) : non seulement il s'est moqué stupidement d’un des esprits les plus brillants de son temps et d’un visionnaire (Leibniz) mais il a aussi considéré que les peuples soumis à l’autorité despotique de l’impératrice russe Catherine II étaient... les plus heureux du monde (ce qui fait de lui le véritable Pangloss, finalement) :
« Savez-vous seulement où est le paradis terrestre ? Il est partout où est Catherine Seconde. »
Elle avait pourtant renforcé le servage (une forme d'esclavage que la Russie a conservé plusieurs siècles après l'Europe de l'ouest), conquis violemment l’Ukraine contre le gré de ses habitants (déjà...) et dépecé la Pologne. Les colères homériques de Denis Diderot contre la despote éclairée (elle était plus instruite que les autres monarques de son temps mais encore plus despotique) refusant de libérer sa paysannerie de l’esclavage montrent que l'auteur de l'Encyclopédie était infiniment plus lucide que l'auteur du Dictionnaire philosophique, qui choisissait parfois mal les cibles de son ironie. Diderot/Voltaire : 1/0 sur ce sujet...
Le grand mathématicien Jean Le Rond d’Alembert (qui était pourtant l’un des responsables de L’Encyclopédie avec Denis Diderot) a quant à lui déclaré que cette histoire d’arithmétique binaire dénichée en Chine par Leibniz était ridicule et qu'elle ne servirait jamais à rien. Certains penseurs voient loin (dans toutes les directions de l’espace et du temps) et d’autres, beaucoup moins loin.
Le symbole magique de Fohi (ou Fuxi, empereur mythologique chinois du XXIXe siècle avant J.-C.) représenté (plusieurs siècles avant J.-C.) dans le livre de divination magique qui a ébloui Leibniz. On y voit huit trigrammes (huit figures composées de trois signes binaires : des lignes continues ou brisées) : huit parce que c'est le nombre de combinaisons possibles avec deux valeurs possibles pour chacun des trois traits (2³ = 8).
Si l'on superpose deux trigrammes (chacun étant l'une des huit possibilités vues ci-contre) pour obtenir un hexagramme (une figure composée de six signes binaires), on obtient cette fois soixante-quatre combinaisons possibles (26 = 64).
Si la question avait été posée en anglais, avec la notion de bytes (comportant 6, 8 ou davantage de bits, donc de caractères binaires), la réponse aurait été oui.
En français, non, car le terme octet (traduction de byte) étant apparu quand les bytes étaient déjà passés de 6 à 8 bits, il (ce terme octet) renvoie explicitement au 8.
Pour mieux comprendre cette réponse globale, revenons à la définition de l'octet informatique, au risque de quelques répétitions (volontaires).
L’octet informatique (byte en anglais) est une combinaison de 6, 8, 9, 16, 32 ou 64 bits (bits en anglais déjà) : 1 byte = 6, 8, 9, 16, 32 ou 64 bits.
Le bit est une unité en code binaire : rappelons encore une fois qu'elle ne peut avoir que deux valeurs (0/1, vrai/faux, oui/non, courant qui passe / courant qui ne passe pas, trait interrompu / trait continu, emplacement perforé / non perforé…).
Les fonctions logiques de l'algèbre booléenne : proches de la pensée chinoise ou de la logique grecque d'Aristote ?
La logique booléenne (ou algèbre de Boole, du nom du mathématicien et philosophe britannique George Boole, initiateur de la logique moderne au XIXe siècle) est en grande partie une application de la logique aristotélicienne : le principe du tiers exclus, élaboré par Aristote dans l'antiquité grecque, consiste à considérer qu'une proposition (un énoncé) est soit juste, soit fausse et qu'il n’y a pas de troisième possibilité. C'est proche du principe de non-contradiction, selon lequel quelque chose ne peut pas être à la fois vrai et faux. Bien sûr, l'idée chinoise du yin et du yang dit l'inverse. Les valeurs de vérité prises en compte dans le calcul booléen découlent donc surtout des principes aristotéliciens : Boole a développé tout une série d'opérateurs (qui ont été repris ensuite dans les langages informatiques) fonctionnant, comme toute algèbre, selon une syntaxe précise (fondée sur les propriétés des opérateurs : distributivité, associativité, commutativité...) directement inspirée par la pensée d'Aristote.
Pour en revenir aux 64 hexagrammes de Chine antique, nous pouvons bien les voir comme 64 bytes de 6 bits. (vous aurez compris que le terme originel anglais byte est dans ce cas préférable au terme français octet puisqu'il n'y a pas 8 bits mais seulement 6).
Cela ressemble d’ailleurs au choix qui a été fait au début de l’informatique : « Dans les années 1950 et 1960, le byte était souvent composé de 6 bits, car tous les caractères nécessaires à la programmation en langue anglaise pouvaient être codés avec six bits (64 possibilités). » (Wikipédia, article « octet » consulté le 08/09/2022).
Le passage des bytes de 6 bits à des bytes (octets) de 8 bits (28 => 256 possibilités) a permis ensuite d’inclure d’autres caractères (accents, ponctuation, etc.) : ceux que vous êtes en train de lire...
En tout cas, force est de constater que Leibniz avait raison d'être ébloui par ces « anciennes figures chinoises de Fohi » dont il avait compris tout le potentiel.