Pamięć podręczna

Gdyby ktoś zapytał, jakie dzisiaj są najbardziej palące problemy inżynierii oprogramowania, ktoś podałby wyszukiwanie pełnotekstowe w wielkich zbiorach danych, programowanie współbieżne albo wydajne rozwiązywanie problemu komiwojażera.

Gdyby ktoś zapytał, jakie dzisiaj są najbardziej palące problemy inżynierii oprogramowania, ktoś podałby wyszukiwanie pełnotekstowe w wielkich zbiorach danych, programowanie współbieżne albo wydajne rozwiązywanie problemu komiwojażera.

Myślę, że bardzo istotnym problemem, którego informatyka nadal nie rozwiązywała, jest problem daty.Nie chodzi o żadną konkretną datę, np. 1 stycznia 2000 r., ale generalnie, o zapis daty w systemach informatycznych. Największym kłopotem, tradycyjnie, jest format zapisu. O ile nietrudno domyślić się, co znaczy 21.03.1999, to już odszyfrowanie daty 02.03.01 bez znajomości kontekstu nie jest możliwe. Rzadko kiedy ten kontekst jest znany, a ustawienia regionalne (locale) wprowadzają więcej zamieszania niż porządku, gdyż najczęściej inne są w systemie operacyjnym, inne w środowisku użytkownika, a jeszcze inne w bazie danych.

Arytmetyka dat to kompletna katastrofa. Widziałem typy danych, w których dodanie 30 dni do 21 grudnia dawało w wyniku 20 dzień trzynastego miesiąca w roku. Widziałem typy danych, w których obliczenie liczby dni między 1 stycznia roku 1900 a 1 stycznia roku 2000 trwało minutę. Visual Basic, zapisujący datę i czas na liczbie zmiennoprzecinkowej, jest bodaj najgorszym przykładem, bo nie sposób operować datami bez wiedzy o ich wewnętrznej reprezentacji.

Ewidentnie niedoróbki pokrywane są nadmiarem "inteligencji". Przykładem jest Excel, który komórkę z zapisanym 3/4 natychmiast przerobi na format daty i uzna, że jest to 4 czerwca 2003, choć w Europie nikt w ten sposób nie zapisałby daty.

Mam bardzo osobisty powód, żeby domagać się rozwiązania problemu daty. W lutym 2001 r. gościłem w Kalifornii. Po "oficjalnej" części wizyty wypożyczyłem samochód w Los Angeles, by przejechać słynną Highway 1 do San Francisco. W miejscowości Capitola zatrzymałem się na nocleg w motelu. Przy rejestrowaniu się podałem pani kartę kredytową, ona zaś przeciągnęła ją przez maszynę i mechanicznie oddała mi. Wtedy maszyna wydała kilka nieprzyjemnych dźwięków i napisała, żeby natychmiast przeciąć kartę i dzwonić po policję. Recepcjonistka popatrzyła na mnie jak na ściganego kryminalistę, ale na szczęście trzymałem już kartę w ręku. Bezwiednie sięgnąłem do wewnętrznej kieszeni kurtki, by wyciągnąć paszport. Dopiero potem zdałem sobie sprawę, że ten ruch mógł kosztować mnie życie, gdyby recepcjonistka była bardziej nerwowa i miała pod ręką broń. Przez około 15 minut spokojnie dowodziłem, że ja to ja, a karta jest OK. Chyba dobrze to zrobiłem, bo pani spisała numer karty oraz moje dane, poradziła mi don't worry i wysłała mnie do najbliższego baru, żebym spokojnie zjadł kolację. Jeszcze widzę ten obrazek: siedzę sam przy stole, jem hamburgera monstrualnych rozmiarów i zastanawiam się, czy i gdzie będę jadł następny posiłek. Gotówki miałem w sam raz na jedzenie, spanie albo samochód - ale nie na choćby dwie z tych rzeczy. No i stale istniała możliwość, że tę noc spędzę na koszt kalifornijskiego podatnika w lokalnym areszcie.

Tajemnica wyjaśniła się, gdy wróciłem z posiłku. Otóż data ważności na pasku magnetycznym była zapisana w postaci 01.10.2001 - co oznaczało, w myśl europejskich standardów, 1 października 2001. Terminal w Capitola Inn odczytał to jako 10 stycznia 2001 i karta została uznana za nieważną. Na szczęście wystarczył jeden telefon do firmy MasterCard - no i oczywiście recepcjonistka o silnych nerwach.

Tak czy owak, mamy coraz szybsze komputery i coraz więcej informacji w Internecie, ale problem daty pozostaje nie rozwiązany.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200