Stając na ramionach gigantów

Wszystko zaczęło się od małego komputerka przyniesionego pewnego pięknego dnia przez mojego tatę do domu. Miał zewnętrzny odtwarzacz do kaset i masywny zasilacz. Wszystko, co tworzyło jednostkę centralną ukryte zostało w obudowie połączonej z klawiaturą. Podłączało się tę magiczną skrzyneczkę do telewizora i po włączeniu na niebieskim tle ukazywał się znak zachęty.

Commodore 64

Te piękne czasy, gdy do szczęścia wystarczało 64Kb RAMu i nie przeszkadzał brak twardego dysku, zdają się być bardzo odległe. Mój tata programy pisał w grubych zeszytach, które później razem skrzętnie przepisywaliśmy i zapisywaliśmy na zwykłych kasetach magnetofonowych. Chociaż wszystko to dzisiaj wydaje się śmieszne, wówczas byłem z możliwości tego sprzętu naprawdę zadowolony. C=64 miał prawdziwy user manual, grafikę opartą o sprite’y, nawet kartę dźwiękową! Nikomu nie przeszkadzało numerowanie linii w BASICu, czy potrzeba strojenia głowicy magnetofonu. Pomimo ograniczeń była to wówczas dla mnie technologia kosmiczna.

Musiało jednak przepłynąć wiele wody w rzece, bym był w stanie zrozumieć, że C=64 było tylko szczytem góry lodowej. Na przełomie lat 60-tych i 70-tych Ritchie i Thompson stworzyli język C i Uniksa. Koniec lat 80-tych to czas upowszechnienia się komputerów IBM PC. Przyłączające się do rządowego Arpanetu amerykańskie uczelnie kładą podwaliny Internetu. Polska dołączyła do globalnej wioski dopiero w roku 1991. W tym samym czasie Linus Torvalds upublicznia pierwszą wersję swojego systemu operacyjnego, który wraz z projektem GNU utworzy darmowy i dostępny dla każdego system, zmieniając tym samym zasady panujące na rynku informatycznym. W 1998 roku rusza google.com, która wkrótce staje się podstawowym sposobem wyszukiwania informacji w Internecie. Dostęp do informacji jeszcze nigdy w historii ludzkości nie był tak prosty.

Po dłuższej przerwie do komputerów wróciłem dopiero, gdy w naszym domu pojawił się pecet. Początkowo nieśmiało poznając system, próbowałem jednocześnie pisania programów w Turbo Pascalu i Delphi. Jednak rozwinąłem swoje skrzydła dopiero, gdy na dysku zagościł Red Hat. Nie potrzeba było wiele czasu bym przyswoił sobie C, shella i Perla. Jeżeli było trzeba pisałem też w assemblerze. Niecały rok temu zainteresowałem się Pythonem i ten język jak żaden inny odmienił moje spojrzenie na programowanie. Wciąż jednak czegoś mi brakowało. Języki które poznawałem w pewien sposób były podobne do siebie. Moje doświadczenia wyniesione z długiego okresu programowania w C powodowały, że myślałem imperatywnie. Tą zmienną zwiększ o dwa, wywołaj tamte trzy funkcje i zwróć wartość siedem. Oczywiście znałem już wtedy Paula Grahama i czytałem jego teksty zachwalające Lispa, jednak nigdy nie znalazłem dłuższej chwili czasu, by przyjrzeć się dobrze temu językowi.

Pewnego dnia natrafiłem na artykuł opisujący materiały do nauki języka Scheme (jednego z dialektów Lispa), dostępne za darmo z MIT. Do ściągnięcia jest zarówno książka, jak i wykłady w formacie wideo. Po przeczytaniu pierwszego akapitu książki już wiedziałem, jakiemu językowi poświęcę czas przez najbliższe miesiące.

Procesy obliczeniowe to abstrakcje zamieszkujące komputery. W trakcie swojego życia korzystają z innych abstrakcyjnych obiektów zwanych danymi. Życie procesu przebiega zgodnie z zestawem reguł zwanym programem. Ludzie tworzą programy, aby sterować procesami. W rezultacie za pomocą naszych reguł ujarzmiamy moce drzemiące w komputerze.

Obejrzenie pierwszych wykładów tylko wzmocniło moje przekonanie. Scheme jest językiem, który po prostu muszę poznać. Wkrótce w uczelnianej księgarni zakupiłem polską wersję drugiego wydania Wizard Booka, zacząłem czytać, rozwiązywać przykłady, wracając od czasu do czasu do świetnych nagrań wykładów. I w pewnym momencie narodziła się w mojej głowie myśl, by tę ścieżkę nauki w pewien sposób zarejestrować, utrwalić, ułatwiając zainteresowanym zagłębienie się w świat języków funkcjonalnych. Świat dziwaczny i trudny do objęcia umysłem, ale zadziwiająco piękny i pobudzający wyobraźnię. I to jest właśnie moment narodzin tego bloga. Mam zamiar opisywać na jego stronach kolejne etapy poznawania Scheme, idąc rozdział po rozdziale Wizard Booka. Nie będę jednak powielał zawartych w książce treści, skupię się bardziej na interesujących różnicach w stosunku do znanych mi języków programowania i na rozwiązywaniu wymienionych na końcu każdej części zadań. Chociaż zaczynam moją podróż samotnie, z radością zabiorę ze sobą wszystkich zainteresowanych bezdrożami programowania. Zachęcam do komentowania i życzę przyjemnej lektury.

Komentarze (4)

  1. Karol Ossowski said,

    April 9, 2006 at 7:18 pm

    o, świetny pomysł. właśnie ostatnio również miałem zamiar poznać bliżej lispa. napewno będę czytał. serdecznie pozdrawiam i czekam na kolejne posty.

  2. tomek said,

    June 9, 2006 at 10:19 pm

    Lisp jest piękny.
    Estetyka tej strony jest lispowa.
    Wyrazy uznania dla Autora.

  3. dev said,

    October 4, 2006 at 5:39 pm

    I o to ujrzałem piękny umysł we wspaniałej oprawie. Gdy będę tak duży jak ty podąrze twoją drogą.

  4. chowder said,

    September 4, 2009 at 1:42 pm

    Piękne były to czasy gdy 64Kb RAM-u stanowiły szczyt techniki, gdy rodziły się nieśmiertelne gałęzie IT…
    Lisp jest ciekawym językiem, dającym nowy sposób patrzenia na algorytmikę, niestety na UWr (jak i innych uniwersytetach) programowanie funkcyjne oparte jest o syntaktycznego poworka Haskella.

Komentuj wpis