[#chronik-numerik] Le bug de l'an 2038

02 Février 2019 - Modifié le 02 Février 2019

DISCLAIMER : Depuis janvier 2019, je participe à l'émission "La vie en bleu" sur France Bleu Auxerre. L'idée est de présenter un fait d'actualité autour du numérique et des nouvelles technologies pendant une chronique de 5 minutes.




Premier article de 2019, première chronique !

Aujourd’hui, je vais vous parler d’une date fatidique : le 19 janvier 2038 à 3 h 14 min 8 s. Ce sera alors la fin du monde numérique. Alors, on connait (presque) tous le bug de l’an 2000, qui était pressenti, mais sans réellement connaître les effets à l’avance. Retour dans les années 1900, détraquage général dans les aéroports, les bourses mondiales … Au final, il n’y a presque rien eu.

Non, ce bug là, c’est du sérieux, et il va falloir s’y préparer. Mais d’abord je dois vous parler d’encodage de date. En effet, sur nos ordinateurs et autres matériels numériques, la date est encodée – c'est-à-dire enregistrée en quelque sorte – sur un nombre binaire (ne comportant que des zéros et des uns). Par exemple, le nombre 1001 (mille un) en binaire équivaut à 9 en décimal. En effet, chaque « dizaine » de binaire (qu’on appelle bit) correspond à une puissance de 2. Le premier tout à droite 2 puissance 0, donc 1, puis 2 puissance 1 donc 2, puis 2 puissance 2 donc 4, et ainsi de suite.

Alors, vous allez certainement me dire « oui, mais là c’est des nombres, quel rapport avec des dates ? ». Je commencerai donc par dire qu’on dit « ce sont des nombres », et que j’y viens, ne vous en faites pas !

Il faut savoir qu’enregistrer une date numériquement, ce n’est pas facile. En effet, il y a plusieurs façons : en France, une date courte peut être représentée par le nombre des jours, suivi d’un slash, puis du nombre des mois, puis un second slash, et enfin l’année soit sur deux chiffres, soit sur quatre. Déjà, par chez nous, on a deux façons de faire, rajoutons celle des américains qui est totalement inversée – année sur quatre chiffre, mois et jour, le tout séparés par des tirets – et celle des Japonais qui est encore différente … On n’est pas sorti de l’auberge !

Heureusement, il existe un format standard – l’américain en fait – mais pas facile d’unifier tout cela à l’échelle mondiale. Du coup, dans les années 70, AT&T (un grand fournisseur de téléphone étasunien) commence la formalisation d’une norme de temps : l’heure Posix. Le principe est simple : l’heure Posix donne le nombre de secondes depuis le 1er janvier 1970 à minuit. Pourquoi cette date ? On est dans les années 70, donc il faut un repère clair et simple. C’est bien plus pratique que le 12 mars 1973 à midi moins le quart, vous en conviendrez.

Du coup, revenons à nos moutons. Compter le nombre de secondes peut paraître idiot, mais finalement, on peut très bien « stocker » ce nombre dans un nombre binaire de 32 bits. Pour rappel, à chaque dizaine, on multiplie par deux, donc on arrive très vite à des nombres très, très grands. Par exemple, un 1 suivi de 30 zéros, c’est déjà 1 073 741 824 de secondes, soit le 10/01/2004 @ 14:37:04 en temps Posix.

Vous me voyez venir, à un moment donné, nous allons dépasser la taille maximum de stockage et atteindre la fin du monde numérique le 19 janvier 2038 à 3 h 14 min 8 s. Et en plus de ça, il suffira d’atteindre le 32ème bit pour que ce soit fichu. En effet, ce dernier bit correspond au signe, positif ou négatif, du nombre. Du coup, pour tous les services qui ont un besoin critique de l’heure (les services de transport, les services bancaires …), ce sera le chômage technique.

Bref, mis à part changer le sens de ce dernier chiffre pour ne plus qu’avoir des nombres positifs, cela nous emmènera vers 2106. D’ici là, on aura le temps de trouver une solution. D’ailleurs, on se dit déjà que plutôt que d’utiliser un nombre binaire à 32 chiffres, on en utiliserait 64. Cela nous permettra de coder des dates jusqu’au dimanche 4 décembre 292 277 026 596 (soit 21 fois l’âge estimé de l’Univers). Ça va, on sera large ;)


Lien du replay : FRANCE BLEU AUXERRE (à partir de 50 minutes)