\"/
\"/ \"/    

Čekání na 01-01-00 (2)

Jana Kohoutková, ÚVT MU
Ročník V - číslo 5, květen 1995
Citace: J. Kohoutková. Čekání na 01-01-00 (2). Zpravodaj ÚVT MU. ISSN 1212-0901, 1995, roč. V, č. 5, s. 16-17.
Tematické zařazení: Různé
 předchozí článek | následující článek 

Stoletý občan je dotčen

Některé z obtíží zmíněných v předchozích kapitolách lze vyřešit docela jednoduše. Dvěma dekadickými číslicemi sice nelze vyjádřit více než 100 let, stoletý interval však lze zvolit libovolně; například lze navrhnout program tak, aby interpretoval roky 30 až 99 jako 1930 až 1999, a 00 až 29 jako 2000 až 2029. Tak může program krizi přelomu tisíciletí přežít (nebo ji alespoň o několik desetiletí oddálit). Za všechno na světě se ovšem platí, takže takto upravený systém bude náchylný k jiným chybám - zejména k uživatelům narozeným před rokem 1930 se bude chovat nadmíru neuctivě.

Ať už se data posouvají či přeskupují jakkoli, kalendářní systém, jenž pokrývá pouze konečnou časovou periodu, nutně někdy na nějakou hranici narazí. Nemusíme ani čekat na magickou půlnoc, jako bude ta 01-01-00, abychom se dostali do problémů. Výpočty prováděné se šesticifernými daty již vyvolaly nejedno pobouření. Například v roce 1992 obdržela přihlášku do mateřské školky Mary B., jejíž jméno bylo vyhledáno v databázi spolu s ostatními narozenými v roce 88; paní B. ovšem byly v té době 104 roky. Jiná anekdota hovoří o nemocničním počítači, který interpretoval krevní zkoušku 99-letého muže podle normy platné pro novorozence, atd. atd.

Existují i počítačové systémy, jejichž zabudované časové bomby mají rozbušku kratší než 100 let. 19. září 1989 zjistilo přes deset nemocnic, že jim počítače užívané v účetnictví a administrativě přestaly fungovat. Nikoli náhodou byl den 19. září 1989 32768-ým dnem po 1. lednu 1900. Několik týdnů nato vypověděly počítače provozující Michigan Terminal System - bylo to 16. listopadu 1989, tedy 32767 dní po 1. dubnu 1900. Satelity náležející ke Global Positioning System sledují datum přičítáním týdnů od 6. ledna 1980. Součet se udržuje jako 10-bitová hodnota, takže jeho maximální rozpětí je 1024 týdnů. Je zřejmé, že až se 21. prosince 1999 počitadlo přetočí, nabudou přijímače GPS dojmu, že je opět rok 1980. Avšak skutečnou Grand Prix za plánované zastarání si odnesl osobní počítač prodaný firmou AT&T uprostřed 80. let, jehož hodinám došlo tikání již koncem roku 1990.

Ani systémy, které přetrvají 20. století, se v novém tisíciletí daleko nedostanou. Hodiny operačního systému Unix dotikají v roce 2038, u Macintoshe v roce 2040, v MS-DOSu o 8 let později. Řada jiných počítačových systémů pokrývá časový interval od 1901 do 2099, pravděpodobně proto, že takto zvolené hraniční hodnoty zjednodušují výpočty přechodných let (2000 je běžný přechodný rok, roky 1900 a 2100 nikoli).

Pod nánosy prachu

Zkrácené formáty dat byly původně přijaty z důvodů, jež se ve své době nepochybně jevily jako přesvědčivé. Nač plýtvat pamětí na číslice, jež jsou vždy 1 a 9? Nač nutit uživatele, aby zadávali čtyři cifry, když první dvě jsou stále tytéž? Navíc některé nástroje,  něž se programátoři spoléhají, podporují či si zcela vynucují omezený časový horizont. Programovací jazyk COBOL používaný v tolika obchodních a finančních aplikacích definuje rok jako dvouznakový datový typ. Ada, zákonem nařízený programovací jazyk Ministerstva obrany USA, patří k systémům typu 1901-až-2099. Když se tato rozhodnutí činila, každý věděl, že čas bude pracovat proti nim, ale den zúčtování se tehdy zdál být daleko. Programátoru "cobolujícímu" účetnický systém banky v roce 1962 se musela představa, že by se jeho program mohl používat i v roce 2000, zdát směšná a namyšlená. Není divu, při omezené délce lidského života a závratné rychlosti vývoje technologií je skutečně každý záměr vybudovat zařízení se stoletou životností hodný nařčení z "daleko"zrakosti.

Nuže, den 01-01-00 se blíží. Čtenáři Risks Fora mají jasnou představu, jak bude probíhat. První varovné zprávy přijdou z Nového Zélandu, což je "královský ochutnávač" problémů s počítačovými hodinami. Poté se krizová vlna převalí přes Asii, Afriku a Evropu; z obou Amerik bude blížící se pohromu zřetelně vidět, ale pravděpodobně nebude v lidské moci udělat cokoli, co by ji mohlo zastavit.

Jak tak nejrůznějších potíží s počítači přibývá, stávají se problémy se zkrácenými a cyklickými daty stále významnějšími a zřetelnějšími. Mnohé z nich by přitom bylo možno odstranit jednoduchými změnami. Obyčejné vyčlenění čtyř cifer na vyjádření roku by nás například ochránilo na dalších osm tisíciletí. Naléhavý úkol odvrátit katastrofu zvanou 01-01-00 však nekoření v samotných počítačích; jde tu o tzv. "problém zaprášených balíků". Tento termín pochází z období děrných štítků - stejně jako leckterý dosud provozovaný software. Tak onen účetní systém napsaný v roce 1962 může být stále ještě jádrem každodenních operací některých bank, ačkoli je dnes překryt již silnou vrstvou dodatků a záplat a už dávno nikdo přesně neví, jak ve skutečnosti pracuje. "Zděděný systém", tak se takovému softwaru říká. Měnit nějaký poděděný systém v otázce tak základní, jako je formát data, je něco jako měnit pneumatiku za jízdy. Je to nesmírně delikátní operace a vůbec není předčasné začít s ní již nyní.

Skutečnost, že mezi zprávami Risks Fora jednoznačně převažují ty o selhávání funkcí souvisejících s kalendářem, naznačuje, jak obtížné je výpočty dat vyladit. Zkuste jen spočítat počet dní mezi 12-20-99 a 01-10-00 - nejprve s využitím základní aritmetiky a poté, neboť máte oprávněné pochyby o své aritmetické zručnosti, zadejte totéž svému spreadsheetu. Uvidíte, že se výsledky budou lišit (i poté, co odstraníte všechny překlepy) o 1 den. Zaujme-li vás ten oříšek, zjistíte nakonec, že chyba je ve vašem spreadsheetu, který považuje rok 1900 za přestupný.

Když se posledně kalendářní čítače přetočily na řádek se třemi nulami, byl to v historii lidstva bouřlivý okamžik, s nímž křesťanský svět nervózně spojoval konec světa. Dovršení prvního tisíciletí se považovalo za okamžik apokalypsy, za předpovězený Soudný den. Nepochybně byli mnozí zmateni, a snad i zklamáni, když rok 1000 nastal a klidně pokračoval, a slunce nepřestalo pravidelně a spolehlivě vycházet a zapadat. Jenže pozor:

Na konci prvního tisíciletí ještě neexistovaly počítače!

Zpět na začátek
ÚVT MU, poslední změna 14.11.2011