Je tam schovaný a funguje ako základný časový kameň, od ktorého počítate všetky dátumy vo svojich tabuľkách. A keď sa naň pozriete bližšie, možno v ňom zbadáte 8-bitové lístky lotosového kvetu. Ponorte sa s nami do nášho seriálu Čriepky z histórie IT a poodkryte s nami závoj nad zaujímavosťami poschovávanými v dnes už často zabudnutých zákutiach času.
Microsoft Excel nesprávne považuje rok 1900 za priestupný. Ak v rámci svojich výpočtov a tabuliek budete chcieť tento rok používať, uvidíte, že sa medzi 28. februárom a 1. marcom nachádza ešte 29. február.
V základe je to tak trochu mysteriózne a čudesné.
Priestupný rok totiž nastáva každé štyri roky. Presnejšie, nastáva v každom roku, ktorý je deliteľný štvorkou, s výnimkou okrúhlych dátumov storočí (ako 1900, 2000, 2100), ktoré sú priestupnými rokmi iba v prípade, že sú deliteľné 400.
Rok 1900 teda priestupným byť nemá.
To, že Excel tento rok považuje za priestupný a vkladá do neho 29. február, je očividnou chybou, z ktorej vyplýva zlé počítanie dní a dátumov odohrávajúcich sa predtým.
Táto chyba pôvodne vôbec nevznikla v Microsofte, ale v jeho niekdajšej priamej konkurencii, vo firme Lotus, niekedy okolo roku 1982, kedy sa programoval onedlho najpoužívanejší tabuľkový procesor v podobe programu Lotus 1-2-3.
To, prečo presne k tejto chybe došlo nie je známe, avšak keďže často platí, že najjednoduchšie vysvetlenie je obvykle správne, bolo to zrejme preto, že sa tým nikto príliš nezaoberal a daný mechanizmus skrátka vznikol preto, že bol veľmi priamočiary a jednoduchý.
Rok 1900 sa vzal ako koreňový dátum a pripočítaním alebo odpočítaním 4 sme dostali priestupný rok, čím sa z roku 1900 stal priestupný rok takisto. Nikto to neriešil, pretože pre 60., 70., 80. a budúce 90. roky, ktoré sa s týmto programom používali a mali používať, všetko fungovalo a nikto s modernými počítačmi v kanceláriách neriešil veci čo sa odohrávali na prelome 19. a 20. storočia.
Lotus 1-2-3 sa stal v prvej polovici 80. rokov suverénne najpoužívanejším tabuľkovým programom na ranných IBM PC, Macintoshoch od Apple a ďalších počítačoch.
Keď v polovici 80. rokov pripravoval Microsoft svoj Excel, a plánoval žezlo kráľa tabuľkových programov prevziať, potreboval urobiť presedlanie pre používateľov a hlavne firmy celkom bezproblémové.
A aby dátumy v starých dokumentoch správne fungovali, Microsoft skrátka musel dané chybné chovanie Lotusu skopírovať. Tento bug teda do Excelu úmyselne vložil, s predpokladom, že kompatibilita otváraných starých dokumentov je na prvom mieste a keďže nikomu to vlastne nevadilo ani v programe Lotus 1-2-3, nebude to nikomu vadiť ani v Exceli.
Táto chyba sa tak objavila v prvom vydanom Exceli v roku 1987 a pokračovala aj v ďalších, pričom existuje aj v súčasnej najnovšej verzii Excelu v roku 2022.
Navyše, tento bug je už vďaka Microsoftu aj súčasťou medzinárodnej špecifikácie ISO (International Standards Organization) a takisto ECMA (European Computer Manufacturers Association), kde je tento bug v rámci kancelárskeho Open XML formátu dokumentov štandardizovaný.
Každá aplikácia, ktorá tieto dokumenty otvára a vytvára má teda považovať rok 1900 v základe za priestupný, aj keď ním nie je a tak to bude na veky vekov, amen.
PREČO MICROSOFT TENTO ARCHAICKÝ PROBLÉM NIKDY NEOPRAVIL A ANI NIKDY NEOPRAVÍ?
Súčasných používateľov Excelu v roku 2022 už asi ťažko bude zaujímať kompatibilita s historickým DOS programom zo začiatku 80. rokov minulého storočia, ktorý už navyše celé dekády ani neexistuje
Prečo teda Microsoft, napríklad v roku 2000, alebo aspoň v rokoch 2006 až 2010, keď sa Office XML formát dokumentov otváral a štandardizoval, tento bug konečne neopravil?
Oprava je technicky možná a jednoduchá. Problémom je, čo by spôsobila.
Prakticky všetky dátumy, ktoré momentálne v Excel dokumentoch máte a ktoré existujú v miliardách vytvorených dokumentov najrôznejšej komplexnosti, by po otvorené v novom „opravenom“ Exceli klesli o jeden deň.
Opraviť toto správanie, či už v rámci manuálnej práce používateľa s prepisom všetkých údajov, alebo v rámci nejakého mechanizmu, ktorý by to dodatočne riešil by si vyžiadalo obrovské úsilie a šlo by o zlom v priamej spätnej kompatibilite s predošlými verziami Excelu.
Popletené by boli nielen vzorce, pracujúce s dátumami priamo, ale aj nadväzné funkcie, ako napríklad WEEKDAY, určujúca deň v týždni, pretože štvrtok 29. február 1900 nikdy neexistoval
V mnohých ďalších funkciách a vzorcoch by sa mohlo objaviť rôzne neštandardné správanie, alebo by sa neštandardne a s popletenými dátumami mohli začať správať nadväzné programy, ktoré napríklad z Excel dokumentov môžu automaticky čítať.
Skrátka všetko je to obrovský zástup väčších, menších, známych a takisto ešte aj neznámych problémov, ktoré by sa po inak jednoduchej oprave zrazu vyrojili ako nahnevané včely z úľa.
Porovnajte to s tým, čo sa stane, ak Microsoft túto chybu naopak nikdy neopraví:
Nič.
Keďže absolútne drvivá väčšina používateľov vo svojich tabuľkách nepoužíva dátumy z pred roka 1900, prejavenie problému s tým, že v roku 1900 existuje 29. február je veľmi raritné.
A práve preto Microsoft túto chybu už 40. rokov nechce/nemôže opraviť a zrejme aj ďalších 40 rokov neopraví.
Ďalšie drobné čriepky z IT histórie hľadajte na našom webe už najbližší štvrtok večer a takisto pod rovnomenným kľúčovým slovom.