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...
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

Link copiato negli appunti

Ti potrebbe interessare

13 09 2001
Link copiato negli appunti