Nie wiemy kim jest Harry. Nie wiemy nawet czy ma na imię Harry; nazwaliśmy go tak, bo jego pamiętnik odnaleźliźmy w pliku o nazwie HARRY_READ_ME.txt. Wiemy tylko, że pracował przy programowaniu modeli klimatu. Nie wiemy nawet dokładnie jakie było jego zadanie; z tekstu wnioskujemy jedynie, że pracował przy systemie zawierającym bazę danych historycznych pomiarów ze stacji meteorologicznych, wykorzystywanych do modelowania zmian klimatu. Właściwie, nie wiemy nawet czy Harry istniał. Jego pamiętnik znajduje się wśród materiałów opublikowanych w wyniku niedawnego włamania do brytyjskiej uczelni, ale prawdopodobnie jest on fałszywy: jego treść przypomina wszak kompilację anegdotek z strony DailyWTF, a nie wspomnienia pracownika poważnej Instytucji Naukowej…
Praca Harry’ego nie należała do łatwych. Po pierwsze, system nie był bazą danych w znaczeniu bazy relacyjnej czy obiektowej — o nie, to było coś stworzonego przez twardzieli dla twardzieli: kolekcja 11 tysięcy plików. Co więcej, autor systemu postanowił wykorzystać zalety architektury von Neumanna — drzewo zawierało mieszaninę kodu, kilkunastu plików _READ_ME.txt oraz plików z danymi. Za to napisany był zgodnie z najnowszymi trendami, czyli wykorzystując paradygmat wielojęzykowości: w mieszaninie Fortranu, IDL-u, Matlaba, Excela i Knuth raczy wiedzieć czego jeszcze.
System, jak każdy porządny tego typu, działał na klastrze linuksowym. Myliłby się ten, kto myślałby że pliki danych, zgodnie z tradycją, były w tekstowym formacie CSV lub ostatecznie Matlaba — to byłoby zbyt proste. Pliki były w formacie własnościowym, co więcej, zupełnie nieudokumentowanym. Przed Harrym stało więc zadanie reverse engineeringu formatu danych. Rozwiązanie okazało się w sumie dość proste: w jednym typie pliku wystarczyło skasować pierwsze 4 linie, załadować pozostały ciąg liczb do Matlaba, zgadnąć rozmiar macierzy (360×720) i zrobić wykres. Rysunek przypominał opublikowane wcześniej mapy anomalii temperaturowych na świecie, więc potem było już z góry: na tej podstawie można było wreszcie zdekodować sposób zapisu współrzędnych geograficznych w pozostałej części bazy danych…
Oczywiście, na nieuważnego eksploratora Systemu czekały dalsze niespodzianki. Jak się okazało, pliki z wynikami pomiarów temperatury z różnych stacji meteorologicznych zawierały wprawdzie nazwy i współrzędne tychże, natomiast nikt nie zadbał o to, aby wszystkie nazwy w systemie były unikalne. W zamian wprowadzono – zapewne w trosce przed utratą danych – redundację: jedna stacja mogła występować pod kilkoma nazwami. Cóż, nic, czego nie można rozwiązać metodami statystycznymi (z dodatkiem sieci neuronowej wetware). Dzięki napisaniu specjalnego programu, Harry zdołał znormalizować bazę danych z obszaru Australii (1007 stacji) w ciągu niecałych trzech godzin. Niezrażony, zagłębił się nadal w problem…
“…so help me Codd”, mógłby rzec wyznawca teorii relacyjnej na widok Systemu. Redundancja i denormalizacja (a może po prostu konfuzja) występowała w zbiorze danych nie tylko w przestrzeni, ale i czasie. Jedne pliki zawierały dane w cyklach rocznych, inne – miesięcznych (co jednak dziwne, liczby były w obu przypadkach takie same), choć program analizujący traktował wszystkie równo, odczytując stałą ilość rekordów — nijak zresztą nie pasującą ani do jednego ani do drugiego przypadku.
Na dzielnego programistę czekały też inne pułapki. Czasami dawał znać o sobie chochlik, który powodował, że suma kwadratów stawała się liczbą ujemną (wtajemniczeni mówili, że imię jego jest Arithmetic Overflow). Innym zaś razem program po napotkaniu w pliku szczególnie złośliwego rekordu umierał z głośnym okrzykiem SIGSEGV! Nie było wiadomo, czemu tak się dzieje: poprzedni programista pozostawił tylko enigmatyczne ostrzeżenie o tym, że kiedy rozbudowywano klaster, zmieniono wersję kompilatora Fortranu…
W końcu jednak dane wejściowe udało się załadować. Teraz należało przejść do kolejnego kroku algorytmu: pokryć powierzchnię świata siatką, na której program prowadzić będzie obliczenia. To wymagało rozwiązania poważnego problemu algorytmicznego: należało napisać na nowo program, wyliczający odległość pomiędzy dwoma punktami o zadanych współrzędnych geograficznych. Praca posuwała się jednak naprzód. Pomijając kilka drobnych problemów (jeden z programów tkwił mentalnie w epoce przedkopernikańskiej i wykonywał operacje na płaszczyźnie zamiast na powierzchni kuli), system udało się w końcu uruchomić.
I oto nadszedł wielki dzień: System przesymulował Model i wypluł Dane Wyjściowe. Wyliczone wartości temperatury zgadzały się z tymi, które ten sam system, z tych samych danych wytworzył kilka lat wcześniej — znaczy, prawie się zgadzały, bo obarczone były niewielkim błędem rzędu 0.5 do 1 stopnia Celsjusza…
Wiadomość pochodzi z portalu OSnews.pl
Popularity: 1%
Sprawdź Także Następujące Wpisy:
- Internet Explorer spada na 3. miejsce
- ReactOS 0.3.14 wydany
- Liderzy protestów przeciw ACTA bojkotują debatę u Premiera
- Internet – urząd czy targowisko – debata na temat wolności w Sieci
- Strony rządowe przygotowują się do obrony przed atakami


