Il semble y avoir un problème immédiat avec le démarrage du développement dans Common LISP: le choix d'une implémentation. Que faut-il prendre en compte et combien de poids doit-il prendre en considération lors de la mise en œuvre d'une CL?
Doit-il être conforme à la norme ANSI? Doit-il être pris en charge par SLIME? Certaines implémentations manquent-elles de bonnes bibliothèques, documentation, etc.?
Cela dépend de vos besoins spécifiques et des forces et faiblesses des implémentations particulières. Cela dit, voici ce qui me vient à l'esprit en pensant aux différentes implémentations:
SBCL est assez rapide et bon pour le calcul des nombres. Donc, si vous dépendez d'un calcul numérique lourd, cela pourrait être la bonne implémentation pour vous. En outre, il a une inférence de type décente (pour une implémentation LISP).
CLISP est une implémentation de compilation d'octets relativement petite qui pourrait être intéressante pour les scripts.
Il y a quelques années, j'ai essayé CCL et je suis resté avec, car je préférais ses messages d'erreur et traces de pile à ceux d'autres implémentations, ainsi que ses temps de compilation relativement bas. Pour moi, la facilité d'utilisation interactive est quelque chose de très prioritaire. Si sa vitesse est nécessaire, je pourrais toujours passer à SBCL pour le programme déployé. (Jamais nécessaire, cependant.) En outre, il existe une option de support commercial.
Si vous souhaitez déployer sur la JVM, il y a ABCL.
Pour une utilisation intégrée, ECL.
Allegro a AllegroGraph, AllegroStore, un générateur graphique GUI simple à utiliser, et bien plus encore, mais tout le monde n'aime pas leurs conditions de licence.
LispWorks semble se prêter assez bien pour la programmation d'applications utilisateur final avec une belle boîte à outils GUI multiplateforme et des conditions de licence qui pourraient mieux convenir à de petites équipes et à des programmeurs uniques qu'à Allegro. (Au moins, c'est ce que je préfère.)
Bien sûr, ce ne sont que de larges catégories et impressions. Je suggère de regarder de plus près SBCL, CCL et CLISP, car ce sont à mon humble avis les implémentations open source les plus utilisées et les mieux prises en charge, puis de choisir l'une d'entre elles. Autrement dit, à moins que vos besoins ne correspondent à ce qu'ABCL ou ECL ont à offrir.
Doit-il être conforme à la norme ASNI?
Ce ne serait pas une implémentation CL, si ce n'était pas le cas. (Il pourrait bien sûr y avoir quelques écarts dans la pratique, mais la conformité devrait au moins être l'objectif.)
Doit-il être pris en charge par SLIME?
Bien sûr - si vous utilisez SLIME. (À mon avis, c'est le meilleur environnement LISP disponible pour le moment, mais à chacun le sien.)
Certaines implémentations manquent-elles de bonnes bibliothèques, documentation, etc.?
Au moins SBCL, CCL, Allegro et LispWorks devraient être bien pris en charge par la plupart des bibliothèques couramment utilisées. CLISP est livré avec une jolie collection de bibliothèques Nice, et devrait également être pris en charge principalement.
Dan Weinreb (malheureusement il est décédé l'année dernière) a écrit un aperçu:
Il existe de nombreuses différences entre les implémentations CL. Il n'est pas possible de couvrir tous les différents besoins (vitesse, taille, licence, prix, compatibilité, prise en charge du système d'exploitation, ...) des utilisateurs d'un système LISP dans une seule implémentation. Il faut trouver un optimum local en utilisant une ou plusieurs des implémentations disponibles, qui suivent une certaine philosophie:
gratuit, gratuit, basé sur C (donc largement porté): ECL , CLISP
gratuit, sans frais, basé sur JVM: ABCL
implémentation native étendue, gratuite et gratuite: SBCL , CCL , - CMUCL
mise en œuvre native propriétaire, commerciale, très étendue, excellente prise en charge des applications basées sur l'interface graphique: Allegro CL , LispWorks
par OS/Plateforme: