Nel 2038 avremo di nuovo un bug nei sistemi informatici paragonabile al Millenium bug.
Lo so è presto per preoccuparci (anche se non servirà), ma è interessante capire come accade. (almeno proverò a spiegare quello che ho capito)
Il bug in questione è conosciuto come Y2038 e nasce con lo Unix, noto sistema operativo nato nel 1970, con tutti gli applicativi e linguaggi di programmazioni come il C e il C++.
In C e la maggior parte dei programmi per calcolare la variabile tempo, utilizzano i secondi a partire dalla data 01/01/1970. (rappresentazione Posix)
Se voglio memorizzare la data 10/02/1982, in realtà si memorizzano in una variabile intera a 32bit con segno (integer signed) i secondi a partire dal 01/01/1970.
Quanti secondi possono essere visualizzati?
2^31 (un bit serve per il segno) = 2147483647 secondi
Questi secondi ci portano alla data 19/01/2038 alle 3:14:07 AM.
Allo scoccare del successivo secondo (vi ricordate il bit del segno?) si passa da 2147483647 a -2147483648 portando la data a Venerdì 13/12/1901 ore 20:45:52.
In pratica con un secondo in più, il bit del segno è settato da zero ad uno e dalla data 01/01/1970 non vengono più aggiunti secondi ma tolti 2147483648.
Per gli utenti Mac la data è solo rinviata visto che hanno adottato una variabile intera unsigned (senza segno) sfruttando il 32° bit.
Questo porterà per gli utenti MacOS alla data 06/02/2040 alle ore 6:28:15 AM.
Y2038 non comporterà nessun problema visto che con l'avvento dei processori a 64 bit, si produrra software a 64 bit con l'adozione della variabile tempo da 32 a 64 bit.
Certo si poteva fin dall'inizio pensare ad una variabile intera a 64bit, ma negli anni 70 risparmiare memoria e sfruttare le poche risorse disponibili era una necessità.
Altre info le potete trovare al seguente indirizzo Y2038