Pewnie pamiętacie ten hałas. Jeśli byłeś online w 1999 r., zostałeś zasypany ostrzeżeniami. Internet był pełen retoryki o dniu zagłady. Media głównego nurtu traktowały nadejście nowego tysiąclecia jak tykającą bombę zegarową. Wszyscy mówili o problemie 2000. Jednak patrząc wstecz na chaos, panika wydaje się niemal absurdalna. Jaki był prawdziwy problem? To nie była magiczna apokalipsa. Było to proste dziwactwo w sposobie, w jaki programiści obchodzili się z datami.

Jak dwucyfrowy rok spowodował błędy w obliczeniach

Źródłem problemu jest lenistwo, a może i oszczędność. Przez dziesięciolecia kod komputerowy wykorzystywał tylko dwie cyfry do oznaczania roku. Widać to wszędzie w starszych systemach. Data wygaśnięcia pliku może wyglądać następująco: „31.08.99”. Programiści zrobili to, aby zaoszczędzić miejsce na dysku. Dyski twarde były kiedyś małe i drogie. Zapisanie „99” zajmowało mniej miejsca niż „1999”. Zgadzało się to również ze sposobem, w jaki ludzie zapisywali daty na czekach. Nikt nie spodziewał się, że oprogramowanie napisane w 1970 roku będzie nadal działać trzydzieści lat później.

Nawyk ten stworzył konkretną lukę w logice. Gdy zegar pokazywał „00”, program nie wiedział, czy oznacza to rok 1900, czy 2000. Większość systemów domyślnie przestawiała się na przeszłość. Zakładali, że stulecie to nadal lata 1900. Wydaje się to nieistotne, dopóki kod nie spróbuje wykonać operacji matematycznych.

Oprogramowanie stale oblicza różnicę czasu. Musi znać twój wiek. Sprawdza, czy gwarancja nie wygasła. Planuje płatności. Operacje te wymagają odejmowania. Weź dzisiejszą datę i odejmij od niej swoją datę urodzenia.

„Jeśli program uzna, że ​​dzisiejsza data to 1.01.00, a Twoja data urodzenia to 1/1/65, może obliczyć, że masz -65 lat, a nie 35 lat.”

Ta liczba ujemna psuje wszystko. Polisy ubezpieczeniowe mogą nie zostać prawidłowo odnowione. Systemy bankowe mogą pobierać opłaty za czas „ujemny”. Dokumentacja medyczna może wiązać pacjentów z nieregularną powieką. Oprogramowanie nie ulega natychmiastowej awarii, ale powoduje powstawanie śmieci w danych. W finansach i opiece zdrowotnej marnotrawstwo danych ma katastrofalne skutki.

Dlaczego naprawienie błędu było tak drogie

Rozwiązanie wydaje się banalne. Po prostu aktualizujesz kod. Mówisz programowi, że „00” oznacza 2000, a nie 1900. Możesz też całkowicie przejść na format czterocyfrowy. Dlaczego nie zatrzymać się na czterech liczbach? Ponieważ nikt nie oczekuje, że to oprogramowanie przetrwa osiem tysięcy lat. Jest to rozsądne założenie.

Problem nie polegał na rozwiązaniu. Problemem była skala.

Starsze systemy są ogromne. Firma ubezpieczeniowa może mieć 30 milionów linii kodu. W tym chaosie może istnieć 200 000 oddzielnych obliczeń dat. Nie można po prostu kliknąć „zamień wszystko”. Musisz znaleźć każdy przypadek. Musisz ręcznie zmienić kod. Następnie powinieneś to przetestować. Testowanie jest wąskim gardłem. Jeśli wdrożenie i sprawdzenie jednej poprawki zajmuje jeden dzień, a masz 100 000 poprawek, matematyka szybko staje się nieprzyjemna.

Załóżmy, że zatrudniasz 500 programistów. Kosztuje dziesiątki milionów dolarów. Potrzebujesz ich wynagrodzeń, świadczeń, powierzchni biurowej i kosztów ogólnych zarządzania. To logistyczny koszmar. Firmy w panice szukały programistów. Przepalali budżety. Media pokochały ten dramat, ale rzeczywistość okazała się po prostu kosztowną pracą IT.

„Koniec świata” nie był nieunikniony

Pomimo kosztów i strachu samo wydarzenie przebiegło spokojnie. Kiedy nadszedł 1 stycznia 2000 roku, większość systemów przetrwała. Tak, zdarzały się usterki. Niektóre wyświetlacze pokazywały błędną datę. Niektóre drukarki uległy awarii. Ale światowa gospodarka nie upadła.

Ten artykuł został zarchiwizowany w szczytowym momencie paniki. Panowała wówczas opinia, że ​​katastrofa jest nieunikniona. Powiedzieliśmy: „Nic się naprawdę nie stanie”. Rzucali w nas kamieniami. Ludzie chcieli dramatu. Chcieli kryzysu.

Ale problem Y2K był głównie problemem z percepcją. Była to szansa na skorygowanie dziesięcioleci długu technicznego. Zmusiło to firmy do spojrzenia na swój stary kod. Pokazało, jak krucha jest nasza infrastruktura cyfrowa. Niepokój był realny, ale konsekwencje były do ​​opanowania. To jest ironia błędu milenijnego. To przeraziło świat, ale przede wszystkim sprawiło, że działy IT były bardzo zajęte przez rok.

Dlaczego przewidywania końca świata do roku 2000 były błędne

Kalendarz wskazywał rok 2000. Oprogramowanie, które nie zostało zaktualizowane, ulegało awarii. Dane wyjściowe byłyby nieprawidłowe. Taka była rzeczywistość techniczna. Jednak fala paniki stała się kulturową rzeczywistością. Ludzie wyobrażali sobie koniec świata. Widzieli przerwy w dostawie prądu, zatory na autostradach i spadające z nieba samoloty. Istota przewidywań była prosta: społeczeństwo upadnie, bo zawiodą komputery zapewniające jego działanie.

Kto sprzedawał tę narrację? Głównie bojówki, survivalowcy i fanatycy religijni. Ich logika opierała się na jednym kruchym założeniu: że ludzie są bezradni bez krzemu.

Rzeczywistość 1 stycznia 2000 roku okazała się znacznie mniej dramatyczna. Apokalipsa nie nastąpiła. Prawdopodobnie były tygodnie tarć. Pojawiły się nieoczekiwane błędy. Znaleziono obejścia. Potem życie toczyło się dalej. Wynik ten nie był dziełem przypadku. Miało charakter strukturalny.

Warstwa ludzka za ekranem

Większość organizacji wiedziała, że musi naprawić swój kod lub zakończyć działalność. Do końca 1999 r. większość krytycznych systemów została zaktualizowana lub objęta rozwiązaniami tymczasowymi. Rynek ukarał niekompetencję. To nie jest teoria spiskowa. To jest podstawowy kapitalizm.

Ale nawet gdyby oprogramowanie zawiodło, świat fizyczny nadal by się kręcił. Przeceniamy naszą zależność od komputerów. Nie doceniamy trwałości pracy fizycznej. Weźmy pod uwagę łańcuch dostaw żywności. Pomidory i sałata nie wymagają mikroprocesorów do wzrostu. Rolnicy je zbierają. Fabryki konserw je przetwarzają. Dowożą je kierowcy ciężarówek. Kasjerzy biją ich przy kasie. W przypadku awarii skanerów w sklepach spożywczych kasjerzy wprowadzali ceny ręcznie. W przypadku awarii centralnej bazy danych o stanie magazynowym półki nadal byłyby zapełnione produktami, nawet gdyby śledzenie ich dostępności stało się chaotyczne.

System się nie zatrzymał. Po prostu zwolniła. I ludzie się dostosowali.

Kłopoty to nie awaria

Ciągle spotykamy się z przerwami. Uważamy je za normę. Weźmy strajk UPS w 1997 r. Wstrzymało około 80% dostaw paczek w Stanach Zjednoczonych. Czy handel ustał? Nie. Ludzie przeszli na FedEx. Korzystali z usług poczty amerykańskiej. Świat kręcił się dalej.

Spójrzmy na 3 stycznia 1999 r. W Chicago i Detroit wystąpiły najcięższe opady śniegu od trzech dekad. Ruch lotniczy został sparaliżowany. Salon samochodowy w Detroit został przełożony. Tysiące ludzi zostało uwięzionych. Czy społeczeństwo upadło? Nie. Ludzie czekali. Ludzie przenieśli plany. Ludzie przeżyli.

Przejście do roku 2000 było podobne. Niektóre firmy mają problemy. Inni nie. Ci, którym się nie udało, mogli zbankrutować. Ci, którzy się dostosowali, pozostali otwarci. Kłopoty były realne. Nie było żadnej katastrofy.

Mit sieci energetycznej

Jedną z najtrwalszych metod siania strachu była sieć energetyczna. Pomysł był taki, że zły kod uruchomi wyłączniki automatyczne i pogrąży narody w ciemności. Ignoruje to, jak faktycznie działa energia elektryczna.

Sieć składa się z przewodów, transformatorów i przełączników. To jest infrastruktura fizyczna. Elektrony przepływają przez miedź niezależnie od tego, czy komputer je monitoruje, czy nie. Tak, systemy sterowania monitorują napięcie i obciążenie. W przypadku awarii tych systemów operatorzy interweniowaliby. Tysiące inżynierów i techników zarządza tą siecią każdego dnia. To ci sami ludzie, którzy przywracają zasilanie po huraganach i burzach lodowych. Wiedzą, jak ręcznie zrównoważyć ładunek, jeśli to konieczne. Elektrony się nie zatrzymują. Lampka pozostaje włączona nawet po zgaśnięciu panelu sterowania.

Ludzie nadal chcą kupować produkty

Narracja o dniu zagłady wiąże się z podwójną porażką: komputery się psują, a ludzie zapominają, jak funkcjonować. Obydwa stwierdzenia są fałszywe.

1 stycznia 2000 roku ludzie się obudzili. Wsiedli do swoich samochodów. Chcieli kupić artykuły spożywcze. Chcieli zapłacić rachunki. Chcieli pracować. Osoby sprzedające te produkty również chciały zarobić. Zachęty nie znikają z powodu zmiany kalendarza.

Gdyby bankomaty przestały działać, ludzie udaliby się do kasjerów bankowych. Kasjerzy to ludzie. Wiedzą, jak liczyć gotówkę. W przypadku awarii skanerów kodów kreskowych kasjerzy wprowadzaliby kody SKU produktów. Gdyby komputery kontroli ruchu lotniczego zawiesiły się, kontrolerzy używaliby radia głosowego i pasków papieru. Piloci mogą latać samolotami bez autopilota. Może nie lądowaliśmy co minutę w ruchliwym węźle komunikacyjnym, ale samoloty wciąż latały.

Nie jesteśmy bezradni. Jesteśmy adaptacyjni. Rok 2000 przyszedł i minął. Serwery buczały. Światło pozostało włączone. I wróciliśmy do pracy.

Dwucyfrowy błąd daty, który prawie zniszczył świat

Często mówimy o błędzie Y2K jako o kawałku historii, o panice technologicznej, która wygasła. Ale mechanizm tego problemu był niezwykle prosty. Y2K oznacza wydanie z roku 2000. To nie był tajemniczy potwór zapisany w kodzie. To była leniwa sztuczka, do której programiści uciekali się kilkadziesiąt lat temu.

Większość starszych systemów przechowywała daty, używając tylko dwóch cyfr roku. 1987. 1995. 1999. To uratowało pamięć. W latach sześćdziesiątych i siedemdziesiątych pamięć była droga. W latach 90. stało się tanie, ale kod pozostał ten sam. Kiedy 31 grudnia 1999 r. zegar wybił północ, te dwucyfrowe pola przepełniły się i przyjęły wartość „00”.

Komputery nie doczekały nowego tysiąclecia. Widzieli rok 1900.

To nie był tylko błąd w kalendarzu. To był upadek logiki. Systemy obliczające odsetki, planowe konserwacje lub zarządzające sieciami energetycznymi nagle zdecydowały, że działają w odwrotnym kierunku. Przetwarzanie danych zostało zatrzymane. Daty stały się bzdurą.

Dlaczego Y2K stanowił realne zagrożenie dla infrastruktury krytycznej

Ludzie żartują z Y2K, jakby to był zły film. Ale potencjalne konsekwencje były dość namacalne. Nie tylko dlatego, że arkusze kalkulacyjne wyglądały dziwnie.

Infrastruktura krytyczna opierała się na systemach wbudowanych. Sterowniki przemysłowe. Rejestry bankowe. Dokumentacja medyczna. Wiele z tych systemów korzystało ze starszego sprzętu, którego nie można było łatwo zaktualizować. Jeśli logika daty zawiodła, oznacza to, że zawiodła sama funkcja.

Wyobraź sobie elektrownię błędnie interpretującą znacznik czasu. Albo bank anuluje transakcje, bo wydaje mu się, że znowu jest rok 1900. Ryzyko miało charakter systemowy. Jeden punkt awarii może wywołać reakcję łańcuchową.

Rządy i korporacje wydały miliardy dolarów, próbując rozwiązać ten problem. Przeanalizowali miliony linii kodu. Wymienili sprzęt. Przepisali oprogramowanie. Była to kampania globalna, ponieważ stawka była wysoka.

Mit i rzeczywistość wirusa Y2K

A potem był wirus. Sam błąd Y2K był usterką, a nie złośliwym oprogramowaniem. Ale ktoś postanowił wykorzystać to zamieszanie jako broń.

Wirus Y2K miał zostać uruchomiony 1 stycznia 2000 roku. Nie tylko powodował awarię komputera. Zniszczył dane. Był to złośliwy kod zaprojektowany w celu wykorzystania zmiany daty. Niektóre wersje były wersjami demonstracyjnymi. Inne były destrukcyjne.

Późniejsze raporty potwierdziły, że wirus Y2K powodował zakłócenia i szkody warte miliardy dolarów na całym świecie. Szybko się rozprzestrzeniło. Jego celem były podatne systemy, które nie zostały w pełni zaktualizowane.

Ironią jest to, że wirus opierał się na tym samym błędzie logiki daty, który rzekomo miał karać. To była samospełniająca się przepowiednia chaosu.

Jak Y2K na zawsze zmieniło rozwój oprogramowania

Poprawka Y2K nie była tylko łatką. Zmieniło to sposób, w jaki tworzymy oprogramowanie.

Przed rokiem 2000 obsługa dat była drobnym zadaniem. Potem stało się to wymogiem podstawowym. Pojawiły się standardy. Lata czterocyfrowe stały się obowiązkowe. Protokoły testowania stały się bardziej rygorystyczne.

Przestaliśmy zakładać, że stary kod będzie działać. Zaczęliśmy tego słuchać. Lęk zmusił mnie do przejrzystego działania. Kazała mi wziąć na siebie odpowiedzialność.

Dziś czterocyfrowe daty przyjmujemy za oczywistość. Zapominamy o panice. Zapominamy o miliardach wydanych na naprawy. Ale lekcja pozostaje.

Kod ma konsekwencje. Małe sztuczki mają duże konsekwencje.