Król programistów
Ma to sens czy nie ? to zupełnie inna sprawa. Ale nie inaczej jest wśród informatyków, choć tu żaden oficjalny ranking nie jest prowadzony; niemniej większość ludzi z tej branży z pewnością zadawała sobie pytanie: kto z nas jest najlepszy? Tim Berners-Lee, twórca sieci WWW? John von Neumann, twórca architektury komputerów? Bill Gates, twórca Microsoftu?
Odpowiedź zależy oczywiście od przyjętych kryteriów. Gdyby jednak zarządzono ?w tym temacie? światowe głosowanie prawdziwych zawodowców (podkreślam: zawodowców, nie szerokiej publiczności), to gotów jestem się założyć, że wygrałby człowiek, którego nazwiska publiczność prawdopodobnie w ogóle nie zna: Donald Ervin Knuth. Gdy jego nazwisko wpisze się do Google, otrzyma się? blisko milion odnośników. Niektórzy nazywają go Eulerem informatyki?
[caption id="attachment_6034" align="aligncenter" width="300"] Donald E. Knuth.[/caption]
Ten miły i jowialny starszy pan ? dziś liczący sobie lat 74 z kawałkiem ? obdarzony zupełnie niezwykłym talentem matematycznym i jeszcze bardziej niezwykłym poczuciem humoru, jest Amerykaninem. Przyszedł na świat w Milwaukee w stanie Wisconsin 10 stycznia 1938 roku jako syn nauczyciela miejscowej szkoły protestanckiej, w jednej osobie niedzielnego organisty w lokalnej świątyni. Donald ponoć od najmłodszych lat interesował się królową nauk (choć przez dłuższy czas nie wiedział, że ma w tej dziedzinie ogromne uzdolnienia twórcze) i muzyką: grał na organach kościelnych, saksofonie i tubie; nawiasem mówiąc, zainteresowania muzyczne i matematyczne idą w parze dosyć często. Miał też różne inne talenty: jedna z licznych związanych z nim anegdot dotyczy tego, że jako uczeń wygrał konkurs promocyjny firmy Ziegler, która wymagała od uczestników ułożenia maksymalnej liczby różnych słów z nazwy ?Ziegler?s Giant Bar?. Autorzy konkursu liczyli na maksymalnie 2500 słów, a Knuth ułożył ich w ciągu dwóch tygodni zawziętej pracy? 4500.
Uczniem w szkole średniej był wybitnym: jego średnia ocen z nauki w Milwaukee Lutheran High School była najwyższa w dziejach szkoły i do dziś nie została przez nikogo przekroczona.
W roku 1956 piekielnie zdolny nastolatek ? który wówczas jeszcze zastanawiał się poważnie, czy nie wybrać kariery zawodowego muzyka ? zetknął się po raz pierwszy w życiu z komputerem. Była to słynna maszyna IBM 650, którą instalowano wówczas we wszystkich poważnych uczelniach. Ten kontakt stanowił początek fascynacji będącą wówczas w powijakach informatyką. Knuth jednak i wtedy nie był jeszcze pewien swych uzdolnień matematycznych: wybrał modne studia fizyczne w stosunkowo mało znanym Case Institute of Technology w Cleveland w stanie Ohio. Tu dopiero na jego ogromnym talencie poznał się wykładowca matematyki Paul Guenther. ?Nigdy w życiu nie spotkałem się dotychczas z zawodowym matematykiem? ? wspomina Knuth ? ?i jego wspaniałe poczucie humoru oraz absolutna niewrażliwość na najdziksze pomysły studentów zrobiły na mnie ogromne wrażenie?. To Guenther namówił Donalda na zmianę kierunku studiów.
Knuth miał 22 lata, gdy uzyskał ? co było w dziejach Case bezprecedensowe ? jednocześnie stopień bakałarza (licencjat) i magistra na podstawie jednej rozprawy uznanej za wybitną; w tymże roku opublikował swoje dwie pierwsze prace naukowe. W trzy lata później zostaje doktorem matematyki, przy czym tytuł ten otrzymuje już od uczelni absolutnie pierwszorzędnej, przesławnego Caltechu (California Institute of Technology). Tu właśnie, na znakomitym tamtejszym wydziale matematyki, przepracuje jako profesor pierwszych osiem lat swej działalności naukowej. Tu napisał bardzo ciekawą ? a dla wielu matematyków w pewnym sensie zabawną ? rozprawę, w której rozważał system liczenia oparty nie na podstawie 10 ani 2, ale na podstawie? urojonej 2i. I tu ? w roku 1962, czyli rok przed doktoratem ? zaczyna na zamówienie wydawcy (Addison Wesley) pisanie dzieła, które okaże się dziełem jego życia i najsławniejszą chyba dziś monografią informatyczną na świecie.
To dzieło to słynny podręcznik The Art Of Computer Programming (Sztuka programowania, tomy I?III, wyd. polskie: Warszawa, WNT 2002 ? odpowiada 3. wydaniu amerykańskiemu). Zaplanowany został przez autora na siedem opasłych, wielosetstronicowych tomów; pierwszy ? uznany natychmiast za klasykę ? ukazał się w roku 1968, zaś w ciągu 45 lat Knuth w pełni ukończył ledwie trzy; obecnie zaś jest bardzo zaawansowany w pracach nad czwartym (zostały opublikowane dotychczas trzy obszerne fragmenty).
Sztuka jest księgą niezwykłą i w niezwykły sposób powstaje. Ambicją Knutha jest absolutna aktualność i perfekcyjna, pedantyczna wręcz bezbłędność. Zmiany w wydanych już tomach i propozycje do następnych są przez uczonego publikowane w formie stosunkowo niewielkich zeszytów, które same w sobie stanowią odrębne całostki. Dopiero później ? po weryfikacji czytelniczej ? są włączane do kolejnych edycji.
Tej weryfikacji warto poświęcić kilka słów, stała się ona bowiem anegdotyczna i wręcz legendarna. Otóż Donald Knuth? płaci swoim czytelnikom za wskazanie dowolnego błędu; może to być nawet zwykła literówka. Płaci czekiem na 2,56 dolara i? nie wydał do dziś ani grosza. Nie dlatego, że nikt nie znajduje błędów, choć w pracach uczonego jest ich niesamowicie mało ? ale dlatego, że jest to zadanie tak niesłychanie trudne, iż czek z podpisem Knutha jest przez informatyków całego świata ceniony niemal tak samo jak dyplom doktorski. Z reguły oprawia się go w cenne ramy i wiesza na ścianie w gabinecie jako potwierdzenie najwyższych kwalifikacji naukowych posiadacza. Owa dziwna suma, te dwa dolary i pięćdziesiąt sześć centów nie jest oczywiście przypadkowa: 256 to dwa do potęgi ósmej. Osiem znaków binarnych ? zer i jedynek ? to w informatyce ?bajt?. Knuth płaci więc swoim kolegom? bajta centów lub inaczej ? 100 centów zapisane w układzie dwójkowym; ot, taki ? czytelny dla specjalistów ? środowiskowy żarcik. Polscy informatycy ? o ile wiem ? są w posiadaniu ośmiu czeków Knutha.
[caption id="attachment_6031" align="aligncenter" width="300"] Słynny czek Knutha.[/caption]
Sztuka programowania jest dziełem fascynującym jeszcze pod jednym względem. Otóż Knuth każdy jej rozdział obarcza niebywale erudycyjnym mottem literackim, co zresztą jest obyczajem u autorów amerykańskich spotykanym dość często. Knuth nie byłby jednak sobą, gdyby i tu nie zrobił czegoś dziwnego i zaskakującego. Otóż każde jego motto jest nie tylko odpowiednio dobrane sensem do treści rozdziału, ale składa się wyłącznie ze słów występujących w tym rozdziale! Proszę sobie wyobrazić, jak straszliwe jest to wyzwanie dla tłumaczy monografii i jej zagranicznych wydawców?
Powstanie Sztuki programowania jest związane z co najmniej dwoma jeszcze wielkimi osiągnięciami informatycznymi Knutha. Otóż żaden z wydawców amerykańskich nie był w stanie zaspokoić wymagań autora, dotyczących druku niebywale skomplikowanych wzorów matematycznych. W związku z tym Knuth? wymyślił własny system profesjonalnego składania najtrudniejszych tekstów, słynny TeX (czyta się ?tech?, traktując ostatni znak jako grecki), używany dziś powszechnie przez ludzi nauki. Że zaś nie podobały mu się również używane wówczas czcionki, więc stworzył także własny system projektowania znaków METAFONT. Nie trzeba dodawać, że system ten jest dziś równie popularny jak TeX?
Od 1968 roku Knuth był profesorem informatyki na słynnym Stanford University, który w roku 1993 przyznał mu tytuł Professor Emeritus (wbrew popularnemu mniemaniu nie oznacza to w USA wcale przejścia na emeryturę, ale jest wysoko cenioną godnością honorową; najlepszym tłumaczeniem byłoby tu chyba: Profesor Zasłużony). Obejmując stanowisko, Knuth wprowadził do Stanford dwa nowe przedmioty, dziś uważane za absolutną klasykę: teorię struktur danych i matematykę dyskretną. Inna sprawa, że dziś uczony nie jest już etatowym pracownikiem żadnej uczelni ? ale to tylko dlatego, że postanowił poświęcić się wyłącznie pracy nad Sztuką programowania.
Gdy chodzi o osiągnięcia czysto naukowe ? sięgnijmy do Wikipedii: ?Knuth znacząco rozwinął algorytmikę, opracował teoretycznie wiele zagadnień z zakresu matematyki i informatyki, m.in. algorytm znajdujący podciągi w ciągach znaków (algorytm Knutha-Morrisa-Pratta), algorytm Knutha-Bendixa. Jest autorem lub współautorem około 420 publikacji i artykułów, 32 książek wydanych w wielu językach, posiada 5 patentów. Otrzymał wiele doktoratów honoris causa. Spośród licznych medali i odznaczeń ważniejsze są: Nagroda Grace Murray Hopper (1971), Nagroda Turinga (1974), Narodowy Medal Nauki (1979), Medal Johna von Neumanna (1995), Nagroda Harveya (1995), Nagroda Kyoto (1996)?.
Zostawmy jednak na boku działalność naukową Knutha; niech nam wystarczy, że jest obecnie jedną z kluczowych postaci współczesnej informatyki teoretycznej. Odnotujmy tylko, że jest on również m.in. autorem jednego z pierwszych i dotychczas najlepszych kompilatorów języka programowania Algol i twórcą języka SOL (przeznaczonego do symulacji komputerowych); właściwie każda jego publikacja jest wybitna i ważna.
Skupmy się teraz na innych cechach jego bogatej osobowości; tym bardziej, że uczony poprosił w swoim czasie o pomoc w pewnej sprawie, związanej dość niespodziewanie z? Polską.
Zacznijmy od muzyki. Knuth jest nie tylko jej miłośnikiem i odbiorcą. W młodości nauczył się grać na fortepianie i organach (a także na saksofonie i na tubie, jak mówiliśmy?). Nauczył się tak dobrze ? choć sam mówi skromnie, że stosunkowo rzadko występuje publicznie z koncertami? dla dobra publiczności ? iż został zastępcą organisty w Faith Lutheran Church w kalifornijskiej Pasadenie, którą to funkcję pełnił obok prowadzenia badań naukowych i wykładów uniwersyteckich. W 1976 roku wywołał lokalną sensację medialną, instalując w swoim prywatnym domu ogromne organy z 812 piszczałkami. Ma też u siebie wysokiej klasy pianino i fortepian, na których często grywa. Knuth słynie również z niebywałej wręcz znajomości Biblii; być może związane jest to z profesją jego żony Jill, wybitnej biblistki właśnie.
Ostatnie hobby wielkiego uczonego, któremu oddaje się z niesłychaną pasją od 2003 roku, jest zupełnie zaskakujące. Otóż Knuth? fotografuje znaki drogowe. Ale nie wszystkie, tylko? mające kształt rombu. Zdjęcia te kolekcjonuje i umieszcza w Internecie (zbiór liczył ostatnio 688 fotografii), przy czym każde z nich jest opatrzone? dokładnymi współrzędnymi geograficznymi lokalizacji znaku. Współrzędne te Knuth ? wraz z Jill, która mu wiernie towarzyszy w wędrówkach ? uzyskuje za pomocą odbiornika GPS.
Ma również inne obyczaje, przez niektórych uważane za dziwactwa ? dla mnie pełne abstrakcyjnego wdzięku i dowodzące genialnego poczucia humoru wielkiego uczonego. Oto niektóre z nich:
począwszy od wersji 3 programu TeX kolejne wersje systemu są numerowane coraz lepszym przybliżeniem liczby ? ? 3.1, 3.14, itd.; najnowsza ma oznaczenie 3.1415926;
kolejne numery wersji języka METAFONT ? analogicznie do systemu TeX ? są przybliżeniami liczby e; obecna wersja to 2.718281;
Od 1 stycznia 1990 nie używa poczty elektronicznej, tłumacząc, że ?15 lat używania emaila wystarcza na jedno życie?;
Knuth ogłosił także, iż jego ostatnią wolą będzie, aby po jego śmierci przerwać pracę nad systemami TeX i METAFONT, oznaczyć ostatnie wersje programów odpowiednio przez ? i e, a wszystkie pozostałe w nich błędy nazwać właściwościami programów.
W 2001 jego imieniem nazwano planetoidę 21656 Knuth.
Donald E. Knuth prowadzi z upodobaniem własną ? mocno rozbudowaną, choć pozbawioną jakichkolwiek ?bajerów? ? witrynę internetową. Ta działalność wyraźnie też mu sprawia przyjemność. Witryna owa nie służy tylko prostej prezentacji osoby i dorobku uczonego, ale jest również miejscem kontaktu z czytelnikami jego dzieł, współpracownikami i ? nazwijmy rzecz po imieniu ? wielbicielami tego fascynującego człowieka.
[caption id="attachment_6033" align="aligncenter" width="300"] Witryna WWW Knutha.[/caption]
Jedna z podstron tej witryny (Help Wanted) jest poświęcona prośbom uczonego o pomoc w rozwiązaniu różnych problemów, wcale niekoniecznie naukowych, nie zawsze związanych z informatyką i w wielu wypadkach niewymagających żadnej specjalistycznej wiedzy. Knuth przy tym z zasady nie wyjaśnia, do czego konkretnie jest mu potrzebna jakaś informacja. Za spełnienie każdej prośby wystawia również swój słynny bezcenny czek na 2,56 dolara. Przykład ? to prośba o weryfikację pisowni różnych nazwisk w egzotycznych dla ludzi Zachodu alfabetach ? arabskim, japońskim, chińskim, cyrylicy, ale także w polskim czy czeskim; prośba ta wynika stąd, że Knuth pedantycznie stara się publikować w swych rozprawach wszystkie wymieniane nazwiska w ich pisowni oryginalnej, a także w całej krasie ? z pełnym imieniem.
Tak wygląda wzór na pierwiastki równania kwadratowego zapisany w systemie TeX:
$$-b \pm \sqrt{b^2 - 4ac} \over 2a$$
A taki jest rezultat:
I tu dochodzimy do wspomnianego wyżej polonicum. Otóż Knuth z zupełnie nieznanych jak zwykle powodów chciał poznać imię niejakiego pana G. Dobińskiego z Kutna, który był? technikiem kolejowym na linii Warszawa ? Bydgoszcz około roku 1870; tyle tylko wiadomo było o tej osobie. Po kilku latach poszukiwań po bibliotekach i archiwach udało się ustalić, że litera G odpowiada imieniu Grzegorz, zaś sam pan Dobiński był inżynierem, który położył duże zasługi w automatyzacji obsługi zwrotnic kolejowych?
A i jeszcze jedno. Wielki Donald udostępnia w swojej witrynie do bezpłatnego pobrania i ewentualnego użycia wszystkie programy komputerowe, jakie napisał. Rzadkie, bardzo charakterystyczne dla największych podejście do własnej twórczości.