QuickLisp - Common Lisp na dopalaczach

Rzadko zdarza się, żebym trafił na coś, na co później patrzę jak osłupiały będąc pod ogromnym wrażeniem. Dziś jednak taką rzecz znalazłem, a tym niesamowitym zjawiskiem jest biblioteka Quicklisp. Instalowanie zewnętrznych bibliotek w wielu językach programowania jest skomplikowane (zwłaszcza, jeżeli biblioteki mają zależności) i ciężko utrzymać w nich porządek. W Common Lispie osoba początkująca może odczuć ten problem dość dotkliwie, a instalowanie czegokolwiek pod Windowsem wymaga już godzin spędzonych na uprawianiu magii przed terminalem. Przynajmniej tak było do niedawna. Quicklisp to narzędzie, które daje błyskawiczny dostęp do wielu popularnych bibliotek w Common Lisp. Dodanie nowej biblioteki jest tak proste, jak wpisanie w REPL (ql:quickload "nazwa-biblioteki")! Podążając za screencastem, udało mi się w kilka minut postawić lokalnie Weblocks - duży (ponad 36 zależności!) framework sieciowy dla Common Lispu . Oto dowód:
Weblocks na Windowsie
Dla mnie osobiście jest to szokujące. Weblocks'a miałem na liście rzeczy do sprawdzenia już od dłuższego czasu, ale zawsze bałem się go dotykać, bo "to jest duże i nie mam pojęcia jak to zainstalować i uruchomić". Ostatnią rzeczą, jaką sobie wyobrażałem, było uruchomienie tego na Windowsie. A wymagało to tylko... wpisania (ql:quickload "weblocks") (weblocks:start-weblocks)* Krótkie podsumowanie technicznej strony tego projektu można przeczytać w tym mailu. Quicklisp nie jest jeszcze publicznie dostępny - ale jego zdobycie sprowadza się do odwiedzenia kanału IRC #quicklisp na freenode i zapytanie o link do pliku quicklisp.lisp :). A teraz przepis na to, jak zacząć pisać gry w Common Lispie :). Zainstalujemy lispbuilder-sdl. Wymagania: działająca implementacja Common Lispu, Quicklisp oraz binarki do SDLa. Oto przepis:
(load "quicklisp.lisp")
(ql:quickload "lispbuilder-sdl")
Quicklisp ściągnie lispbuilder'a i rozpocznie jego instalację. W tym miejscu powinien wystąpić problem związany z tym, że nie udało się załadować binarek SDLa. Należy znaleźć katalog Quicklispa (domyślnie quicklisp w katalogu domowym użytkownika), odnaleźć ściągniętą bibliotekę lispbuilder-sdl (dists/quicklisp/software/), wrzucić binarki SDLa do katalogu bin wewnątrz folderu biblioteki (lispbuilder-sdl), po czym wybrać w REPLu restart odpowiadający za ponowną próbę załadowania binarek. Po tej małej przerwie instalacja powinna spokojnie dojść do końca. Mamy już działającego SDL-a - aby to sprawdzić, wystarczy wpisać:
(ql:quickload "lispbuilder-sdl-examples")
(sdl-examples:fireworks)
I wszystko gra :).
Fajerwerki w Lispie w 10 minut!
Na prawdę mam nadzieję, że Quicklisp będzie się rozwijał. Nie przypominam sobie, żebym gdziekolwiek spotkał się z tak łatwym instalowaniem nowych bibliotek. Dla Common Lispu to miła odmiana**. W moim odczuciu ten projekt jest czymś, co może mieć ogromny wpływ na przyszłość i użycie Common Lispu. (przypisy) * - oraz rozwiązania dwóch małych problemów po drodze, jednego wynikającego ze specyfiki Windowsowych bibliotek natywnych, a drugiego z implementacji Closer-MOP dla Clozure Common Lisp - oba jednak dały się "obejść" z miejsca, dzięki magii lispowych restart'ów. ** - Gdy pierwszy raz próbowałem uruchomić SDLa "ręcznie" w Common Lispie, zajęło mi to ponad dzień.