Bug of the Year 2000

Negli ultimi anni del secolo scorso, il famigerato “Bug of the Year 2000” ha suscitato preoccupazione in tutto il mondo. Molti credevano nel caos apocalittico e nel crollo della civiltà causato dal fallimento di computer, sistemi pubblici, banche e qualsiasi dispositivo che avesse un chip che calcolasse le date con solo 2 cifre all’anno.

La Y2K, o “Bug of the Year 2000” appunto, è stato un grattacapo per migliaia di manager di computer e IT alla fine del secolo scorso. Il famigerato bug minacciava di attaccare qualsiasi computer che utilizzava un formato data a due cifre per l’anno, ad esempio “17/01/97”.

Questo formato, che per ridurre al minimo l’uso della memoria del computer entro il 19 prima dell’anno, era utilizzato dai primi programmatori di computer che, negli anni ’50 e ’60, non sospettavano a cosa sarebbero giunti i sistemi informatici che stavano creando – ovvero avere una vita più lunga del previsto e sopravvivere fino all’anno 2000. O, nel formato che hanno usato, fino all’anno 00.

Il problema è che a mezzanotte del 31 dicembre 1999, i computer presumevano che la data corrente fosse il 01/01/00, cioè il primo giorno del gennaio 1900. Questo comportamento avrebbe potuto causare una varietà di problemi, piccoli e grandi: dalle banche che calcolano i tassi di interesse negativi, le attrezzature ospedaliere che avrebbero potuto chiudere perché non era un giorno lavorativo, i registri delle persone viventi in età negativa. I problemi potevano essere moltiplici e avere un grande impatto.

Il metodo utilizzato per risolvere il problema a lungo termine è stato quello di riscrivere tutti i componenti dei sistemi di programmazione, i database e il codice sorgente per utilizzare le date dell’anno a quattro cifre, il che ha richiesto tempo e denaro. Migliaia di programmatori e aziende hanno trascorso anni riscrivendo il codice e scambiando i sistemi con nuove versioni con un formato a 4 cifre per l’anno.

Tuttavia, non tutti i responsabili IT hanno scelto di risolvere definitivamente il problema. Alcuni hanno usato una soluzione rapida che l’ha semplicemente rimandata al 2020. E quando tutti pensavamo di essere sopravvissuti al Bug dell’anno 2000, una serie di incidenti ha portato alla luce un nuovo problema: l’Y2020.

 

Y2020

La soluzione rapida per il bug Y2K scelto da alcuni programmatori era quella di usare una tecnica di windowing, inserendo le subroutine nel codice in modo che ogni volta che l’anno fosse “inferiore a 20”, il sistema ne assumeva un 20 prima. Cioè, all’ultimo squillo del 31/12/(20)19, alcuni sistemi sono tornati allo 01/01/1900.

La tecnica utilizzata da molti programmatori nel 2000 per risolvere il bug Y2K, chiamato informalmente “anno centrale“, causa problemi simili a quelli dell’anno 2000. Nel sistema di dati a due cifre, “20” diventa l’anno centrale.

Ciò significa che i dati contenenti un anno a due cifre compreso tra “00-20″ saranno trattati come post-2000, mentre gli anni tra 20 e 99 saranno interpretati come riferiti al secolo precedente. I sistemi che usano l'”anno centrale” ora credono che siamo tornati nel 1920.

Il problema è già stato avvertito. I parchimetri a New York, ad esempio, hanno rifiutato i pagamenti con carta di credito dopo che il software obsoleto ha disabilitato l’opzione di pagamento di Capodanno. Il Dipartimento dei trasporti, sta ancora vagando per la città per aggiornare manualmente i 14.000 parchimetri uno per uno.

Venti anni fa, il 2020 sembrava abbastanza lontano tanto che molti programmatori avrebbero ancora scelto 20 come “l’anno centrale”, supponendo che nel frattempo la maggior parte dei sistemi e dei codici sarebbero stati sostituiti. Finora, i sistemi interessati sono stati riparati rapidamente e alcune aziende hanno presentato patch prima del nuovo anno. Tuttavia, sempre meno specialisti sono in grado di intervenire in questi sistemi e sempre più paradigmi di programmazione si stanno allontanando dal modo in cui questi linguaggi antichi sono stati implementati.

Quindi, per coloro che hanno appena risolto il problema per un paio di decenni, i problemi sono appena ricominciati. Per quanto riguarda gli altri, nessuno dovrebbe essere qui il 31 dicembre 9999.