Articles

Cos’è il problema dell’anno 2038?

Il problema dell’anno 2000 è compreso dalla maggior parte delle persone in questi giorni a causa della grande quantità di attenzione dei media che ha ricevuto.

La maggior parte dei programmi scritti nel linguaggio di programmazione C sono relativamente immuni al problema Y2K, ma soffrono invece del problema dell’anno 2038. Questo problema sorge perché la maggior parte dei programmi C usa una libreria di routine chiamata libreria temporale standard. Questa libreria stabilisce un formato standard a 4 byte per la memorizzazione dei valori temporali, e fornisce anche una serie di funzioni per convertire, visualizzare e calcolare i valori temporali.

Avviso

Il formato standard a 4 byte assume che l’inizio del tempo sia il 1 gennaio 1970, alle 12:00:00 a.m. Questo valore è 0. Qualsiasi valore di tempo/data è espresso come il numero di secondi che seguono quel valore zero. Così il valore 919642718 è 919.642.718 secondi dopo le 12:00:00 del 1° gennaio 1970, che è domenica 21 febbraio 1999, alle 16:18:38 ora del Pacifico (USA). Questo è un formato conveniente perché se si sottraggono due valori qualsiasi, ciò che si ottiene è un numero di secondi che è la differenza di tempo tra loro. Poi puoi usare altre funzioni della libreria per determinare quanti minuti/ore/giorni/mesi/anni sono passati tra i due tempi.

Se hai letto Come funzionano i bit e i byte, sai che un intero firmato a 4 byte ha un valore massimo di 2.147.483.647, ed è da qui che nasce il problema dell’anno 2038. Il valore massimo del tempo prima di passare a un valore negativo (e non valido) è 2.147.483.647, che si traduce nel 19 gennaio 2038. In questa data, tutti i programmi C che usano la libreria standard del tempo cominceranno ad avere problemi con i calcoli della data.

Questo problema è un po’ più facile da risolvere del problema Y2K sui mainframe, fortunatamente. I programmi ben scritti possono semplicemente essere ricompilati con una nuova versione della libreria che usa, per esempio, valori a 8 byte per il formato di memorizzazione. Questo è possibile perché la libreria incapsula l’intera attività temporale con i propri tipi di tempo e funzioni (a differenza della maggior parte dei programmi per mainframe, che non hanno standardizzato i loro formati di data o calcoli). Quindi il problema dell’anno 2038 non dovrebbe essere così difficile da risolvere come lo è stato il problema Y2K.

Qui ci sono alcuni link interessanti:

Pubblicità

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *