Problem roku 2038 i jego faktyczne konsekwencje

Z pewnością każdy z was pamięta szum medialny, który rozpętał się wokół tzw. pluskwy milenijnej (z ang. millenium bug, 2kY problem) - nazwanej w ten sposób mimo tego, że nie była to ani pluskwa, ani nie rozpoczynało się wtedy nowe milenium. Kasandryczne wizje ówczesnych analityków nie były przesadzone - światu naprawdę groziła potężna katastrofa, a jej uniknięcie zawdzięczamy przygotowanym w porę środkom zaradczym. Problem polegał na dwucyfrowym zapisie daty, który sprawdzał się idealnie w latach 70., 80., i 90. Chodzi o to, że “00”, które odpowiada w tej formie notacji rokowi 2000, przez komputer mogłoby być interpretowane jako rok...1900. Co ciekawe, to nie był ostatni kłopot z zapisem czasu w historii informatyki, bowiem za niecałe 24 lata, a konkretnie we wtorek 19 stycznia 2038 roku o godzinie 3:14:07 czasu GMT, okaże się, czy wszystkie komputery na świecie zostały przygotowane na zapowiadany od dawna sądny dzień. To właśnie problem roku 2038.

Skąd problem roku 2038?

Jeśli nie uda się wprowadzić odpowiednich zmian, nieprzygotowane urządzenia elektroniczne sekundę po pokazaniu wymienionej wyżej daty przestawią się na 20:45:52, 13 grudnia… 1901 roku. Co spowoduje taką podróż w czasie? Wszystko ma swoje źródło w latach 70., kiedy projektowano pierwsze systemy UNIX - architektura współczesnych OS-ów jest w dużej mierze oparta na tamtych pracach. Do przedstawiania czasu użyto wtedy 32-bitowej zmiennej, która może przyjmować wartości od -2147483648 do 2147483648 - w tym przypadku liczby te reprezentują sekundy. Jako datę “początku świata” ustanowiono wówczas 1 stycznia 1970 roku. Przeliczając maksymalną wartość zmiennej - 2147483648 sekund - na lata, otrzymamy wspomnianą wcześniej styczniową datę w 2038 roku. Gdy zasób liczb się wyczerpie, zmienna przybierze maksymalną wartość ujemną, czyli 2147483648 sekund przed datą “początku świata” - czyli czas się cofnie o prawie 137 lat. W przypadku niektórych komputerów Apple, które zawierają systemy używające wspomnianej 32-bitowej zmiennej, katastrofa nastąpi trochę później - konkretnie 6 lutego 2040 roku o godzinie 6:28:15 GMT.

W zasadzie nie wiadomo, czemu naukowcy wybrali akurat tą zmienną do reprezentacji czasu - mogli bowiem skorzystać z 64-bitowej, która daje znacznie szerszy zakres czasowy, dłuższy nawet od wieku Wszechświata. Być może przyczyną był brak myślenia perspektywicznego - bo kto by się zastanawiał, jaki kłopot będą mieli ludzie 68 lat później? Może winowajcy spodziewali się, że za prawie siedem dekad ludzkość poradzi sobie z podrzuconym gorącym kasztanem bez najmniejszych trudności - kto wie.

Problem roku 2038 - co się stanie?

A jakie mogą być konsekwencje nagłego cofnięcia się czasu w związku z problemem roku 2038? Ogromne - zarówno specjalistyczne urządzenia, jak i zwykle komputery domowe korzystają z oznaczeń czasu. Wyobraźmy sobie, że w nowoczesnej fabryce, gdzie każdy komponent musi znaleźć się dokładnie o określonej porze we właściwym miejscu, nagle przestaje działać zegar, który służy sterującemu wszystkim komputerowi do inicjowania procesów. Wyobraźmy sobie laboratoria, w których precyzja mieszania składników chemicznych jest kluczowa. Pomyślmy o systemach automatycznego sterowania ruchem kolejowym oraz metrem, które “zgłupieją”, gdy czas nagle cofnie się o ponad półtora wieku. Przestaną działać systemy naprowadzania samolotów i rakiet, które przewidywany czas wystąpienia określony zdarzeń ustalają za pomocą pomiarów czasu. Ogólnie rzecz biorąc - za niecałe 24 lata świat może nawiedzić katastrofa, która przyczyni się do miliardowych strat i śmierci tysięcy ludzi. Czy problem roku 2038 jest nieunikniony?

Nie. Już teraz sporo komputerów (ale wciąż mniejszość) korzysta z nowocześniejszych, 64-bitowych systemów operacyjnych, które czas zliczają według nowej, pojemniejszej formuły. Ktoś może powiedzieć: przecież do 2038 roku wszystkie systemy i wszystkie aplikacje z pewnością będą napisane “po nowemu”. To akurat nie jest takie pewne - skoro rozwiązanie sprzed ponad czterdziestu lat jest tak żywotne nawet teraz, to nie można z góry zakładać, że za kolejne dekady stanie się kompletnie martwe. Nie ma jednak co załamywać rąk - trzymajmy kciuki za to, żeby programiści i producenci komputerów nie zlekceważyli takiego zagrożenia jak problem roku 2038. A sami możemy się przyczynić do zmiany, przesiadając się z 32-bitowych na 64-bitowe systemy operacyjne - takie jak Windows 7 lub 8 (wyszła też taka wersja XP, ale oprogramowanie to przestało być już wspierane przez Microsoft).