profil

Problem roku 2000

drukuj
satysfakcja 17 % 6 głosów

Treść
Obrazy
Wideo
Komentarze



We wczesnym okresie komputeryzacji, kiedy maszyny mogły przetwarzać bardzo ograniczoną ilość danych, konstruktorzy i programiści postanowili reprezentować daty w formacie sześciocyfrowym ddmmyy. Dzień 1 stycznia 1980, który jest domyślny w BIOS-ie wielu komputerów, jest reprezentowany jako 010180, a Boże Narodzenie w bieżącym roku jako 251299. Zauważmy, że w tej wczesnej reprezentacji daty dzień, miesiąc i rok nie są rozdzielone żadnymi separatorami, takimi jak kropki czy kreski. Jest tak dlatego, że programiści chcieli zaoszczędzić jak najwięcej miejsca, rezygnując ze wszystkich znaków, które nie były absolutnie konieczne. Reprezentacja daty np. jako dd.mm.yyyy wymagałaby dziesięciu znaków, podczas gdy format ddmmyy zajmuje ich jedynie sześć. Zatem na każdym wystąpieniu wartości typu data programiści zaoszczędzali cztery znaki. Gdyby wybrano format ośmioznakowy, np. ddmmyyyy, problem Y2K nigdy by się nie pojawił. W takim przypadku rok byłby reprezentowany w całości. Przez cały wiek XX panował zwyczaj pomijania "19" przy podawaniu roku i nie sprawiało to problemów, ale z chwilą przejścia z dnia 31 grudnia 1999 r. na dzień 1 stycznia 2000 r. wszystko ulega zmianie. Po 311299 otrzymamy 010100 - albo coś zupełnie innego. Kto zdumiewa się w tej chwili nad krótkowzrocznością dawniejszych programistów, niech sobie uświadomi, że podstawowe decyzje były podejmowane w latach sześćdziesiątych. Biorąc pod uwagę szybkość rozwoju informatyki, również w tamtych czasach, oraz rosnącą potrzebę stosowania systemów przetwarzających wielką i różnorodną ilość danych, jest rzeczą naturalną, że programiści robili co było możliwe bez kłopotania się o jakże odległą wtedy przyszłość.
Niestety, odległa przyszłość stała się teraźniejszością. Zagrożenia nierozłącznie kojarzone z nadejściem nowego millennium, mogą niestety wystąpić o wiele wcześniej. Do najbardziej niebezpiecznych dat należą:
1 stycznia 1999 (01/01/99 data często używana jako nieistniejąca)
9 września 1999 – podobnie
19 września 1999 –podobnie
1 stycznia 2000 – najbardziej niebezpieczna data
29 lutego 2000 – rok 2000 jest rokiem przestępnym
1 marca 2000 – czy występuje bezpośrednio po 29 lutego 2000
Dwucyfrowy zapis roku został wprowadzony na początku upowszechniania się komputerów, w okresie gdy były one jeszcze mało wydajne i trzeba było liczyć się z każdym najmniejszym bitem informacji.

Zrezygnowano więc z 4-cyfrowego zapisu daty na rzecz dwucyfrowego. Taki sposób zapisu dat posiada kilka zalet:

1/ przyspiesza sortowanie dużych baz danych oraz wykonywanie obliczeń
2/ skraca czas potrzebny do przesyłania danych
3/ ułatwia projektowanie ekranów, formularzy, okien i wydruków
4/ zmniejsza ryzyko popełnienia pomyłki przy wprowadzaniu danych przez operatora
5/ zużywa mniej pamięci operacyjnej i masowej.
Niestety data zapisana w postaci 6 cyfr nie precyzuje stulecia ani tysiąclecia.

Kalkulacje przeprowadzane na tak zapisanych datach nie będą działać poprawnie ponieważ daty obejmujące XXI w. nie będą widziane, ponieważ będą one większe niż występujące w obecnym stuleciu. Przykład: 2000 – 1998 = 2 ale 00 – 98 = -98. (lub 98 jeżeli program nie pokazuje ujemnych cyfr). Dwucyfrowy zapis daty przyjmuje że mamy do czynienia z rokiem 1900.
Kolejnym problemem jest oblicznie roku przestępnego. Rok przestępny jest obliczany przy pomocy określonych reguł. Niestety istnieje oprogramowanie, które nie rozpoznaje roku 2000 jako roku przestępnego. Spowoduje to począwszy od 29 lutego niezgodność dat o jeden dzień. Zasady dla kalkulacji roku przestępnego są następujące. Rok jest rokiem przestępnym jeżeli jest podzielny przez 4, lecz jeżeli jest podzielny przez 100 nie jest, lecz jeżeli jest podzielny przez 400 jest rokiem przestępnym. Rok 2000 jest specjalnym przypadkiem roku przestępnego występującym raz na 400 lat.
Trzeci problem dotyczy przede wszystkim starszych systemów. Aby zapisać bardziej wydajny kod, który zużywałby mniej pamięci, pola dat były czasem używane do dostarczania specjalnych funkcji. Najbardziej powszechną datą używaną do tych celów była 9/9/99, której przypisano znaczenie “zachowaj na zawsze” lub “usuń automatycznie po 30 dniach lub “sortuj pole jako pierwszą pozycję w raporcie”. W różnych firmach specjalne kody dat mogły być używane różnorodnie. Jest to jeden z głównych powodów dla których żadne pojedyncze narzędzie nie może zlokalizować wszystkich różnorodnych zastosowań pola daty. Technicznie problem jest prosty do zrozumienia. Rozwiązanie problemy zdaje się być równie proste. Jednakże główną trudnością w rozwiązaniu problemu jest jego rozmiar. Każdy system czy oprogramowanie muszą być wzięte pod uwagę.
Więc jak wszyscy widzą problem roku 2000 nie jest wyimaginowaną fantazją jakiegoś programisty, lecz problemem, który może dotknąś wszystkich i jest to niebagatelny problem, gdyż nie ma na niego 100 % lekarstwa.


Przydatna praca? Tak Nie
Wersja ściąga: problem_roku_2000.doc
(0) Brak komentarzy