Il bug dell’anno 2038, metterà in tilt internet e tutti i dispositivi elettronici?

Qualcuno ricorda il millennium bug? Quello che avrebbe creato non pochi problemi sopratutto sui software e sugli hardware che si occupano di cose delicate? Ecco, ci risiamo o meglio ci ri-saremo fra circa 20 anni.

Di cosa si tratta? Semplicemente di un fattore tecnico presente su tutti gli attuali dispositivi informatici che con molta probabilità verrà risolto anche grazie alla loro obsolescenza.
Ogni dispositivo al momento ha un orologio interno che parte dal 1 gennaio 1970. In questo modo l’orologio che deve necessariamente funzionare attraverso l’uso di un numero intero, utilizza il numero di secondi trascorsi da quella data fino alla data e ora odierni. Poi questo viene convertito in data e ora ogni volta che serve. L’orologio interno quindi non è altro che un banale numero a 32 bit, ovvero un numero binario che in decimale va da – 2.147.483.648 a +2.147.483.648. Bene, cosa succederà il 19 gennaio 2038 alle ore 3:14? Il numero in questione avrà esaurito tutti i valori raggiungendo 2.147.483.648, non potrà raggiungere il valore 2.147.483.649 quindi ricomincerà a contare da – 2.147.483.648. E cosa rappresenta tale numero? Esso ci porta indietro di 137 anni ovvero al 13 dicembre 1901. In pratica tutti i programmi che utilizzeranno la data di sistema, ovvero accederanno alla data dell’orologio del dispositivo in uso otterranno come risposa una data che parte dal 13 dicembre 1901. Immaginate i risultato dei calcoli di differenze di date in tutte le applicazioni in cui queste servono, nei servizi bancari, nei servizi per qualsiasi tipo di calcolo finanziario, nelle agende e nei calendari on line, nelle applicazioni che gestiscono le timbrature di presenza dei dipendenti.

La stessa internet è regolamentata da un meccanismo di gestione del tempo basato sugli orologi interni dei server tutti sincronizzati e la cui ora parte dal 1 gennaio 1970 per scelte di fabbricazione.
Tutti i dispositivi utilizzano a livello di programmazione una funzione “Timestamp()” che restituisce un numero da trasformare in data e quel numero inesorabilmente aumenta fino a decretare il “de profundis” nel 2018. Per la verità poiché i contatori hanno una certa ciclicità come avviene per un orologio con le lancette, allora quel numero riparte dal suo valore negativo e ci riporta indietro nel tempo.
Il limite sta ad indicare che contrariamente al concetto di infinito e infinitesimo tipico del nostro modo di pensare, la macchina viene progettata sempre con risorse finite anche in termini di grandezze, basta che la finitezza di tali risorse sia tale che ci possano bastare. Nel caso della data di sistema avremo 20 anni di tempo per trovare una soluzione.
Ma come è possibile avere un tale limite? Perché gli esperti non ci hanno pensato prima? Semplice, la data è ancora lontana e sicuramente progetteranno i prossimi dispositivi con un orologio interno a 64 bit. Allora sì che occorreranno circa 600 miliardi di anni per esaurirlo!

  •  
  •  
  •  
  •