Dlaczego akurat Lisp?
Lisp Cycles - xkcd.com |
Po wyborze języka i dialektu musiałem się zdecydować na jakąś implementację (a jest ich kilka), ostatecznie wybrałem CLISP (nie posiada kompilatora ani wsparcia dla wątków ale nie sprawia problemów więc na razie wystarczy). Natomiast jako IDE używam zestawu Emacs+SLIME (moje pierwsze starcie z Emacsem więc dodatkowo dochodzi nauka edytora).
Dopiero zaczynam jednak muszę przyznać, że sam język podoba mi się coraz bardziej. Największe wrażenie (do tej pory) zrobiły na mnie makra. System makr w Common Lisp działają zupełnie inaczej niż preprocesor w C który zastępuje tekst innym tekstem. W Lisp makra są kodem generującym inny kod, nie operują na tekście tylko na S-wyrażeniach co pozwala na naprawdę duże zmiany w składni (oczywiście jeżeli ktoś ich potrzebuje). Przykładem takiego makra w bibliotece standardowej jest LOOP.
;;Suma liczb od 1 do 10 (loop for x from 1 to 10 summing x) ;;Liczenie samogłosek (loop for x across "the quick brown fox jumps over the lazy dog" counting (find x "aeiou")) ;;Liczenie 11 wyrazu ciągu Fibonacciego (loop for i below 10 and a = 0 then b and b = 1 then (+ b a) finally (return a))Trzeba przyznać, ze składnia makra LOOP jest niezwykle wymowna i nawet bez znajomości Lisp można zrozumieć o co chodzi.
Realizuje swoją strategię nauki czyli czytam książkę, analizuję i modyfikuję przykłady a na koniec napiszę coś samodzielnie (nie wiem jeszcze co). Muszę przyznać, że przejście na inną składnię niż C-podobną (do tej pory używałem C++, C#, PHP) jest całkiem przyjemne i myślę, że Lisp będzie przeze mnie często używany.
Brak komentarzy:
Prześlij komentarz