Contra Chuck, un avantage de Common Lisp, c'est qu'il a une norme que les implémentations de bâton et de viser, de sorte que vous pouvez développer en grande partie avec SBCL (qui a d'excellentes vérification du type et de l'inférence) et ensuite, de dire, de se déployer comme un exécutable lié avec les bibliothèques C (avec ECL ou autres) ou en tant que .pot en faisant usage des bibliothèques Java (avec ABCL), ou avec un Mac ou un Windows GUI natif (Clozure, les deux). Common Lisp est incroyablement portable à travers les architectures et les cours de mise en œuvre et au fil du temps, et de la Commune Lispers faire des efforts pour garder les choses de cette façon, avec le soutien de la langue. Comme une illustration, un idiot divergence de comportement non normalisés est la question "est-ce une variable spéciale?" Donc j'ai répondu à travers les implémentations que j'ai utiliser:
#-abcl
(defun special-variable-p (symbol)
#+ecl(si:specialp symbol)
#+ccl(proclaimed-special-p symbol)
#+sbcl(equal '(:special t)
(multiple-value-list-int:info :variable :kind symbol)))
ce qui réduit, à lire l'heure, rien sur ABCL (il a déjà), à l' (defun special-variable-p (symbol) (si:specialp symbol))
sur LISTE, et ainsi de suite. Donc, je peux mettre ça dans mon .rc fichiers et utiliser la fonction commune à la REPL. Mais ce n'est pas très important: ce n'est pas le filetage ou diversement adossés à des réseaux ou à une Communication de Processus Séquentiels de la bibliothèque. Ce dernier exemple n'a qu'un seul #+sbcl/#-sbcl
, alors même qu'elle s'exécute sur cinq implémentations. Parce qu'il s'appuie sur le code qui a été soigneusement porté.
Mais ce qui le permet (et d'autres) avantages pose également son propre défi pour l'apprenant: Common Lisp est une très grosse langue. Ce n'est pas quelque chose que vous pouvez slurp dans une semaine ou deux, comme je l'ai fait Clojure (mais mon Clojure est déjà en décomposition avec la rupture des changements à déployer que la langue, bien que lourd avec ses propres mérites, m'a rappelé par le contraste de beaucoup de ce que j'aime à propos de Common Lisp.) Donc, vous devriez lire beaucoup de cette page, et garder l'HyperSpec d'une touche de loin (pour moi, M-x hyperspec RET do-symbols RET
est suffisant proximité de la Bible.), et pensez à acheter quelques livres. Je Pratique Common Lisp, il suffit de Laisser Plus de Lambda, et acheter PAIP réel dès maintenant.
Mais même si Common Lisp est la Vraie Réponse, vous n'aurez pas complètement les déchets de votre temps par les "juste ramasser" certains faussement flashy alternative (--"trompeurs" parce que banal CL ne vous montre pas tout ce que son macros peuvent le faire, et il a plus de sortes de macros que personne. L'habituelle comparaison est entre de mauvaises CL et de la syntaxe-optimisé alternative X). Vous aurez encore à apprendre les bases, vous pouvez toujours utiliser la plus grande partie de ce que vous pouvez lire dans SICP, Sur le langage Lisp, Le Peu Intrigant, etc. Un lisp, même la mauvaise lisp, c'est toujours mieux qu'un non-lisp. (Mais vous allez passer un peu de votre temps à la mise en œuvre de certaines parties de la droite lisp, le mal, le mal de lisp. Méta-Greenspun.)