Après le bug de l’an 2000, le bug de l’an 2038 ? Un dysfonctionnement lié à l’encodage informatique du temps en 32 bits pourrait avoir lieu. On vous explique. Pour mieux expliquer la problématique liée à l’encodage du stockage informatique du temps, il est intéressant de remonter un peu le temps. Le 4 juin 1996, l’agence spatiale européenne (ESA) lançait son module Ariane 5 depuis le centre spatial de Kourou, en Guyane. L’histoire fait date. Près de 37 secondes après le décollage, la fusée explosa 4 000 mètres dans les airs. Heureusement, il n’y a pas eu de pertes humaines. Le vol était prévu uniquement pour le transport de satellites et les retombées n’ont pas fait de victimes. La seule perte a été financière. Près de 600 millions d’euros perdus. Nous ne faisons pas ce bref rappel historique pour rien, après une enquête approfondie, il a été décelé que la cause de cet incident n’était ni mécanique, ni humaine ou bien même extérieure, mais bien informatique. En effet, le rapport d’incident de l’époque indique que la panne d’Ariane 5 est due “à la perte totale des informations de guidage et d’attitude 37 secondes après le début de la séquence d’allumage du moteur principal”. La cause ? La réutilisation du modèle d’Ariane 4 du logiciel de référence inertielle (qui mesure les axes d’inertie, d’accélération, de vitesse) sans le mettre à jour. Le logiciel a donc “débordé” dans son calcul, causant l’échec de cette mission. Pour faire simple, les nombres sont parfois trop volumineux pour être stockés dans un système informatique, ce qui peut parfois entraîner un dysfonctionnement. C’est ce sur-chargement de données qui avait causé la panique du “bug de l’an 2000”. Sans réelle catastrophe au final, ce passage au nouveau millénaire avait affolé le monde entier. La cause ? On encodait le stockage du temps en 2 octets. Soit 2 chiffres. 97, 98, 99, dans une optique d’optimisation du stockage. Le passage à l’an 2000 allait donc faire passer les programmes informatiques de 99 à 00, soit un retour au début du siècle. À l’époque, une catastrophe était attendue, mais rien ne s’était passé. Cela dit, corriger ce dysfonctionnement avait coûté extrêmement cher aux États-Unis, plus de 100 milliards de dollars. Un bug en 2038 ? Encore une fois, un “bug” est attendu, cette fois pour l’an 2038. Et c’est encore une fois question de la manière dont le temps est stocké. Mais l’ampleur serait bien moins grande. Tout d’abord, l’encodage numérique du temps est plus aussi simpliste qu’avant. Aujourd’hui, la plupart des logiciels et tous les systèmes d’exploitation sont sur l’encodage UNIX du temps. Il s’agit ici de la mesure du temps en fonction des secondes épuisées depuis le 1er janvier 1970. À l’heure où ses lignes sont écrites, le temps UNIX est de 1 713 796 849 secondes. Le souci que présente cette mesure du temps réside dans son encodage en 32 bits. En effet, le 19 janvier 2038, à 3 h 14 min 7 secondes, car on aura dépassé la 2 147 483 647ème seconde. Passé cette date, les systèmes considèreront alors être le 13 décembre 1901 à 20 h 45 min 52 s. Ce “bug” s’est révélé pour la première fois en 2010. Tous les programmes informatiques encodés en 32 bits seront concernés, la norme UNIX étant presque devenue la norme. Mais pas de panique. La plupart des programmes sont en train de passer à un encodage 64 bits, qui repousse la date butoir au 4 décembre 292277026596, à 15 h 30 et 8 secondes. Tout de suite moins effrayant. Éric, chercheur en robotique précise que dans le temps, “la mémoire était chère et qu’il fallait l’économiser”. Les développeurs mettaient en œuvre des systèmes, dont le codage en 2 bits, sans pour autant considérer les enjeux liés aux restrictions de ces programmes, ou en les repoussant à plus tard. Il ajoute également que “L’infini est un concept purement mathématique. Il y a des limites physiques partout, même en informatique.” Le stockage du temps sera donc toujours une problématique à étudier. Cependant, les récentes avancées en informatique permettent l’encodage en 64 bits, et de plus en plus les programmes et systèmes d’exploitation se mettent à jour. Le problème sera donc surtout pour les vieux logiciels, fonctionnant encore sur un encodage en 32 bits.