Uzyskaj dostęp do ponad 250000 książek od 14,99 zł miesięcznie
15 osób interesuje się tą książką
Pierwsza w historii książka o tematyce matematycznej, która zajęła pierwsze miejsce na liście bestsellerów „Sunday Timesa”!
Przeczytajcie o zabawnych – a także tragicznych – konsekwencjach matematycznych błędów, pomyłek i niedokładności. Przekonajcie się, co może się zdarzyć, kiedy w rzeczywistym świecie z matematyką coś pójdzie nie tak. „Pi razy oko” to pełna humoru, ciekawostek i anegdot książka napisana przez Matta Parkera – słynnego popularyzatora nauki, znanego z youtube’owych kanałów Stand-Up Maths i Numberphile.
Co sprawia, że most zaczynia się kołysać w warunkach, kiedy właśnie nie powinien tego robić? Albo że w tajemniczy sposób rozpływają się w powietrzu miliardy dolarów? Co jest przyczyną wielu katastrof lotniczych i budowlanych? Co prowadzi do zawieszania się wyrafinowanych systemów komputerowych w najmniej odpowiednim momencie? Odpowiedź brzmi: matematyka! A raczej – mówiąc dokładniej – matematyka, z którą w rzeczywistym świecie coś poszło nie tak.
Matt Parker nie ma żadnych wątpliwości – cała nasza cywilizacja i codzienne życie opiera się na matematyce – programy komputerowe, finanse, inżynieria i wiele innych dziedzin zawdzięczają swoje istnienie i (na ogół bezproblemowe) działanie właśnie jej. I przez większość czasu matematyka pracuje sobie cichutko za kulisami, nie zwracając na siebie uwagi, aż… pojawia się błąd. Błąd człowieka, który czegoś nie przewidział, czegoś nie dopilnował lub coś nie do końca dobrze zrozumiał lub wdrożył. Wówczas matematyka staje się naprawdę bezlitosna.
W książce „Pi razy oko” Matt Parker zabiera czytelnika w niesamowitą podróż po manowcach zastosowań matematyki w naszym życiu – krainie błędów, pomyłek, wpadek i gliczy, które zdarzają się wszędzie, gdzie tylko ktoś kiedyś użył do czegoś jakichkolwiek obliczeń. Internet, big data, znaki uliczne, loterie, kalendarze, osobliwe zbiegi okoliczności, pozornie uczciwe gry losowe, niedokładności w pomiarze czasu, fałszywe slogany reklamowe, arkusze Excela, konwersje jednostek – przekonajcie się, czym grożą błędy popełniane przez ludzi korzystających z matematyki na co dzień, czyli na dobrą sprawę… przez nas wszystkich! Konsekwencje błędów matematycznych bywają zabawne, zadziwiające, ale niestety także tragiczne. O wszystkich Matt Parker pisze wyjątkowo lekkim piórem, z dystansem i charakterystycznym dla siebie poczuciem humoru.
Ebooka przeczytasz w aplikacjach Legimi na:
Liczba stron: 371
Tytuł oryginału Humble Pi. A Comedy of Math Errors
Copyright © Matt Parker, 2019
First published 2019 by Allen Lane
Allen Lane is part of the Penguin Random House group of companies whose addresses can be found at global.penguinrandomhouse.com
Copyright © for Polish translation Jakub Radzimiński, 2021
RedakcjaTomasz Brzozowski, Maria Brzozowska
KorektaJustyna Charęza
Skład, adaptacja okładki Tomasz Brzozowski
Grafika na okładceEmilija Manevska / Getty Images
Konwersja do wersji elektronicznej Aleksandra Pieńkosz
Copyright © for this editionInsignis Media, Kraków 2021Wszelkie prawa zastrzeżone
ISBN pełnej wersji 978-83-66873-22-3
Insignis Media ul. Lubicz 17D/21–22, 31-503 Kraków tel. +48 (12) 636 01 [email protected], www.insignis.pl
facebook.com/Wydawnictwo.Insignis
twitter.com/insignis_media (@insignis_media)
instagram.com/insignis_media (@insignis_media)
Książkę tę dedykuję nieustannie wspierającej mnie żonie Lucie.
Tak, wiem, że zadedykowanie książki o błędach swojej żonie to trochę błąd.
Wstęp
W 1995 roku firma Pepsi zorganizowała promocję, w ramach której można było zbierać punkty i wymieniać je na różne fanty. Na koszulkę trzeba było uzbierać 75 punktów, na ciemne okulary – 175. Była tam nawet skórzana kurtka (wyceniona na 1450 punktów). W latach dziewięćdziesiątych założenie wszystkich tych trzech rzeczy naraz dodawało sporo do lansu. W reklamie telewizyjnej wyjaśniającej całą promocję pojawiała się właśnie tak ubrana osoba.
Ale dla producentów reklamy to było za mało. Chcieli zakończyć spot czymś wyjątkowym, klasycznym zakręconym żartem à la Pepsi. Zatem bohater reklamy – ubrany w koszulkę i skórzaną kurtkę, z ciemnymi okularami na nosie – leci harrierem do szkoły. Na ekranie pojawia się wartość punktowa myśliwca – 7 milionów punktów Pepsi.
Żart jest dość prosty: mechanizm wykupywania nagród za punkty przeciągnięto poza granice absurdu. Klasyka komedii. Ale okazało się, że ktoś niezbyt się tu postarał. Jasne, siedem milionów to bardzo duża liczba, ale ekipa odpowiedzialna za reklamę chyba nie zadała sobie trudu, żeby wszystko przeliczyć i sprawdzić, czy wystarczająco duża.
Zrobił to ktoś inny. W tamtych czasach wykorzystany w spocie myśliwiec pionowego startu AV-8 Harrier II kosztował wojsko Stanów Zjednoczonych ponad dwadzieścia milionów dolarów za sztukę. A przeliczenie pieniędzy na punkty Pepsi było bardzo proste: firma pozwalała dokupować brakujące punkty po 10 centów każdy. Osobiście nie mam odpowiedniego rozeznania na rynku sprzętu wojskowego, ale 700 tysięcy dolarów za samolot kosztujący normalnie 20 milionów wydaje się dobrą inwestycją. Takiego samego zdania był John Leonard, który spróbował tę sytuację wykorzystać.
Ba, żeby tylko spróbował. Poszedł na całego. Warunki promocji wymagały złożenia zamówienia na oficjalnym formularzu z katalogu Pepsi, wykorzystania co najmniej piętnastu zebranych punktów oraz załączenia czeku na pokrycie kosztu brakujących punktów i dodatkowych dziesięciu dolarów tytułem kosztów wysyłki. I John właśnie to zrobił. Wypełnił formularz, zebrał piętnaście punktów z produktów Pepsi i wpłacił u swoich prawników 700 006 dolarów i 50 centów na konto powiernicze stanowiące zabezpieczenie czeku. Naprawdę wpłacił całą tę kwotę! Podszedł do sprawy najzupełniej poważnie.
Początkowo Pepsi odmówiło zrealizowania zamówienia: „Myśliwiec Harrier w reklamie Pepsi jest jedynie żartem wprowadzającym do reklamy element humorystyczny”. Ale Leonard miał już prawników i był gotów walczyć o swoje. Jego adwokaci odpowiedzieli w ten sposób: „Niniejsze pismo jest formalnym żądaniem uhonorowania zobowiązania firmy Pepsi i podjęcia natychmiastowych działań w celu przekazania naszemu klientowi nowego myśliwca odrzutowego Harrier”. Pepsi ani myślało ustąpić. Leonard złożył pozew i sprawa trafiła na wokandę.
W toku sprawy bardzo długo roztrząsano, czy nieszczęsna reklama to oczywisty żart czy też ktoś istotnie mógł zrozumieć ją dosłownie. W oficjalnych zapiskach sędziego znajdujemy dwa zdania zdradzające, w jakich oparach absurdu będziemy się za chwilę poruszać: „Nalegania powoda, jakoby reklama sprawiała wrażenie poważnej oferty, zmuszają sąd do wyjaśniania, dlaczego ta reklama jest zabawna. Tłumaczenie, dlaczego żart jest śmieszny, to zadanie beznadziejne”.
Ale i tak spróbowali!
Uwaga nastolatka, że lot harrierem do szkoły jest „zdecydowanie fajniejszy niż jazda autobusem”, wskazuje niewiarygodną niefrasobliwość w kontekście znacznych trudności i niebezpieczeństw związanych z pilotowaniem myśliwca bojowego nad zabudową mieszkalną w porównaniu z korzystaniem z transportu publicznego.
Żadna szkoła nie udostępniłaby uczniowi miejsca na wylądowanie myśliwcem ani też nie tolerowałaby wynikającego z tego zamętu.
Zważywszy na dobrze udokumentowane przeznaczenie myśliwca Harrier obejmujące niszczenie celów naziemnych i powietrznych, rozpoznanie walką, przechwytywanie samolotów oraz defensywne i ofensywne zwalczanie statków powietrznych, przedstawienie takiej maszyny bojowej jako sposobu docierania rano do szkoły w sposób oczywisty nie jest poważne.
Leonard nie dostał swojego odrzutowca, a sprawa Leonard v. Pepsico, Inc. weszła na stałe do historii prawa. Osobiście czuję się pewniej, wiedząc, że jeśli zdarzy mi się powiedzieć coś, co uważam za „zakręcony żart”, to w obronie przed tymi, którzy wzięliby mnie na poważnie, mogę się powołać na precedens prawny. A jeśli ktoś ma z tym problem, to niech zbierze dość „punktów Parkera” – otrzyma za nie moje darmowe zdjęcie, na którym mam to gdzieś (zastrzegam sobie prawo doliczenia kosztów wysyłki).
Pepsi podjęło kroki w celu zabezpieczenia się przed podobnymi kłopotami w przyszłości i zmieniło wartość myśliwca w reklamie na 700 milionów punktów. Moim zdaniem to zdumiewające, że od razu nie sięgnęli po tak dużą liczbę. Nie chodzi o to, że siedem milionów było zabawniejsze. Firma zwyczajnie nie pomyślała o tym, żeby dokonać stosownych obliczeń i sprawdzić wziętą z powietrza wartość.
My, ludzie, nie radzimy sobie zbyt dobrze z szacowaniem wielkich liczb. Nawet kiedy wiemy, że jedna jest większa od drugiej, nie potrafimy dobrze ocenić ich różnicy. W 2012 roku musiałem w studiu BBC News wyjaśniać, ile to jest bilion. Dług publiczny Wielkiej Brytanii właśnie przekroczył bilion funtów, więc wytoczono mnie, żebym wyjaśnił widzom, że to dużo. Najwyraźniej wykrzyknięcie: „To naprawdę dużo! Oddaję głos do studia” nie wystarczało, musiałem więc posłużyć się przykładem.
Sięgnąłem po moją ulubioną metodę zestawiania dużych liczb z czasem. Wiemy, że milion, miliard i bilion to różne wielkości, ale często nie doceniamy ogromu różnicy między nimi. Milion sekund to niespełna jedenaście dni i czternaście godzin. Niezbyt dużo. Mógłbym tyle poczekać. To dwa tygodnie. Miliard sekund to ponad trzydzieści jeden lat.
Bilion sekund wypadnie po roku 33 700 n.e.
Po krótkim namyśle te pozornie zaskakujące liczby są w pełni sensowne. Milion, miliard i bilion są od siebie kolejno tysiąckrotnie większe. Milion sekund to mniej więcej jedna trzecia miesiąca, zatem miliard sekund to 330 (jedna trzecia tysiąca) miesięcy. A jeśli miliard to około trzydziestu jeden lat, to oczywiście bilion wyniesie w przybliżeniu 31 000 lat.
W ciągu życia uczymy się, że liczby są rozmieszczone liniowo – w równych odległościach. Kiedy liczymy od jednego do dziewięciu, każda kolejna liczba jest większa od poprzedniej o jeden. Kiedy zapytamy kogoś, jaka liczba znajduje się w połowie między jedynką a dziewiątką, usłyszymy, że pięć – ale tylko dlatego, że tak nas nauczono. Przestańcie bezmyślnie podążać za stadem! Ludzie instynktownie postrzegają liczby logarytmicznie, nie liniowo! Jeśli to samo pytanie zadamy małemu dziecku albo komuś, kto uniknął indoktrynacji przez system szkolnictwa, usłyszymy, że w połowie drogi między jedynką a dziewiątką znajduje się trójka.
Kiedy członków amazońskiego plemienia Munduruku poproszono o umieszczenie stosownej liczby kropek we właściwych miejscach między jedną kropką a dziesięcioma, umieścili w środku tej odległości kilka skupisk trzech kropek. Dziecko w wieku przedszkolnym lub młodsze, którego rodzice nie będą mieli nic przeciwko eksperymentowaniu na ich pociesze, zapewne postąpi w ten sam sposób.
Nawet po wielu, wielu latach posługiwania się małymi liczbami w toku naszej edukacji, wciąż wykazujemy śladowy instynkt podpowiadający nam, że większe liczby należy rozpatrywać w skali logarytmicznej; że odległość między miliardem a bilionem jest mniej więcej taka sama jak między milionem a miliardem – ponieważ w obu przypadkach ta druga liczba jest tysiąc razy większa od pierwszej. W rzeczywistości skok do biliona jest o wiele większy: to jak porównać przekroczenie trzydziestu lat z dożyciem czasów, w których ludzkość może już nie istnieć.
Nasze ludzkie mózgi zwyczajnie nie są przystosowane do radzenia sobie z matematyką bez treningu. Jeśli chodzi o tę dziedzinę nauki, wszyscy ludzie są głupi. Nie rodzimy się z umiejętnością intuicyjnego pojmowania ułamków, liczb ujemnych czy którejkolwiek z wielu innych dziwacznych koncepcji matematyków, ale z czasem nasze mózgi stopniowo uczą się, jak sobie z tym radzić. Nasz obecny system edukacji zmusza uczniów do opanowywania tej dziedziny nauki, i poprzez odpowiednio długi trening nasze mózgi przyswajają myślenie matematyczne. Gdybyśmy jednak przestali korzystać z tych umiejętności, szybko powrócilibyśmy do ustawień fabrycznych.
W Wielkiej Brytanii trzeba było wycofać pewne zdrapki w tym samym tygodniu, w którym trafiły do sprzedaży. Spółka Camelot, która zajmuje się brytyjskimi loteriami, wyjaśniała to „niejasnymi zasadami”. Loteria nazywała się Cool Cash (dosłownie: chłodna gotówka), a na zdrapce nadrukowana była temperatura. Jeśli po zdrapaniu farby pojawiała się temperatura niższa od nadrukowanej, los wygrywał. Okazało się, że wielu grających miało kłopoty z liczbami ujemnymi…
Na jednej z moich zdrapek miałem znaleźć temperatury niższe niż −8. Odsłoniłem liczby −6 i −7, więc myślałem, że wygrałem, a ekspedientka w sklepie przyznała mi rację. Ale kiedy zeskanowałem zdrapkę, pojawił się komunikat, że jednak nie wygrałem. Zadzwoniłem do firmy Camelot, a ci mnie zbyli jakąś historyjką, że niby −6 jest większe, a nie mniejsze od −8, ale ja nie dam sobie wciskać takiego kitu!
To pokazuje, że ogrom matematyki, z jakiego korzystamy we współczesnym społeczeństwie, jest zarówno niesamowity, jak i przerażający. Jako gatunek nauczyliśmy się badać i wykorzystywać tę dziedzinę nauki, żeby dokonywać rzeczy, z którymi normalnie nasze mózgi by sobie nie poradziły. Dzięki temu możemy się cieszyć osiągnięciami znacznie wykraczającymi poza pierwotnie zamierzone możliwości naszego wewnętrznego hardware’u. Kiedy działamy nieintuicyjnie, potrafimy dokonać niezmiernie ciekawych rzeczy, ale też jesteśmy narażeni na największe niebezpieczeństwo. Prosty błąd w obliczeniach może pozostać niezauważony, a potem mieć katastrofalne konsekwencje.
Współczesny świat opiera się na matematyce: komputery, finanse, inżynieria… to wszystko matematyka w różnych przebraniach. Pozornie niewinne pomyłki w obliczeniach mogą mieć dziwaczne skutki. W tej książce zebrałem moje ulubione matematyczne wpadki wszech czasów. Błędy opisane na kolejnych stronach są nie tylko zabawne, ale też otwierają oczy. Na chwilę uchylają kotarę i odsłaniają matematykę, która przez większość czasu działa niezauważona za kulisami. To tak jakby odkryć, że za tą naszą nowoczesną magią siedzi czarnoksiężnik z krainy Oz i wyrabia nadgodziny z liczydłem i suwakiem logarytmicznym. Dopiero kiedy coś pójdzie nie tak, orientujemy się nagle, jak wysoko zaszliśmy właśnie dzięki matematyce – i jak bolesny może być upadek. Pragnę tu zaznaczyć, że w żadnej mierze nie mam zamiaru naśmiewać się z osób odpowiedzialnych za opisywane wpadki. W końcu sam też wielokrotnie się myliłem. Tak jak każdy z nas. Żeby dodatkowo urozmaicić wam lekturę, umieściłem w książce trzy rozmyślne błędy. Dajcie znać, czy je wszystkie znaleźliście!
Tracąc rachubę czasu
14 września 2004 roku nad południową Kalifornią przelatywało jakieś osiemset samolotów odbywających dalekie loty. Błąd obliczeniowy miał właśnie zagrozić życiu kilkudziesięciu tysięcy pasażerów. Bez żadnego ostrzeżenia centrum kontroli lotów w Los Angeles straciło kontakt radiowy ze wszystkimi samolotami. Wybuchła całkiem zrozumiała panika.
Komunikacja nie działała przez około trzy godziny. W tym czasie kontrolerzy dzwonili ze swoich prywatnych telefonów komórkowych do innych centrów kontroli lotów, aby te przekazały pilotom informację o potrzebie skalibrowania na nowo pokładowych radiostacji. Obyło się bez katastrofy, ale dziesięć samolotów minęło się w odległości mniejszej niż dopuszczały to przepisy (5 mil morskich, czyli nieco ponad 9 kilometrów, w poziomie lub 2000 stóp, czyli około 600 metrów, w pionie), a dwukrotnie doszło do zbliżenia na niecałe 4 kilometry. Czterysta lotów zostało opóźnionych, a kolejnych sześćset odwołano. Wszystko z powodu błędu obliczeniowego.
Oficjalne informacje na temat tego, co właściwie poszło nie tak, są bardzo skąpe, ale wiemy na pewno, że chodziło o błąd pomiaru czasu przez komputery obsługujące centrum kontroli lotów. Najwyraźniej używany tam system odliczał czas po jednej milisekundzie od wartości 4 294 967 295 w dół. Czyli dojście do zera zajęłoby mu 49 dni, 17 godzin, 2 minuty i 47,296 sekundy.
W zwykłych okolicznościach restartowano komputer i odliczanie rozpoczynało się od nowa. Z tego, co udało mi się ustalić, część osób była świadoma tego potencjalnego problemu, w związku z czym wdrożono procedurę nakazującą restartowanie maszyny przynajmniej co trzydzieści dni. To było jednak tylko obejście problemu; w żaden sposób nie usuwało podstawowego błędu matematycznego polegającego na tym, że nikt nie sprawdził, ile milisekund trwa cykl pracy systemu. I tak w roku 2004 komputer przypadkowo działał non stop przez pięćdziesiąt dni, dotarł do zera i się wyłączył. Osiemset samolotów przelatujących nad jednym z największych miast świata stanęło w obliczu zagrożenia, bo – powiedzmy to wprost – ktoś kiedyś wybrał za małą liczbę.
Wszyscy ochoczo zrzucili winę na niedawną aktualizację oprogramowania, po której na komputerach działały różne wersje systemu Windows. Problem występował w części tych starszych (zwłaszcza tych z Windows 95). System naliczał milisekundy od uruchomienia i udostępniał wynik wszystkim innym programom. Po osiągnięciu wartości 4 294 967 295 zaczynał odliczać w dół – do zera. Kiedy czas systemowy nagle zaczynał się cofać, niektóre programy – sterowniki umożliwiające komunikację z zewnętrznymi urządzeniami – miewały kłopoty. Sterowniki muszą kontrolować upływ czasu, aby wiedzieć, czy urządzenia odpowiadają w regularnych odstępach. Kiedy Windows im mówił, że czas właśnie się cofnął, ulegały awarii i pociągały za sobą cały system.
Nie jest do końca jasne, czy to właśnie system Windows ponosił bezpośrednią odpowiedzialność za to, co się stało, czy też może była to wina nowego kodu w oprogramowaniu centrum kontroli lotów. Tak czy owak wiemy, że wszystko rozbija się o liczbę 4 294 967 295. Nie była wystarczająco duża ani dla komputerów domowych w latach dziewięćdziesiątych, ani dla systemu kontroli lotów na początku nowego tysiąclecia. Aha, no i nie była też dość duża dla samolotu Boeing 787 Dreamliner w roku 2015.
Kłopot z Boeingiem 787 dotyczył systemu sterującego agregatami prądotwórczymi. Wygląda na to, że mierzyły czas poprzez zwiększanie wartości stosownego licznika o jeden co 10 milisekund (czyli sto razy na sekundę). Maksymalna osiągana wartość wynosiła 2 147 483 647 (podejrzanie blisko połowy liczby 4 294 967 295…). Z tego wynika, że samolot mógł stracić zasilanie, jeśli działał bez przerwy przez 248 dni, 13 godzin, 13 minut i 56,47 sekundy. Wystarczająco długo, aby większość samolotów została w tym czasie zrestartowana, zanim wystąpią jakiekolwiek trudności, ale też wystarczająco krótko, żeby któremuś kiedyś przydarzyła się awaria zasilania. Federalna Administracja Lotnictwa USA ujęła to następująco:
Licznik programowy wbudowany w jednostki sterujące agregatami (GCU) przepełni się po 248 dniach nieprzerwanej pracy, co spowoduje przejście GCU w tryb awaryjny. Gdyby cztery główne GCU (powiązane z agregatami przy silnikach) zostały włączone w tym samym czasie, po 248 dniach nieprzerwanego działania wszystkie jednocześnie przeszłyby w tryb awaryjny, co spowodowałoby utratę całego zasilania prądem przemiennym – niezależnie od fazy lotu.
Podejrzewam, że sformułowanie „niezależnie od fazy lotu” to oficjalny sposób powiedzenia: „Może się zepsuć w powietrzu”. W regulacjach dotyczących zdatności do lotu zawarto wymóg wykonywania „okresowego zadania serwisowego polegającego na wyłączeniu zasilania”. Innymi słowy każdy właściciel Boeinga 787 musiał pamiętać, żeby co jakiś czas go wyłączyć i włączyć z powrotem. To klasyczny przykład rozwiązania wymyślonego przez programistę. Od tamtego czasu producent zmienił oprogramowanie, żeby pozbyć się tego problemu, dzięki czemu przygotowywanie samolotu do startu nie wymaga już jego szybkiego restartu.
Kiedy 4,3 miliarda milisekund to jednak za mało
Dlaczego zatem przy mierzeniu czasu Microsoft, centrum kontroli lotów w Los Angeles i Boeing ograniczali się do na pozór wziętej z powietrza liczby wynoszącej około 4,3 miliarda (albo jej połowy)? To zdecydowanie sprawia wrażenie jakiegoś powszechnego problemu. Żeby to zrozumieć, trzeba przyjrzeć się liczbie 4 294 967 295 w systemie binarnym. Kiedy zapiszemy tę liczbę przy użyciu wykorzystywanych przez komputery zer i jedynek, uzyskamy 11111111111111111111111111111111 – ciąg trzydziestu dwóch jedynek.
Większość osób nigdy nie musi mieć nic do czynienia z obwodami elektronicznymi czy kodem binarnym, które leżą u podstaw funkcjonowania komputerów. Muszą tylko umieć obsługiwać uruchamiane na nich programy i aplikacje, a czasem też system operacyjny, który to wszystko umożliwia (taki jak Windows czy iOS). A wszędzie tam używane są cyfry od 0 do 9 w systemie dziesiętnym, który znamy i kochamy.
Pod spodem kryje się jednak zapis binarny. Używając Windowsa na komputerze czy iOS-a na telefonie, mamy kontakt jedynie z graficznym interfejsem użytkownika (Graphical User Interface, GUI). Kiedy zajrzymy pod jego maskę, zobaczymy mętlik. Znajduje się tam kilka warstw kodu komputerowego, które odczytują kliknięcia myszą i przesunięcia palcem po ekranie, aby je następnie przetłumaczyć na surowy kod maszynowy składający się z zer i jedynek – mowę macierzystą komputerów.
Gdyby na kartce było miejsce tylko na pięć cyfr, największą możliwą do zapisania na niej liczbą w systemie dziesiętnym byłoby 99 999. W każdym dostępnym miejscu wpisalibyśmy największą możliwą cyfrę. Systemy Microsoftu, centrum kontroli lotów i Boeinga miały ze sobą coś wspólnego: to były 32-bitowe systemy binarne, a to znaczy, że największą możliwą do uzyskania w nich liczbą były trzydzieści dwie jedynki, czyli 4 294 967 295 w zapisie dziesiętnym.
Sytuacja wygląda trochę gorzej, jeśli zapragniemy wykorzystać jedno z tych miejsc do innego celu. Gdybyśmy na przykład chcieli na tej kartce z miejscem na pięć cyfr zapisać liczbę ujemną, musielibyśmy pierwsze miejsce zarezerwować na wpisanie plusa lub minusa, co umożliwiłoby zapisanie dowolnej liczby całkowitej od −9999 do +9999. Najwyraźniej system Boeinga wykorzystywał właśnie takie liczby z poprzedzającym je znakiem, zatem przy zajętej pierwszej pozycji* zostawało miejsce na maksymalnie trzydzieści jeden jedynek, co daje liczbę 2 147 483 647. Zliczanie setnych części sekundy zamiast milisekund trochę poprawiło sytuację, ale nie wystarczyło.
Szczęśliwie mamy tu do czynienia z problemem, który da się tak odwlec w czasie, żeby przestał mieć jakiekolwiek znaczenie. Współczesne systemy komputerowe są zazwyczaj 64-bitowe, co domyślnie pozwala zapisywać o wiele większe liczby. Oczywiście maksymalna możliwa do uzyskania wartość nadal jest skończona, w związku z czym każdy system zakłada, że kiedyś zostanie wyłączony i włączony ponownie. Ale jeśli każemy 64-bitowemu komputerowi zliczać milisekundy, będzie mógł to robić bez przerwy przez 584,9 miliona lat. Zatem nie ma powodu do obaw: trzeba go będzie restartować tylko dwa razy na miliard lat.
Kalendarze
Analogowe metody mierzenia czasu będące w użyciu przed wynalezieniem komputerów przynajmniej nigdy by się nie przepełniły. Ramiona zegara mogą się kręcić w nieskończoność; do kalendarza można w miarę upływu lat dodawać kolejne kartki. Zapomnijmy o milisekundach: kiedy trzeba się martwić tylko o stare dobre dni i lata, żaden błąd obliczeniowy nie napsuje nam krwi.
Tak przynajmniej sądziła rosyjska reprezentacja strzelecka, która na odbywające się w 1908 roku w Londynie Igrzyska Olimpijskie przybyła na kilka dni przed eliminacjami zaplanowanymi na 10 lipca. Ale kiedy sprawdzić wyniki zawodów strzeleckich z tej olimpiady, znajdziemy wzmiankę o reprezentacjach wielu krajów, ale ani słowa o Rosjanach. Wszystko dlatego, że rosyjski 10 lipca w Wielkiej Brytanii (i większej części świata) wypadał 23 lipca. W Rosji obowiązywał inny kalendarz.
Tak poważny błąd w korzystaniu z kalendarza, że w jego wyniku grupa sportowców spóźnia się dwa tygodnie na olimpiadę, może się wydawać dziwny. Ale kalendarze są o wiele bardziej złożone, niż można by podejrzewać. Wygląda na to, że podzielenie roku na zwykłe dni nie jest wcale proste i te same trudności bywają rozwiązywane na różne sposoby.
Wszechświat dał nam tylko dwie miary czasu: rok i dzień. Wszystko inne jest wymysłem ludzkości pragnącej ułatwić sobie życie. Kiedy dysk protoplanetarny ostygł i planety przybierały obecną postać, Ziemia zyskała pewien moment pędu, wskutek czego krąży wokół Słońca i jednocześnie wiruje. Ruch po orbicie wyznacza długość roku, a szybkość obrotu planety wokół jej własnej osi – długość dnia.
Problem w tym, że te dwa odcinki czasu do siebie nie pasują. I nie ma żadnego powodu, żeby pasowały! Wszystko jest konsekwencją tego, gdzie miliardy lat temu zderzyły się bryły kamienia i pyłu z tego pierwotnego dysku. Roczna podróż Ziemi wokół Słońca trwa obecnie 365 dni, 6 godzin, 9 minut i 10 sekund. Gwoli uproszczenia przyjmijmy, że jest to 365 i ćwierć dnia.
Z tego wynika, że jeśli po roku kalendarzowym złożonym z 365 dni my świętujemy Nowy Rok, nasza planeta wciąż ma przed sobą ćwierć dnia ruchu, zanim powróci w to samo miejsce, w którym znajdowała się w poprzedni Nowy Rok. Nasz kosmiczny dom pędzi wokół Słońca z prędkością około 30 kilometrów na sekundę, czyli o północy w Sylwestra będziemy ponad 650 000 kilometrów od miejsca, w którym świętowaliśmy go rok wcześniej. Jeśli zatem ktoś w ramach postanowienia noworocznego przyrzeknie nigdzie się nie spóźniać, to już na starcie jest mocno do tyłu.
Ta niezgodność czasowa może urosnąć z drobnej niedogodności do poważnego problemu, ponieważ rok orbitalny Ziemi wpływa na zmiany pór roku. Lato na półkuli północnej wypada co roku, kiedy Ziemia znajduje się w okolicach tego samego punktu na orbicie, ponieważ to tam biegun północny jest najbardziej nachylony w stronę Słońca. I tak co 365 dni rok kalendarzowy przesuwa się o ćwierć dnia względem cyklu pór roku. Po czterech latach lato zaczynałoby się dzień później. W niecałe czterysta lat, czyli w czasie rozwoju jednej cywilizacji, pory roku przesunęłyby się o trzy miesiące. Po ośmiuset latach lato i zima zamieniłyby się miejscami w kalendarzu.
Żeby temu zaradzić, musieliśmy zmodyfikować kalendarz tak, żeby miał tyle samo dni, co okres orbitalny naszej planety. Musieliśmy w jakiś sposób odejść od lat o identycznej liczbie dni, ale bez wprowadzania dnia ułamkowego: ludzie by się wkurzyli, gdyby choć jedna doba nie zaczynała się o północy. Musieliśmy powiązać naszą rachubę lat z okresem orbitalnym Ziemi bez naruszania związku między długością dnia a ruchem obrotowym planety.
Większość cywilizacji uznała, że najlepszym rozwiązaniem będzie zróżnicowanie liczby dni w niektórych latach, żeby po uśrednieniu na każdy rok wypadał odpowiedni ułamek. Ale ponieważ można to zrobić na wiele sposobów, wciąż mamy w użyciu kilka różnych kalendarzy (do tego każdy z nich rozpoczyna odliczanie lat w nieco innym punkcie w przeszłości). Kiedy przy najbliższej okazji będziecie mieli w ręku telefon znajomego, zmieńcie mu w ustawieniach kalendarz na buddyjski. Nagle przeniesie się w lata sześćdziesiąte XXVI wieku. Możecie potem spróbować delikwenta przekonać, że właśnie obudził się ze śpiączki.
Najpopularniejszy współczesny kalendarz jest następcą rzymskiego kalendarza republikańskiego. Rok u Rzymian miał tylko 355 dni, czyli zdecydowanie mniej niż trzeba, w związku z czym między lutym a marcem wstawili dodatkowy miesiąc, który miał to dwadzieścia dwa, to dwadzieścia trzy dni. Teoretycznie w ten sposób można było dopasowywać kalendarz do roku słonecznego. W praktyce to rządzący w danym czasie politycy decydowali, kiedy wstawić ten ponadnormatywny miesiąc. Ponieważ tą decyzją mogli wydłużyć rok swoich rządów i skrócić władanie rywala, nie zawsze przyświecała im wyłącznie chęć wyregulowania kalendarza.
Powołanie komitetu politycznego rzadko bywa dobrym pomysłem na rozwiązanie zagadnienia matematycznego. Trzy lata poprzedzające rok 46 p.n.e. nazywano „latami bałaganu”, ponieważ dodatkowe miesiące to się pojawiały, to znikały – bez głębszego uzasadnienia faktyczną potrzebą astronomiczną. Ponieważ zmiany były dokonywane bez uprzedzenia, osoby przebywające daleko od Rzymu musiały zgadywać, jaka data obowiązuje aktualnie w stolicy.
W roku 46 p.n.e. Juliusz Cezar postanowił to ukrócić i wprowadzić nowy, przewidywalny kalendarz. Każdy rok miał mieć 365 dni – to liczba całkowita najbliższa rzeczywistej wartości – a nadmiarowe ćwiartki dni miały być odkładane przez trzy lata i zamieniane na cały dzień w czwartym z kolei roku. Tak oto narodził się rok przestępny z dodatkowym dniem!
Żeby najpierw zsynchronizować wszystko z astronomią, rok 46 p.n.e. liczył bodaj rekordowe 445 dni. Poza dodatkowym miesiącem między lutym a marcem dodano dwa miesiące między listopadem a grudniem. Następnie, począwszy od roku 45 p.n.e., co cztery lata występował wspomniany rok przestępny, żeby już wszystko się zgadzało.
Cóż, prawie wszystko. Na samym wstępie popełniono błąd rachunkowy: ostatni rok z jednego czteroletniego okresu był jednocześnie liczony jako pierwszy rok okresu następnego, w związku z czym lata przestępne występowały co trzy lata. Błąd ten zauważono, naprawiono i od 3 roku p.n.e. wszystko było już jak należy.
Zuchwałość papieża
Ale Juliusz Cezar został zdradzony – aczkolwiek wiele lat po śmierci – przez 11 minut i 15 sekund różnicy między 365,25 dnia w jego kalendarzu a rzeczywistą długością cyklu czterech pór roku wynoszącą 365,242188792 dnia. Różnica jedenastu minut dziennie jest ledwo zauważalna. Kalendarzowe pory roku przesuwałyby się tylko o jeden dzień co 128 lat. Ale po jakimś tysiącleciu problem zacząłby się robić poważny. Do tego młoda, raczkująca religia zwana chrześcijaństwem powiązała obchody Wielkiej Nocy z cyklem pór roku, a na początku XVI wieku między kalendarzowym a astronomicznym początkiem wiosny było już dziesięć dni różnicy.
A teraz mało znany fakt. Często spotyka się stwierdzenie, jakoby 365,25 dnia w roku w kalendarzu juliańskim było dłuższe od okresu orbitalnego Ziemi. Ale to nieprawda! Nasza planeta okrąża Słońce w 365 dni, 6 godzin, 9 minut i 10 sekund, czyli w nieco ponad 365,25 dnia. Zatem rok juliański jest krótszy od okresu orbitalnego Ziemi. Ale jednocześnie dłuższy od cyklu pór roku. Osobliwie nawet pory roku nie są dokładnie zgrane z rokiem astronomicznym.
Doszliśmy do etapu rozważań nad konstrukcją kalendarza, na którym do gry wchodzą inne aspekty ruchu po orbicie. W miarę okrążania Słońca oś Ziemi zmienia swój kąt nachylenia. Co 13 000 lat przechodzimy od skierowania umownego czubka osi Ziemi w stronę tej gwiazdy do skierowania go w stronę przeciwną. Aby kalendarz dokładnie odwzorowywał pełny ruch Ziemi, co 13 000 lat trzeba by zamieniać miejscami pory roku. Jeśli uwzględnimy precesję osi Ziemi (czyli zmianę kąta jej nachylenia), długość cyklu pór roku wynosi 365 dni, 5 godzin, 48 minut i 45,11 sekundy.
Zmiany w nachyleniu osi Ziemi dają nam dodatkowe 20 minut i 24,43 sekundy na jedno okrążenie wokół Słońca. Zatem prawdziwy rok syderyczny (inaczej: gwiazdowy) związany z ruchem orbitalnym jest dłuższy niż rok juliański, ale rok zwrotnikowy (inaczej: słoneczny) związany ze zmianą pór roku (która obchodzi nas zdecydowanie bardziej) jest krótszy. Jest to spowodowane zależnością pór roku od nachylenia osi Ziemi względem Słońca, a nie od samego położenia Ziemi na orbicie. Zezwalam na skserowanie tej części książki i rozdawanie kopii wszystkim tym, którym te rodzaje lat się mylą. Może z sugestią, że następne postanowienie noworoczne powinno dotyczyć zrozumienia, czym tak właściwie jest nowy rok.
Ta drobna rozbieżność między latami w kalendarzach juliańskim i zwrotnikowym była na tyle nieznaczna, że do XVI wieku tego właśnie kalendarza używano praktycznie w całej Europie i w części Afryki. Ale Kościół katolicki miał już po dziurki w nosie faktu, że dzień śmierci Jezusa (obchodzony zgodnie z cyklem pór roku) coraz bardziej oddalał się od dnia jego narodzin (który był ustalony na sztywno). Papież Grzegorz XIII uznał, że trzeba coś z tym zrobić. Na nowy kalendarz musieliby przejść wszyscy. Szczęśliwie papieżom jednego odmówić nie można: potrafią przekonać mnóstwo osób do zmiany swoich przyzwyczajeń z pozornie całkowicie uznaniowych pobudek.
Obecnie wiemy już, że kalendarz gregoriański nie jest dziełem papieża Grzesia – ten był zbyt zajęty swoimi papieskimi sprawami i przekonywaniem ludzi, by zmienili swoje przyzwyczajenia – lecz włoskiego lekarza i astronoma Aloisio „Luigiego” Giglii. Uczony niestety zmarł w roku 1576, a więc na dwa lata przed udostępnieniem przez komisję reformatorską jego (lekko zmienionego) kalendarza. Po skromnej zachęcie w postaci bulli papieskiej z roku 1582, która odgórnie nakazała wszystkim przyjąć nowy sposób liczenia lat, duża część świata tak właśnie postąpiła.
Najważniejszym pomysłem Luigiego było zachowanie standardowego układu juliańskiego z rokiem przestępnym co cztery lata, ale z pominięciem go trzy razy na każde cztery wieki. I tak latami przestępnymi zostały wszystkie te, które są podzielne przez cztery, przy czym zgodnie z sugestią Luigiego lata jednocześnie podzielne przez sto miały być zwykłe (z wyjątkiem tych, które były też podzielne przez czterysta). Dzięki temu uzyskał on średnią 365,2425 dnia na rok, co wypada zadziwiająco blisko pożądanej wartości dla roku zwrotnikowego, czyli 365,2422 dnia.
Chociaż ten kalendarz był lepszy z punktu widzenia matematyki, to z uwagi na to, że powstał w związku ze świętami katolickimi i został wprowadzony przez papieża, kraje pozostające w opozycji do katolicyzmu sprzeciwiły się także nowemu kalendarzowi. Anglia (i wówczas niejako automatycznie Ameryka Północna) jeszcze przez półtora wieku trzymała się starego kalendarza juliańskiego, w wyniku czego nie dość, że rozbieżność względem cyklu pór roku zwiększyła się u jej mieszkańców o kolejny dzień, to jeszcze wypadały tam inne daty niż w większości pozostałych krajów Europy.
Problem był tym poważniejszy, że kalendarz gregoriański dodatkowo został cofnięty: ponownie skalibrowano całą rachubę lat, tak jakby od samego początku używano właśnie jego, a nie systemu juliańskiego. Papież wykorzystał swoją władzę i nakazał, aby z października 1582 roku usunąć dziesięć dni. W ten sposób w krajach katolickich po 4 października tego roku nastąpił 15 października. Wszystko to oczywiście nieco utrudnia pracę historykom. Kiedy 12 lipca 1627 roku, podczas wojny angielsko-francuskiej, wojska wyspiarskie wylądowały na Île de Ré, siły francuskie były gotowe do walki 22 lipca. Czyli tego samego dnia. Przynajmniej dla obu armii był to czwartek.
Z czasem, kiedy kalendarz gregoriański był coraz częściej postrzegany jako sposób na podążanie za zmianami pór roku, a coraz mniej jako coś narzuconego przez papieża, coraz więcej krajów przyjmowało nową rachubę lat. Ustawa brytyjskiego parlamentu z roku 1750 wspomina, że daty w angielskim kalendarzu różnią się nie tylko od tych w kontynentalnej Europie, ale nawet od tych w Szkocji. Zatem w końcu również Anglicy dokonali zmiany – nie wspomnieli jednak wprost o papieżu, lecz tylko o „sposobie poprawienia kalendarza”.
W roku 1752 królestwo Anglii (które wciąż – choć z trudem – obejmowało pewne terytoria w Ameryce Północnej) usunęło jedenaście dni z września. I tak po drugim dniu września nastąpił czternasty. W odróżnieniu od tego, co można wyczytać w internecie, nikt nie narzekał na stratę jedenastu dni życia i nikt nie wychodził na ulice z transparentami głoszącymi: „Oddajcie nam nasze jedenaście dni”. Wiem to na pewno: wybrałem się do British Library – brytyjskiej biblioteki narodowej – w której przechowywane są egzemplarze wszystkich gazet wydanych kiedykolwiek na terenie Anglii, i przeszukałem doniesienia z tamtego czasu. Ani jednej wzmianki o jakichś skargach; jedynie reklamy nowych kalendarzy. Dla ich producentów nastały złote czasy.
Nieprawdziwe przekonanie, że ludzie protestowali przeciwko zmianie kalendarza, zdaje się mieć źródło w debatach politycznych poprzedzających wybory w roku 1754. Opozycjoniści atakowali wszystko, co ich rywale zrobili za swojej kadencji, w tym właśnie zmianę kalendarza i kradzież jedenastu dni. Uchwycił to olejem na płótnie William Hogarth w swoim obrazie zatytułowanym Bankiet przedwyborczy. Jedyne w tamtych czasach zasadne obawy podnosili ci, którzy nie chcieli płacić podatków za pełne 365 dni, podczas gdy w rzeczywistości właśnie ich ubyło. I słusznie, można by rzec.
Rosja dokonała zmiany, żeby wyrównać swój kalendarz z resztą świata, dopiero w roku 1918, który zaczął się czternastego lutego zamiast pierwszego stycznia. Co musiało wiele osób solidnie zaskoczyć. Wyobraźcie to sobie: budzicie się po sylwestrowej zabawie, a tu już walentynki. Nowy kalendarz pozwoliłby Rosjanom przybyć na czas na olimpiadę organizowaną w roku 1920. Gdyby zostali zaproszeni. Niestety dla nich Rosja stała się tymczasem Rosją Sowiecką, którą z przyczyn politycznych pominięto. Rosyjscy sportowcy pojechali dopiero na igrzyska organizowane w 1952 roku w Helsinkach, gdzie w końcu zdobyli swój upragniony złoty medal w strzelectwie.
Pomimo wszystkich poprawek obowiązujący obecnie kalendarz gregoriański nie jest bynajmniej doskonały. Wynikająca z niego średnia 365,2425 dnia na rok jest całkiem niezła, ale wciąż nie jest to dokładnie 365,2421875 dnia. Nadal mylimy się o dwadzieścia siedem sekund rocznie, a to oznacza, że rozmijamy się z kalendarzem zwrotnikowym o pełny dzień co 3213 lat. Pory roku zamieniają się miejscami co pół miliona lat. I na pewno zaniepokoi wszystkich informacja, że obecnie nie ma żadnych planów, by temu zaradzić!
Po prawdzie w tak długiej perspektywie czasowej mamy inne zmartwienia. Nie tylko oś obrotu Ziemi ciągle się przesuwa, ale czyni to też sama orbita. Nasza planeta krąży wokół Słońca po elipsie, a punkty najbliższe i najdalsze od tej gwiazdy co 112 000 lat zataczają własne koło. Do tego wszystko może pomieszać oddziaływanie grawitacyjne pozostałych planet. W Układzie Słonecznym panuje niezły bajzel!
Dzięki współczesnej astronomii Juliusz Cezar może się zaśmiać ostatni. Rok świetlny – czyli miara odległości przebytej przez światło w ciągu jednego roku (w próżni) – bazuje na roku trwającym 365,25 dnia, zgodnie z kalendarzem juliańskim. Zatem odległości w kosmosie mierzymy dziś jednostką pośrednio zdefiniowaną przez starożytnego Rzymianina.
Dzień, w którym zatrzyma się czas
O 3.14 nad ranem we wtorek 19 stycznia 2038 roku wiele współczesnych mikroprocesorów i komputerów przestanie działać. Winę za to ponosi sposób przechowywania bieżącej daty i godziny. Poszczególne komputery mają dość kłopotów z pamiętaniem, ile sekund minęło od ich włączenia, a sprawy dodatkowo się komplikują, kiedy trzeba jeszcze pilnować, jaki jest dziś dzień. Komputerowa rachuba czasu boryka się z tymi samymi odwiecznymi problemami z korygowaniem rozbieżności między kalendarzem a cyklami planety co my, a do tego musi sobie radzić z ograniczeniami systemu binarnego.
Kiedy na początku lat siedemdziesiątych XX wieku pojawili się pierwsi prekursorzy współczesnego internetu, zaistniała potrzeba ustalenia wspólnego standardu mierzenia czasu. W tym celu Instytut Inżynierów Elektryków i Elektroników (Institute of Electrical and Electronics Engineers, IEEE) powołał komitet, który w roku 1971 zaproponował, aby wszystkie systemy komputerowe zliczały sześćdziesiąte części sekundy, za punkt odniesienia przyjmując 1 stycznia 1971 roku. Było to tym łatwiejsze, że komputery były zasilane prądem o częstotliwości 60 herców. Sprytne. Tyle że system sześćdziesięciohercowy wyczerpałby pojemność 32-bitowego licznika w nieco ponad dwa lata i trzy miesiące. To już mniej sprytne.
System zmieniono zatem tak, żeby zliczał całe sekundy od początku roku 1970. Licznik wykorzystuje 32-bitową liczbę ze znakiem, co pozwala zapisać w nim maksymalnie 2 147 483 647 sekund: ponad sześćdziesiąt osiem lat. Tak postanowili przedstawiciele pokolenia, które w ostatnich sześćdziesięciu ośmiu latach było świadkami drogi od wynalezienia pierwszego samolotu przez braci Wright po taniec kosmonautów na Księżycu. Byli przekonani, że do roku 2038 komputery zmienią się nie do poznania i nie będą już używały uniksowego zegara.
A mimo to mniej więcej w połowie drogi nadal używamy tego systemu. Czas dosłownie powoli nam się kończy.
Komputery istotnie zmieniły się nie do poznania, ale wciąż wykorzystują ten sam uniksowy zegar. Jeśli ktoś używa dowolnego linuksa lub maca, licznik znajduje się w dolnej połowie systemu operacyjnego, tuż pod interfejsem graficznym. Jeśli czytając te słowa, masz pod ręką komputer z MacOS-em, uruchom aplikację Terminal, która stanowi bramę do faktycznego sposobu działania komputera. Następnie wpisz polecenie date +%s i naciśnij Enter**. Z ekranu spojrzy na ciebie liczba sekund, które upłynęły od 1 stycznia 1970 roku.
Jeśli czytasz to przed środą 18 maja 2033 roku, liczba wciąż jest mniejsza niż dwa miliardy. Ale będzie impreza! Niestety w mojej strefie czasowej dwumiliardowa sekunda upłynie o 4.30 rano. Do dziś pamiętam zakrapianą imprezę 13 lutego 2009 roku, kiedy tuż po 23.31 świętowałem z paroma kumplami upłynięcie sekundy numer 1 234 567 890. Jon, znajomy programista, napisał aplikację, która odliczała nam czas do tego przełomowego momentu. Pozostali bywalcy knajpki wyglądali na bardzo zdziwionych, dlaczego świętujemy walentynki o pół godziny za wcześnie.
Ale odłóżmy na bok wiwaty i wróćmy do tego, że jesteśmy już sporo za półmetkiem odliczania do katastrofy. Kiedy upłynie te 2 147 483 647 sekund, wszystko się zatrzyma. Microsoft Windows ma własny sposób odliczania czasu, ale MacOS powstał na bazie Unixa. A co ważniejsze, wiele nieodzownych procesorów – od serwerów odpowiedzialnych za działanie internetu po twoją pralkę – będzie wtedy pracowało pod kontrolą jakiejś pochodnej systemów uniksowych. Wszystkie są zatem podatne na problem roku 2038.
Nie mam pretensji do osób, które wybrały taki a nie inny sposób rachuby czasu w Unixie. Pracowały z tym, co było wówczas do dyspozycji. Inżynierowie lat siedemdziesiątych XX wieku uznali, że ktoś inny kiedyś, w odległej przyszłości, zaradzi problemom spowodowanym ich decyzją (postępowanie typowe dla pokolenia wyżu demograficznego). No i powiedzmy sobie szczerze – sześćdziesiąt osiem lat to bardzo długo. Pierwsze wydanie tej książki ukazało się w roku 2018 i co pewien czas rozmyślam nad tym, jak zapewnić jej aktualność w przyszłości. Może powinienem pododawać w stosownych miejscach „kiedy piszę te słowa” albo pieczołowicie przebudować zdania tak, żeby z biegiem czasu zmiany i nowe odkrycia nie zdezaktualizowały treści? Możecie to czytać już po minięciu progu dwóch miliardów sekund w roku 2033. Przed tym się zabezpieczyłem. Ale zupełnie nie wziąłem pod uwagę osób czytających to w roku 2086. A to będzie właśnie za sześćdziesiąt osiem lat!
Podjęto już pewne kroki, by zaradzić tej sytuacji z zegarem. Wszystkie procesory używające 32-bitowych liczb są nazywane układami 32-bitowymi. Mało kto przy zakupie nowego laptopa sprawdza domyślny system zapisu liczb, ale Maki są 64-bitowe już od blisko dziesięciu lat, a najczęściej używane serwery też przeszły już na 64 bity. I choć niestety niektóre maszyny 64-bitowe wciąż wykorzystują do rachuby czasu 32 bity, żeby zachować zgodność ze starszymi kumplami, w większości przypadków nowo kupiony komputer 64-bitowy będzie mógł zliczać sekundy jeszcze przez wiele, wiele lat.
Największą liczbą ze znakiem, jaką można zapisać w systemie 64-bitowym, jest 9 223 372 036 854 775 807. Tyle sekund odpowiada 292 miliardom i 300 milionom lat. W takich sytuacjach użyteczną jednostką miary okazuje się wiek wszechświata: 64-bitowy czas uniksowy wystarczy do zmierzenia dwudziestojednokrotności tej wielkości. Komputery będą działały (przy założeniu, że w tym czasie nie doczekamy się kolejnej zmiany) aż do 4 grudnia 292 277 026 596 roku n.e. Będzie to niedziela.
Kiedy tylko świat stanie się całkowicie 64-bitowy, będziemy bezpieczni. Pytanie brzmi: czy zdążymy zmodernizować całe to obecne zatrzęsienie mikroprocesorów do roku 2038? Potrzebujemy albo nowych procesorów, albo aktualizacji, która wymusi na starych układach zapisywanie czasu przy użyciu niezwykle dużej liczby.
W ostatnim czasie musiałem zaktualizować oprogramowanie w żarówkach, telewizorze, termostacie układu ogrzewania i odtwarzaczu multimedialnym podłączanym do telewizora. Mam przekonanie graniczące z pewnością, że wszystkie te urządzenia wykorzystują układy 32-bitowe. Czy zdążę je zaktualizować na czas? Biorąc pod uwagę moją obsesję na punkcie aktualności oprogramowania układowego – zapewne tak. Ale pozostanie wiele urządzeń, które aktualizacji się nie doczekają. Procesory znajdują się też w mojej pralce, zmywarce i w moim samochodzie. A ja nie mam pojęcia, jak je zaktualizować.
Łatwo jest to wszystko zbagatelizować i potraktować jako drugą iterację „problemu roku 2000”, kiedy to żadna katastrofa nie nastąpiła. Dzięki ogromnemu wysiłkowi prawie wszystko udało się zaktualizować. Ale to, że uniknęliśmy katastrofy, nie oznacza, że nie było żadnego zagrożenia. Łatwo jest popaść w beztroskę, skoro wtedy tak dobrze nam poszło. Niestety problem roku 2038 będzie wymagał o wiele bardziej fundamentalnych zmian w kodzie oprogramowania, a czasem wymiany samego sprzętu.
Ciąg dalszy dostępny w wersji pełnej.
* Oczywiście w liczbie binarnej nie możemy zapisać znaku plus ani minus, zatem znak liczby jest określany zerem lub jedynką, co jednak nadal wymaga użycia do tego celu jednego bitu.
** Na komputerach z systemem Windows w wierszu poleceń (cmd) należy wpisać komendę: powershell -command „[int32](New-TimeSpan „1/1/1970”).TotalSeconds” (przyp. red.).
Błędy inżynieryjne
Rozdział dostępny w wersji pełnej.
Little data
Rozdział dostępny w wersji pełnej.
Utrata formy
Rozdział dostępny w wersji pełnej.
Na to nie można liczyć
Rozdział dostępny w wersji pełnej.
Błąd: nie można obliczyć
Rozdział dostępny w wersji pełnej.
Prawdopodobnie błędne
Rozdział dostępny w wersji pełnej.
Czasem dosłownie płaci się za błędy
Rozdział dostępny w wersji pełnej.
Okrąglutkie
Rozdział dostępny w wersji pełnej.
Zbyt małe, by zauważyć
Rozdział dostępny w wersji pełnej.
Jednostki, konwencje… Dlaczego tak trudno się czasem dogadać?
Rozdział dostępny w wersji pełnej.
Statystyka i co z niej wynika
Rozdział dostępny w wersji pełnej.
Cłaciwokie lwosoe
Rozdział dostępny w wersji pełnej.
Błąd: nie można obliczyć
Rozdział dostępny w wersji pełnej.
Czego nauczyliśmy się na własnych błędach?
Rozdział dostępny w wersji pełnej.
Podziękowania
Rozdział dostępny w wersji pełnej.
Źródła zdjęć i ilustracji
Rozdział dostępny w wersji pełnej.