poprzedni koniec spis kolejny
Technika kontra nauka
Bogusław Jackowski

Nauka i technika – cytat słowa te łączy silny związek frazeologiczny, zupełnie jakby istniał między nimi oczywisty związek semantyczny. Niewykluczone, że w początkach rozwoju technologicznego rozwój nauki istotnie szedł w parze z rozwojem techniki. Niewykluczone, że jeszcze kiedyś tak będzie. Ale na razie wygląda na to – szczególnie w informatyce – że nauka sobie, a technika sobie. Odrębność obu światów wyraźnie widać w dziedzinie zajmującej się teoretyczną analizą wielkości danych i szybkości algorytmów, zwanej złożonością obliczeniową. Czy ktoś z Państwa zetknął się z dokumentacją, w której znalazło się teoretyczne oszacowanie zasobów niezbędnych do funkcjonowania programu oraz czasu pracy w zależności od danych wejściowych? Wątpię. A przecież obyczaj zamieszczania w dokumentacji oszacowania złożoności stosowanych algorytmów mógłby stymulować wzrost jakości software'u.

Obowiązuje wszakże inny obyczaj: program działa za wolno – dokupujemy trochę pamięci; program działa jeszcze wolniej (co, o dziwo, nie dziwi) – dokupujemy większy dysk; nic nie pomaga, ale się nie przejmujemy, bo niebawem kupimy nową wersję programu, z natury większą i wolniejszą, a więc wymagającą mocniejszego hardware'u, i zabawa zacznie się od początku.

Pamiętajmy jednak, że póki użytkownicy będą skłonni wierzyć, że oprogramowanie gigantyczne i ślamazarne to oprogramowanie nowoczesne, póty producenci nie będą wykorzystywać metod analizy złożoności obliczeniowej do optymalizacji sprzedawanego software'u. Trudno mieć to producentom za złe. Przy braku nacisku ze strony klientów oznaczałoby to dla nich nieuzasadnione koszty.

W systemie MS DOS przez wiele lat program „sort” korzystał z algorytmu o złożoności proporcjonalnej do kwadratu liczby wierszy do posortowania, to znaczy dwukrotnie większe dane algorytm przetwarzał czterokrotnie dłużej, dane trzykrotnie większe – dziewięciokrotnie dłużej, itd. Tymczasem znacznie efektywniejszy algorytm sortujący powstał już w latach czterdziestych i właściwie powinien być znany twórcom systemu DOS. Nie słyszałem jednak, żeby ktokolwiek utyskiwał na nieefektywność dosowego sortowania. W systemie Windows 95 – nie wiedzieć czemu – sortowanie działa przyzwoicie (w czasie prawie proporcjonalnym do liczby wierszy do posortowania), ale tak jak poprzednio nikt nie narzekał, tak teraz nikt nie chwali poprawy stanu rzeczy. Być może użytkownicy systemu WIN/DOS rzadko korzystają z sortowania, ale to z kolei oznacza, że dla większości użytkowników program „sort” to po prostu zbędny śmieć na dysku.

Teoria złożoności obliczeniowej, jak wspomniałem, zajmuje się nie tylko szybkością algorytmów, ale także wielkością zasobów wykorzystywanych przez program. Tu także nietrudno o przykłady niefrasobliwego potraktowania kwestii złożoności – wystarczy zastanowić się nad wielkością plików produkowanych przez niektóre popularne programy, takie jak CorelDRAW czy MS Word. W przypadku tych programów praktycznie nie ma możliwości zapanowania nad ilością bezużytecznej informacji, przechowywanej w plikach. Szczególnie dotkliwie odczuwa się to przenosząc dane między różnymi wersjami czy choćby tylko instalacjami. Jeśli szczęśliwie uda się te dane przenieść, to na ogół rozmiar pliku rośnie, bywa, że kilkakrotnie. Łatwo sprawdzić, czy plik zawiera „śmieciową informację”. Wystarczy poddać go kompresji, na przykład za pomocą programu ZIP: jeśli kompresja jest znacząca, to wolno przypuszczać, że producent niestarannie zaprojektował format danych i że nieoszczędnie gospodaruje pamięcią dyskową, czyli – mówiąc wprost – że szasta pieniędzmi użytkownika.

Kompresja danych to również bardzo stary wynalazek informatyczny – kłaniają się lata czterdzieste i pięćdziesiąte. Zważmy przy tym, że informatyka teoretyczna nie spoczęła na laurach w tamtych czasach i – przynajmniej do niedawna – nie strzegła zazdrośnie swoich osiągnięć, w odróżnieniu od techniki, że wspomnę parę spektakularnych procesów sądowych o prawa autorskie do niektórych rozwiązań software'owych.

Tak więc technika – jak na razie – kroczy własną drogą. Jest to zrozumiałe: po co cyzelować programy i dane, korzystając z dorobku nauki w tej dziedzinie, skoro wystarczy dołożyć parę „gwizdków i dzwonków” i zalecić nabycie komputera większej mocy? Użytkownik chętnie wyda pieniądze, by mieć lepszy komputer i nowszy program – to poprawi jego samopoczucie. I tak hardware z softwarem maszerują ręka w rękę, stawiając kroki na przemian: rozrasta się software – zwiększa się moc hardware'u – rozrasta się software – zwiększa się moc hardware'u... Tylko co ja poradzę, że ten marsz dwóch tytanów ku świetlanej przyszłości dziwnie mi się z porzekadłem „wiódł ślepy kulawego” kojarzy?


poprzedni start spis kolejny