StajÄ?c na ramionach gigant??w
kwiecień 9th, 2006 at 4:18 pm (wspomnienia, scheme)
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.
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.