Ako Microsoft naschvál vložil bug do Excelu a už 40 rokov ho nemôže opraviť
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.
Podobné články
Najlepšie seriály na Netflixe (50. týždeň)
Vyhrajte smart hodinky Xiaomi Watch S4
Ako vybaviť poštu pred Vianocami bez dlhého čakania?
Warner Bros. Discovery odmietlo Paramount a chce rokovať s Netflixom


