No, il 19 gennaio 2038 non ci sarà l’apocalisse del software

Parafrasando Mark Twain, le notizie di un’apocalisse del software il prossimo 19 gennaio 2038 sono molto esagerate. Da qualche giorno è tornato a girare in rete l’ennesimo meme sull’apocalisse del software, cioè un bug (in realtà un problema di architettura del software) in base al quale moltissime app e sistemi operativi andrebbero in crash per la precisione alle 3 e 14 del mattino (e sette secondi) del 19 gennaio 2038, tempo universale standard (cioè il vecchio GMT, in Italia saranno le 4 del mattino).

Non è una cosa nuova: se ne era già parlato tre o quattro anni fa soprattutto nei forum dedicati a Linux. E anche allora il parere degli esperti era pressoché unanime: non c’è da preoccuparsi. Soprattutto dal punto di vista dei consumatori finali, un problema di questo tipo non ha praticamente alcun impatto: tra 14 anni i nuovi software e apparecchi saranno aggiornati, mentre quelli attuali che non lo sono saranno diventati obsoleti e verranno utilizzati molto raramente. Forse solo alcuni sistemi industriali, che di solito vengono mantenuti in funzione per tempi molto lunghi, potrebbero avere problemi se non vengono aggiornati.

Il problema dell’orologio

Non è la prima volta che succede. Il problema non è differente dal Millennium Bug o Y2K, come veniva chiamato all’epoca. È un problema legato al modo con il quale i computer registrano l’ora e la data e poi come la rappresentano. La tecnica usata è apparentemente strana ma logica dal punto di vista del calcolatore, che deve sempre sapere “che ore sono” per poter sincronizzare tutte le sue attività interne e quelle di rete. Per questo ogni sistema informatico utilizza una data di partenza (“Epoch Time”) e “conta” il tempo aggiungendo un secondo alla volta (o, in alcuni casi, dei centesimi di secondo) usando l’orologio interno. Le date “leggibili” dagli esseri umani vengono poi ricavate dal computer dividendo il totale dei secondi in minuti, ore, giorni, settimane, mesi e anni.

Il problema è che, con il passare del tempo, il numero complessivo di secondi diventa un numero molto grande, cioè che richiede molte cifre per essere scritto. Quindi, serve sempre più spazio di memoria per registrarlo. E, come il contachilometri di un’automobile quando finisce le cifre a disposizione, il numero si resetta e torna al valore iniziale, cioè l’Epoch Time. Per Unix e Linux è il 1 gennaio del 1970, per i Mac è il 1 gennaio 1904 e per Windows il 1 gennaio 1601.

Le conseguenze possono essere le più diverse: alcuni programmi vanno in crash, altri non riescono più a leggere i documenti dalla memoria, altri ancora non si collegano più a internet perché viene persa la sincronizzazione. Il tempo è una quantità che nei computer è fondamentale per moltissime attività diverse. Il problema del valore che “trabocca” (cioè va in “overflow”) deriva dal fatto che in generale gli elaboratori non archiviano numeri di lunghezza arbitraria, invece riservano uno spazio di memoria predeterminato che può appunto esaurirsi. Al momento della progettazione di un sistema questo spazio viene definito spesso con poca lungimiranza.

Un bug nell’acqua

La prima volta che ci siamo accorti tutti quanti che i computer avevano un problema con il passare del tempo è stato un quarto di secolo fa, con il cosiddetto Millennium Bug o “Y2K Bug”. In pratica: alla fine degli anni Novanta gli esperti avevano avvertito che il primo gennaio del 2000 la maggior parte dei sistemi operativi in circolazione (sia personal computer con Windows che alcuni sistemi usati negli impianti industriali) sarebbero andati in tilt perché, utilizzavano solo le ultime due cifre dell’anno per registrare la data. Così, il primo gennaio del 2000 avrebbero segnato “00” e avrebbero in pratica resettato la data interna.

Fonte : Wired