Qu’est-ce que le problème de l’an 2038 ?
Le problème de l’an 2000 est compris par la plupart des gens de nos jours en raison de la grande attention médiatique qu’il a reçue.
La plupart des programmes écrits dans le langage de programmation C sont relativement immunisés contre le problème de l’an 2000, mais souffrent plutôt du problème de l’an 2038. Ce problème survient parce que la plupart des programmes C utilisent une bibliothèque de routines appelée bibliothèque de temps standard . Cette bibliothèque établit un format standard de 4 octets pour le stockage des valeurs temporelles, et fournit également un certain nombre de fonctions pour la conversion, l’affichage et le calcul des valeurs temporelles.
Publicité
Le format standard de 4 octets suppose que le début du temps est le 1er janvier 1970, à 12:00:00 a.m. Cette valeur est 0. Toute valeur de temps/date est exprimée comme le nombre de secondes suivant cette valeur zéro. Ainsi, la valeur 919642718 correspond à 919 642 718 secondes après 12:00:00 le 1er janvier 1970, soit le dimanche 21 février 1999 à 16:18:38 heure du Pacifique (U.S.). C’est un format pratique car si vous soustrayez deux valeurs quelconques, vous obtenez un nombre de secondes correspondant à la différence de temps entre elles. Vous pouvez ensuite utiliser d’autres fonctions de la bibliothèque pour déterminer combien de minutes/heures/jours/mois/années se sont écoulées entre les deux heures.
Si vous avez lu How Bits and Bytes Work, vous savez qu’un entier signé de 4 octets a une valeur maximale de 2 147 483 647, et c’est de là que vient le problème de l’année 2038. La valeur maximale du temps avant qu’il ne passe à une valeur négative (et invalide) est de 2 147 483 647, ce qui se traduit par le 19 janvier 2038. À cette date, tous les programmes C qui utilisent la bibliothèque de temps standard commenceront à avoir des problèmes avec les calculs de date.
Ce problème est un peu plus facile à résoudre que le problème de l’an 2000 sur les ordinateurs centraux, heureusement. Les programmes bien écrits peuvent simplement être recompilés avec une nouvelle version de la bibliothèque qui utilise, par exemple, des valeurs de 8 octets pour le format de stockage. Cela est possible parce que la bibliothèque encapsule l’ensemble de l’activité temporelle avec ses propres types de temps et ses propres fonctions (contrairement à la plupart des programmes mainframe, qui n’ont pas normalisé leurs formats de date ou leurs calculs). Le problème de l’an 2038 ne devrait donc pas être aussi difficile à résoudre que l’a été celui du passage à l’an 2000.
Voici quelques liens intéressants :
Publicité
.