Avez-vous entendu le scénario du jour du Jugement dernier ? Dans trente ans, l'Internet cessera de fonctionner ! Apparemment, en 2038, un bug similaire au bug du millénaire aura une incidence sur les systèmes basés sur Unix, comme pour les systèmes qui gèrent les métros. Le bug, surnommé le «bug 2038 », surviendra étant donné que les systèmes basés sur Unix stockent le temps comme un entier de 32 bits, en secondes, à partir de minuit du 1er Janvier 1970. Et le dernier temps qui peut être représenté dans ce format, par la norme Posix, est 03h14 du 19 Janvier 2038. Par la suite (A partir de cette date), le temps se terminera autour (s'enveloppera autour) et sera représenté comme un nombre négatif. Et puis que se passera-t-il? Bien évidement, les programmes échoueront. A partir du moment où ces systèmes considèreront le temps non pas comme étant en 2038 mais en 1901, des calculs et des décisions erronés se produiront. (C'est vrai, j'ai vérifié Wikipédia!) Nous avons effectivement déjà vu les retombées du « bug 2038 », en mai 2006 lorsque le serveur web « AOL server » s'est écrasé. Le logiciel a été conçu afin que les demandes de base de données ne soient jamais «hors du temps». Au lieu d'attribuer un «0» pour le délai d'attente, le logiciel a indiqué une date de délai d'attente d'un milliard de secondes dans le futur. Un milliard de secondes (juste plus de 31 ans 251 jours et 12 heures) après 21:27:28 du 12 mai 2006 est au-delà de la date de coupure de 2038. Le système a calculé la date de délai d'attente qui était en réalité dans le passé, s'est confondu, et s'est écrasé. Le bug a même affectait la Rover sur Mars!
Qu'est ce qui sera affecté? Il est probable que la plupart des machines sensibles auront été mis hors service avant d'atteindre la date critique. Toutefois, en 2038, les systèmes existants et les systèmes embarqués pourraient être affectés. Il peut s'agir d'ordinateurs de contrôle de processus, d'ordinateurs de sondes spatiales, des systèmes embarqués dans le contrôle des feux de signalisations, des systèmes de navigations, des routeurs, des pompes à essences, etc. Il ne peut être possible d'améliorer le bon nombre de ces systèmes, de sorte qu'ils doivent être remplacés. Je suis un programmeur - Que puis-je faire? • Tester votre code ou utiliser des utilitaires tels que la Bibliothèque de Pré-chargement « FakeTime ». • Voir les recommandations de programmation de The Open Group (anciennement X / Open), qui maintient les spécifications et les marque déposée Unix. • Si vous travaillez avec le code Open Source, cette bibliothèque libre peut être une référence utile pour patcher le code existant pour la grande précision de calcul en temps à long terme. • Lire les solutions aux problèmes de l'an 2000 par « Steve Manley ». Beaucoup de ses suggestions peuvent être aussi appliquées au problème de 2038. • Garder un œil sur les dernières mises à jour sur le site web du bug 2038 (Source: 2038 FAQ) La fin? Avant la survenue de l'hystérie de masse, il faut se rappeler que nous avons des années, des décennies même, pour faire face à ce dernier parasite de programmation.
Et comme pour l'internet? Eh bien, je suis sur que d'ici là l'auto-amélioration de l'intelligence artificielle sera en cours d'exécution dans le monde, alors nous n'avons probablement pas besoin de nous faire trop de soucis à ce sujet.