Quelle implémentation Common Lisp utiliser? [fermé]

45

Commencer à se développer dans Common Lisp semble poser un problème immédiat: choisir une implémentation. Que faut-il prendre en compte et quel poids doit-il supporter lors de la mise en œuvre d'une solution CL?

Devrait-il être conforme à la norme ANSI? Devrait-il être pris en charge par SLIME? Est-ce que certaines implémentations manquent de bonnes bibliothèques, documentation, etc.?

anonyme
la source
Question intéressante: je lis en ce moment "Practical Common Lisp" et je teste mes exemples dans CLISP, mais je suppose que toute implémentation est conforme à la norme: Common Lisp me semble une langue très mature et stable.
Giorgio

Réponses:

25

Cela dépend de vos besoins spécifiques, des forces et des faiblesses de chaque implémentation. Ceci étant dit, voici ce qui m’arrive en premier lorsque je pense à différentes implémentations:

SBCL est assez rapide et bon en calcul. Donc, si vous dépendez de calculs numériques lourds, cela pourrait être la bonne implémentation pour vous. En outre, il a une inférence de type décente (pour une implémentation de Lisp).

CLISP est une implémentation relativement petite, compilant octet, qui pourrait être intéressante pour les scripts.

Il y a quelques années, j'ai essayé CCL et je m'en tenais à cela, car je préférais ses messages d'erreur et ses traces de pile à ceux d'autres implémentations, ainsi que ses temps de compilation relativement bas. Pour moi, la facilité d'utilisation interactive est une priorité majeure. Si sa vitesse est nécessaire, je pourrais toujours passer à SBCL pour le programme déployé. (Jamais eu besoin de, cependant.) En outre, il y a l'option de support commercial.

Si vous souhaitez déployer sur la machine virtuelle, il y a ABCL.

Pour une utilisation intégrée, ECL.

Allegro comprend AllegroGraph, AllegroStore, un générateur d’interface graphique visuel simple à utiliser, et bien d’autres choses encore, mais tout le monde n’aime pas leurs conditions de licence.

LispWorks semble se prêter plutôt bien à la programmation d’applications d’utilisateur final avec une boîte à outils d’interface graphique multi-plateformes et des termes de licence qui conviendraient mieux aux petites équipes et aux programmeurs uniques que Allegro. (Au moins c'est ce que je préférerais.)

Bien sûr, ce ne sont que de grandes catégories et des impressions. Je suggérerais de regarder de plus près SBCL, CCL et CLISP, puisque ce sont les implémentations à code source libre les plus utilisées et les mieux supportées, puis de choisir l’une de celles-ci. Autrement dit, à moins que vos besoins ne correspondent à ce que ABCL ou ECL ont à offrir.

Devrait-il être conforme à la norme ASNI?

Ce ne serait pas une implémentation CL, sinon. (Il peut bien sûr y avoir quelques écarts dans la pratique, mais la conformité devrait au moins être l'objectif.)

Devrait-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 ses goûts.)

Est-ce que certaines implémentations manquent 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 et devrait également être pris en charge principalement.

Danlei
la source
22

Dan Weinreb (malheureusement décédé l'année dernière) a écrit un aperçu:

Lisp Survey

Il existe de nombreuses différences entre les implémentations de CL. Il n'est pas possible de couvrir tous les différents besoins (vitesse, taille, licence, prix, compatibilité, système d'exploitation, ...) des utilisateurs d'un système Lisp en 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, gratuit, basé sur JVM: ABCL

  • implémentation native étendue, gratuite et gratuite: SBCL , CCL , CMUCL

  • implémentation native propriétaire, commerciale, très étendue, excellent support des applications basées sur une interface graphique: Allegro CL , LispWorks

par OS / Platform:

Rainer Joswig
la source