W świecie oprogramowania biurowego, Microsoft Excel uchodzi za narzędzie niemal doskonałe, fundament analizy danych. Okazuje się jednak, że nawet ten gigant ma swoje skamieliny – błędy zakodowane przed dekadami, które firma z Redmond postanowiła zachować dla zachowania kompatybilności. Jednym z najbardziej kuriozalnych jest obsługa daty 29 lutego 1900 roku.
Dzień, którego nie było
Każdy, kto kiedykolwiek pracował z datami w Excelu, przyzwyczaił się, że program bezbłędnie radzi sobie z obliczeniami kalendarzowymi. Istnieje jednak jeden wyjątek, który jest świadomym błędem. Excel traktuje rok 1900 jako rok przestępny, dodając do niego 29 dzień lutego. W rzeczywistości, zgodnie z regułami kalendarza gregoriańskiego, rok 1900 nie był rokiem przestępnym. Zasada mówi, że lata podzielne przez 100 nie są przestępne, chyba że są również podzielne przez 400. Stąd 2000 był rokiem przestępnym, ale 1900 już nie.
Dziedzictwo Lotus 1-2-3
Źródło tego błędu sięga początków ery komputerów osobistych i konkurencji dla Excela. Jak wyjaśnia Microsoft w oficjalnej dokumentacji, decyzja o uwzględnieniu nieistniejącego dnia została podjęta celowo dla zachowania kompatybilności z programem Lotus 1-2-3, który w latach 80. był dominującym arkuszem kalkulacyjnym. Lotus 1-2-3 zawierał ten sam błąd, a Microsoft, chcąc ułatwić użytkownikom migrację i zapewnić bezproblemowe otwieranie istniejących plików, postanowił go skopiować.
Naprawienie tego błędu w nowszych wersjach Excela spowodowałoby katastrofalne konsekwencje dla wszystkich historycznych arkuszy, które przez dziesięciolecia opierały swoje obliczenia na tej nieprawidłowej sekwencji dat. Niespójność w wynikach mogłaby wpłynąć na systemy finansowe, prognozy i analizy, których integralność danych jest kluczowa.
Konsekwencje dla użytkowników
Dla przeciętnego użytkownika ten błąd jest w większości przypadków niezauważalny. Wpływa on na obliczenia dotyczące dat wcześniejszych niż 1 marca 1900 roku. W praktyce oznacza to, że:
- Różnica w dniach między datami obejmującymi ten okres może być przesunięta o jeden dzień.
- Funkcje tygodniowe, takie jak DZIEŃ.TYG (WEEKDAY), zwracają nieprawidłowe wartości dla 29 i 30 lutego 1900 roku.
- Jest to przede wszystkim ciekawostka historyczna i inżynieryjna, ale stanowi doskonały przykład kompromisu między czystością kodu a praktycznymi potrzebami użytkowników.
Microsoft w swojej dokumentacji stwierdza wprost: „Ten błąd został celowo wprowadzony dla zgodności z Lotusem 1-2-3 i nie zostanie naprawiony”.
Decyzja Microsoftu pokazuje priorytety w rozwoju oprogramowania korporacyjnego na ogromną skalę. Czasami utrzymanie stabilności i kompatybilności wstecznej jest ważniejsze niż absolutna matematyczna czy kalendarzowa poprawność. Ten „dzień-widmo” w Excelu pozostanie więc z nami prawdopodobnie na zawsze, jako swego rodzaju pomnik wczesnej ery informatyki i świadectwo walki rynkowej, której ślady są zakodowane w najdrobniejszych szczegółach oprogramowania.
Foto: cdn-sw.spidersweb.pl






















Leave a Reply