skip to main | skip to sidebar
32 commenti

Com’è complicato il tempo! Meno male che c’è l’open source

L'articolo è stato aggiornato dopo la pubblicazione iniziale.

Il cambio d'anno festeggiato pochi giorni fa ci regala, come consueto, una serie di cambiamenti: buttar via i calendari obsoleti, abituarsi a scrivere l'anno con un 4 finale al posto del 3, e così via.

Niente di speciale, tutto sommato, perché il tempo è lineare e procede con scadenze ben familiari: secondi, minuti, ore, giorni, settimane, mesi, anni. Un sistema dal quale dipendiamo sempre di più, non solo per la puntualità ma anche per la validità per esempio delle transazioni bancarie o delle operazioni di borsa.

Ma in realtà il sistema è semplice soltanto in superficie: come racconta molto bene questo video di Computerphile (in inglese), un errore anche di un solo secondo può causare problemi a catena, e chiunque si trovi a dover insegnare a un computer come gestire correttamente i calcoli del tempo, o a dover prendere un appuntamento telefonico con un interlocutore dall'altra parte del mondo, si trova presto in un pantano di regole e di eccezioni.

Prima di tutto bisogna tenere conto, ovviamente, dei fusi orari: ma non basta aumentare o scalare di un'ora tonda, perché ci sono paesi come l'Australia, la cui zona centrale è nove ore e mezza avanti rispetto all'ora standard di Greenwich, o il Nepal, che è avanti di cinque ore e tre quarti. Serve una tabella con tutti i fusi orari e le relative eccezioni.

Poi c'è l'ora legale, che entra in vigore in giorni differenti in base alle nazioni: serve una tabella che elenchi tutte le date nelle quali ciascun paese del mondo passa dall'ora legale a quella solare e viceversa. E ci sono i paesi dell'emisfero sud, che in autunno portano le lancette indietro anziché avanti, e lo fanno, ovviamente, in date differenti. Bisogna tenere conto anche di questo.

Ma ci sono anche casi come Samoa, che si trova nel Pacifico, sulla linea di cambiamento di data: nel dicembre 2011 ha scelto di perdere un intero giorno di calendario, passando dal 29 direttamente al 31. Anche questo va incluso nei calcoli. Per fortuna esiste già un file che elenca i cambi di fuso orario passati e futuri, che vengono annunciati con un certo anticipo. Tranne nel caso della Libia, che l'anno scorso, con pochissimo preavviso, ha annullato l'ora legale, col risultato che è stato impossibile creare e distribuire gli aggiornamenti di tutti i software e che ogni computer libico, con qualunque sistema operativo, si è trovato a indicare l'ora sbagliata.

C'è di peggio. In Cisgiordania, a fine settembre scorso la popolazione israeliana si è trovata a usare un'ora diversa da quella palestinese, perché l'Autorità Palestinese aveva deciso di tornare all'ora solare, mentre i residenti israeliani avevano deciso di restare sincronizzati con il cambio dell'ora legale in Israele a fine ottobre. Nello stesso posto, insomma, c'erano due orari differenti in base all'etnia. E qui il programmatore si mette le mani nei capelli. Se non se li è già strappati prima. Ma non è finita.

Se è già un incubo calcolare che ore sono adesso in un altro luogo del mondo, immaginatevi cosa succede quando si tratta di calcolare date storiche. C'è da tenere conto del passaggio dal calendario giuliano a quello gregoriano, che però non è stato fatto da tutti: ci sono paesi che l'hanno adottato nel 1582, quando si è passati dal 4 ottobre direttamente al 15, e ci sono altri paesi che non l'hanno introdotto neanche adesso. Molti paesi europei passarono al calendario gregoriano in momenti differenti anche di secoli: la Danimarca e la Prussia nel 1700, l'Impero Britannico nel 1752, la Russia nel 1918, la Grecia nel 1923.

Neppure una cosa apparentemente ovvia e incontestabile come l'inizio dell'anno è facile da calcolare. In Inghilterra, dal dodicesimo secolo fino al 1751, l'anno legale iniziava il 25 di marzo, per cui tutte le date storiche di gennaio, febbraio e marzo vanno corrette (l'esecuzione di Carlo I, per esempio, avvenne il 30 gennaio 1648 secondo il calendario dell'epoca, ma oggi i libri di storia correggono e la indicano nel 1649). In altri termini, dopo il 31 dicembre 1712, per esempio, c'era il primo gennaio... 1712. In Scozia, invece, l'anno legale iniziava il primo gennaio già dal 1600, per cui a quei tempi passare dall'Inghilterra alla Scozia in gennaio, febbraio o marzo significava cambiare anno.

Queste possono sembrare stramberie antiche; oggi siamo più pratici e razionali, visto che siamo molto più interconnessi e interdipendenti. Invece no. Gli astronomi hanno introdotto i secondi intercalari, ossia secondi supplementari o mancanti, per tenere conto delle leggere irregolarità della rotazione terrestre, altrimenti il tempo coordinato universale o UTC, usato come riferimento principale in tutte le attività industriali e sociali, si sfaserebbe rispetto alla rotazione del pianeta (tempo solare). Quando c'è un secondo intercalare supplementare, c'è un minuto che ha 61 secondi e quindi gli orologi di precisione devono segnare 23:59:60. Dal 1972, quando è stato introdotto questo sistema, sono stati aggiunti 25 secondi intercalari.

Che differenza potrà mai fare un secondo in più? Tanta, se c'è di mezzo l'informatica. I computer non si aspettano un minuto che duri 61 secondi, e a volte vanno in tilt, come è successo ai sistemi della Oracle nel 2009 e a molti siti Internet che usavano un Linux non aggiornato nel 2012. Google risolve il problema “spalmando” il secondo nell'arco della giornata, in modo da non avere mai un minuto con 61 secondi.

Per fortuna ci sono degli esperti che tengono traccia di tutte queste complicazioni e, cosa più importante, le rendono pubblicamente disponibili sotto forma di tabelle e codice open source, già pronto per l'uso, da prendere e inserire in qualunque programma, e sotto forma di siti come TimeAndDate.com e WorldTimeZone.com.
Invia un commento
I commenti non appaiono subito, devono essere tutti approvati da un moderatore. Lo so, è scomodo, ma è necessario per tenere lontani scocciatori, spammer, troll e stupidi: siate civili e verrete pubblicati qualunque sia la vostra opinione; gli incivili di qualsiasi orientamento non verranno pubblicati, se non per mostrare il loro squallore.
Inviando un commento date il vostro consenso alla sua pubblicazione, qui o altrove.
Maggiori informazioni riguardanti regole e utilizzo dei commenti sono reperibili nella sezione apposita.
NOTA BENE. L'area sottostante per l'invio dei commenti non è contenuta in questa pagina ma è un iframe, cioè una finestra su una pagina di Blogger esterna a questo blog. Ciò significa che dovete assicurarvi che non venga bloccata da estensioni del vostro browser (tipo quelle che eliminano le pubblicità) e/o da altri programmi di protezione antimalware (tipo Kaspersky). Inoltre è necessario che sia permesso accettare i cookie da terze parti (informativa sulla privacy a riguardo).
Commenti
Commenti (32)
Ci pensavo ieri in macchina al secondo intercalare e mi domandavo perchè non potessero essere i sistemi operativi a gestirsene in maniera nascoata. Quando il secondo è tolto semplicemente non esiste. Quando è aggiunto non lo rendono mai disponibile a nessuno (utenti e programmi) spalmandolo (come fa google) in un periodo più lungo.
Per chi lavora con i computer (e piu' ancora per chi scrive software) la gestione del computo del tempo e' un delirio.
Partiamo da un ciclo di [59|60|61] (secondi), dentro un altro ciclo di 60, dentro un ciclo di 24, dentro un ciclo di 7, dentro un ciclo di [28|29|30|31] dentro un ciclo di [365|366].
Il 28 diventa 29 e il 365 diventa 366 solo ogni 4 anni, MA ogni 100 il 28 non diventa 29 (e il 355 non diventa 366), MA ogni 1000 anni il 28 diventa 29 anche se siamo allo scadere del ciclo di 100 anni.
Il 60 puo' diventare 59 o 61 in maniera arbitraria nell'ultimo minuto del 31/12 o del 30/6.
E queste solo le (folli) REGOLE! Quelle che sono state citate nell'articolo sono (alcune) delle eccezioni.

Se poi uno vuole calcolare quando cade il lunedi' (festivo) di Pasqua deve usare le effemeridi delle fasi lunari perche' la Pasqua e' la prima domenica dopo il primo plenilunio di primavera.

Adesso oltre alle risorse online ci sono delle funzioni di libreria dei linguaggi di programmazione che di fatto fanno (quasi) tutto loro; anni fa queste cose ce le sognavamo e dovevamo codificarle noi. Per esempio e' facile con i linguaggi attuali prendere una data, assegnarla ad una time zone e dire "dammi la data/ora che risulta 'n' ore piu' tardi".

Nonostante il fatto che i linguaggi moderni abbiano queste comode funzioni, ci sono sempre dei programmatori che si credono piu' furbi del sistema e poi combinano casini come quello che ha messo a gambe all'aria Microsoft Azure nel 2012: http://blogs.msdn.com/b/windowsazure/archive/2012/03/10/summary-of-windows-azure-service-disruption-on-feb-29th-2012.aspx

E tralasciamo i problemi dell'anno 2000 e (minori) dell'anno 2010.

L'articolo andava munito di un avvertimento: attenzione la prosecuzione della lettura può provocare mal di testa.
Incomincio ad avere dubbi sulla mia vera età!
Ad ogni modo, se dovete dare appuntamenti non usate frasi tipo "ci vediamo alle hh:mm" ma sarebbe meglio dire "ci vediamo tra tot ore e tot minuti da adesso, senza secondi intercalari supplementari."
Il tempo non è complicato, siamo noi ad esserlo. Tutti questi problemi sono frutto del notro tentativo di adattare una cosa lineare (a meno di effetti relativistici) alle nostre contorte esigenza biologiche, economiche politiche e religiose.
E va anche detto che non tutti usano il calendario gregoriano, eh. Una mia amica iraniana segue quello persiano, che ha come il gregoriano la questione dell'anno bisestile, che però ha l'aggiunta di un giorno sfalsata. Il risultato? Negli anni bisestili le si fanno gli auguri per il compleanno un giorno prima! :P
Diceva Benigni:"Com'è complicato il tempo... Quando Dio ha fatto il tempo l'uomo ha scoperto che era composto da mesi di 30 giorni. Una volta scoperto questo Dio ha composto i mesi di 30 o 31 giorni ma l'uomo l'ha scoperto lo stesso. Allora ha fatto un mese di 28 giorni. Hanno scoperto anche questo? Ogni 4 anni di 29!"
@Luigi Rosa
Ogni 400 anni è bisestile (non ogni 1000):
sia 1600 che 2000 sono bisestili nonostante divisibili per 100...
Anzi un buon metodo di programmazione sarebbe:
if year is divisible by 400 then is_leap_year
else if year is divisible by 100 then not_leap_year
else if year is divisible by 4 then is_leap_year
else not_leap_year
[quote] contorte esigenza biologiche[/quote]
Le esigenze biologiche sono quelle meno contorte: un ciclo luce/notte - sonno/veglia = un giorno. Come base di misura va bene, visto che molti esseri viventi regolano la loro attività in tal modo. Quale altra unità di misura si potrebbe altrimenti adottare?
Quale altra unità di misura si potrebbe altrimenti adottare?

I cicli lunari, ad esempio. Le maree sono molto importanti per la vita biologica.
Solo perchè sono pignolo... Il Nepal è avanti 5 ore e 3/4!
Tutti questi problemi sono frutto del notro tentativo di adattare una cosa lineare (a meno di effetti relativistici) alle nostre contorte esigenza

Cosa c'è di lineare nel fatto che NESSUNO dei cicli fondamentali della natura (anno sidereo, anno tropico, stagioni, mese lunare con la sua frazione che è la settimana) ha una durata che sia un multiplo intero della durata del ciclo di base, il giorno?
E oltre a non essere un multiplo intero, non è neanche riducibile?
E non hai detto che per i GPS, per esempio, c'è bisogno di tener conto di effetti relativistici per calcolare il tempo correttamente!! Il tempo è relativo, non assoluto, quindi, come fanno diversi libri di fisica, la cosa migliore sarebbe usare c = 1, ħ = 1.. Ma capisco che non sarebbe comodo per tutti ;P
@Flavio Alescio - hai ragione, I stand corrected
Sbaglio o per le cose più delicate non si utilizza l'ora locale ma si fa riferimento a quella di Greenwich?

Ad esempio, per gli aerei di linea, gli orari "veri" di partenza e arrivo sono espressi in base all'ora di Greenwich e poi "tradotti" nel fuso orario locale.
Almeno così mi ha detto mio cuggino che quando pilota il suo aereo si lamenta sempre di quelli che vogliono lavargli il parabrezza quando è fermo al semaforo.
In Italia, vista la frammentazione in miriadi di staterelli, il capodanno poteva variare di città in città, con pazzie come Firenze e Pisa che avevano un "fuso orario" di un anno:
http://it.wikipedia.org/wiki/Stile_di_datazione
Non so se la cosa abbia lasciato traccia in altre lingue della penisola, ma ad esempio settembre in sardo si dice ancora Cabudanni, a riprova di una datazione che vedeva iniziare l'anno a fine estate.

"Time line?! This is no time to argue about time! We don't have the time." (cit.) :P
Vecchia ma sempre bella.

Per capire il valore di un anno, chiedi ad uno studente che ha perduto un anno di studio.
Per capire il valore di un mese, chiedi ad una madre che ha partorito prematuramente.
Per capire il valore di una settimana, chiedi all'editore di un settimanale.
Per capire il valore di un ora, chiedi a due innamorati che attendono di incontrarsi.
Per capire il valore di un minuto, chiedi a qualcuno che ha appena perso il treno.
Per capire il valore di secondo, chiedi a qualcuno che ha appena evitato un incidente.
Per capire il valore di un milionesimo di secondo, chiedi ad un atleta che ha vinto la medaglia d'argento alle Olimpiadi.

Sono sicuro che qualcuno ne avrà scritto la versione per nerd :)
@Replicante
per capire il valore di un milionesimo di secondo chiedi all'ammiraglio Grace Murray Hopper (gli atleti si accontentano del millesimo di solito, sotto c'è il parimerito)
@Massimo MUsante:
non ho capito il nesso all'ammiraglio.
Grazie a chi ha segnalato l'errore sul fuso orario balordo del Nepal! Ho corretto l'articolo.
Grazie Paolo (e l'amico Luca che ti ha RT): da oggi ignoro un po' meno... :-)
La prossima volta che volete sfottere uno svedese, ricordategli del 30 febbraio.
La divisione fra ora legale e ora solale è errata. L'ora è sempre legale, ad esempio in Italia abbiamo lo stesso orario in tutto il territorio per legge (o per convenzione, se vogliamo) mentre se dovessimo considerare il sole non è così. Si dovrebbe parlare di orario invernale ed estivo.
Occorre inoltre tenere conto della Teoria della Relatività, che ci ricorda che il tempo non scorre alla medesima velocità in luoghi, a velocità e ad accelerazioni differenti.
La velocità con cui scorre il tempo sulla superficie della Terra è diversa da quella con cui scorre all'aumentare della quota ed al variare della velocità e dell'accelerazione (il sistema GPS insegna! Se non fossero state introdotte tutte le appropriate correzioni negli orologi atomici a bordo dei satelliti, noi semplicemente 'non saremmo qui': la nostra posizione indicata varierebbe nel tempo, pur tenendo i nostri piedi ben saldi per terra!).
https://it.wikipedia.org/wiki/Sistema_di_Posizionamento_Globale#GPS_e_teoria_della_relativit.C3.A0
L'ora è sempre legale, ad esempio in Italia abbiamo lo stesso orario in tutto il territorio per legge

E' una questione di terminologia. Il fatto che un certo territorio ha un'ora convenzionale uguale per tutto il territorio si dice ora civile. La quale può essere solare se l'ora è uguale all'ora vera locale del meridiano centrale del fuso, legale se è avanti di un'ora (da noi).
martinobri

le ore sono sempre convenzionali: Kiribati che essendo alla stessa latitudine delle Hawai e della Polinesia Francese dovrebbe avere come fuso orario UTC-10 ha scelto di usare il fuso UTC+14 cioè di stare dall'altra parte rispetto alla linea di cambiamento di data, in un fuso orario che nemmeno dovrebbe esistere se la linea fosse fissata a 180° di longitudine.

Sul tempo in generale c'è un vecchio libro di Asimov, L'orologio su cui viviamo, del 1959, pubblicato da Mondadori nel 1973 davvero scorrevole e pieno di informazioni interessanti.
>le ore sono sempre convenzionali:

E io che ho detto? ;-)
martinobri

hai esposto due casi: ora solare ed ora legale ma se l'ora è avanti di 2 o 3 o 24 ore è un caso a parte? Inoltre, mi sembra che l'ora vera locale è quella che si riferisce al sole vero cioè tiene conto dell'equazione del tempo che varia fino a +/- 15' rispetto all'ora media che si riferisce ad un sole medio e che utilizziamo normalmente ;-).
Intanto, se volte conoscere l'ora esatta, potete seguire questo link: http://www.gnsalbion.org/chrono.html
martinobri, quello che volevo dire è che l'ora solare è tale solamente nei meridiani centrali del fuso sempre che tu utilizzi il fuso che ti dovrebbe competere. E lo è solo per un territorio molto ristretto perché già spostandoti un miglio nautico (1, 852km se fossi all'equatore, meno spostandoti verso i poli) il tempo solare è avanti o indietro di un minuto. Se scendiamo al secondo vuol dire che già solo spostandoti di 30m dal meridiano centrale (sempre all'equatore) già la tua ora non è più solare.
Se stai al polo già la definizione non ha più senso.
Per cui l'ora è sempre legale, civile o convenzionale, scegli il termine che vuoi, e mai solare per la stragrande maggioranza delle persone e del territorio.
@Scatola grande.

OK; però "ora legale" è un termine tecnico che vuol dire una cosa ben precisa. Non è uguale a "ora convenzionalmente stabilita"; ha un significato più ristretto.
Lo stesso per "ora solare".
Vi siete dimenticati del fuso orario delle riserve Navajo in Arizona. L'Arizona è nel fuso orario delle montagne rocciose d'inverno, ma non osserva l'ora legale d'estate. Quindi d'inverno ha la stessa ora del New Mexico, mentre d'estate ha l'ora della California.
Tranne se vi trovate in una riserva navajo, dove invece vige l'ora legale, e quindi d'inverno sarete nel fuso dell'Arizona, mentre d'estate in quello del New Mexico.