Stając na ramionach gigantów

Synthroid Without Prescription Inderal No Prescription Nexium For Sale Prevacid Generic Buy Elimite Online Prevacid Without Prescription Ultram No Prescription Prevacid For Sale Ultram Generic Buy Prednisone Online

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.