Quei primi mille miliardi di secondi

Pochi giorni fa, per la precisione alle 3, 46 minuti e 40 secondi del mattino di domenica 9 settembre (nel fuso italiano), lo UNIX time_t ha raggiunto quota un miliardo...

Nessuno sembra essersene accorto, ma cinque giorni fa, per la precisione alle 3, 46 minuti e 40 secondi del mattino di domenica 9 settembre (nel fuso italiano), lo UNIX time_t ha raggiunto quota un miliardo. Pare incredibile, ma la notizia non è stata segnalata nemmeno da Slashdot!

[pioppo@abulafia pioppo]$ date +%s
1000330629


Chi si è imbattuto altre volte nel time_t sarà abituato a vedere numeri a 9 cifre che cominciano per 9... ben pochi ricorderanno i tempi in cui il time_t cominciava per 8 (da maggio 95 a luglio 98) e praticamente nessuno ricorderà il 7 (da marzo 92 a maggio 95).
Ok... piccola spiegazione per chi non ci sta capendo niente. Il time_t è una tipica convenzione UNIX per determinare un istante temporale con una risoluzione di un secondo: infatti time_t esprime il numero di secondi che sono passati dalla mezzanotte del primo gennaio 1970 (data comunemente nota come "the epoch"... scelta appositamente perché UNIX venne scritto quell'anno e vide la luce il successivo). Tutti i sistemi UNIX misurano il tempo e le date in questo modo utilizzando almeno 32 bit per il contatore e questo è il motivo per il quale non c'è mai stato un pericolo millennium bug su UNIX (ma ci saranno problemi nel 2038 quando il time_t arriverà a 2147483648 ovvero 2 elevato alla 31... per allora speriamo di avere tutti quanti un processore a 64 bit o che almeno tutte le implementazioni UNIX abbiano convertito il time_t da un signed long int ad un unsigned long int, regalandoci così un bit in più, pari a altri 68 anni di tempo utile).

In realtà l'epoch non è sempre stata come è adesso e UNIX ha avuto il suo millennium bug nei primi mesi di vita. Cito dalla home page di Dennis Ritchie:

"Abbiamo persino anticipato il millennium bug: il tempo veniva misurato in sessantesimi di secondo a partire dal primo gennaio 1971 come una quantità a 32 bit. La sezione BUGS di time(II) riporta: "il lettore accorto noterà che 2^32 sessantesimi di secondo sono solo 2.5 anni". Più tardi, questo venne corretto più di una volta dichiarando una nuova epoca, quindi nuovamente nel 1973 imponendo le unità come secondi interi a partire dal 1° gennaio 1970".

Questa mi sembra una buona occasione anche per andarsi a leggere la prima versione dello "UNIX Programmers' Manual" datato 3 novembre 1971.
Fu in quel manuale che venne deciso come devono essere fatte le "man page" (pagine di help sotto Unix) che tutti quanti usiamo ancora oggi!

Buon miliardesimo secondo a tutti.

Simone Piunno
13 Commenti alla Notizia Quei primi mille miliardi di secondi
Ordina
CONTINUA A LEGGERE I COMMENTI
Successiva
(pagina 1/2 - 6 discussioni)