Quelles sont les principales différences entre CLISP, ECL et SBCL?

je veux faire des simulations avec ACT-R et j'aurai besoin d'un Common Lisp mise en œuvre. J'ai trois Common Lisp implémentations disponibles: (1) CLISP [1],(2) ECL [1] et (3) SBCL [1]. Comme vous avez recueillies à partir des liens que j'ai lu un peu toutes les trois d'entre eux sur Wikipédia. Mais je voudrais l'avis de certains utilisateurs expérimentés. Plus précisément, je voudrais savoir:

(i) Quelles sont les principales différences entre les trois implémentations (par exemple: Quels sont-ils meilleurs? Certains d'entre eux sont-ils utilisés uniquement à des fins spécifiques et pourraient donc ne pas être adaptés à des tâches spécifiques?)?

(ii) y a-t-il un choix évident basé sur le fait que j'utiliserai ACT-R ou pour des raisons générales?


Comme cela pourrait être interprété comme une question subjective J'ai vérifié quels sujets puis-je aborder? demandez ici et Quels types de questions devrais-je éviter de poser? et si je lis correctement, il ne devrait pas être considéré comme un fruit interdit.

16
demandé sur Community 2014-08-02 10:28:44

3 réponses

j'ai écrit une application de taille moyenne et je l'ai exécutée en SBCL, CCL, ECL, CLISP, ABCL et LispWorks. ma demande, SBCL est de loin le plus rapide, et il a un assez bon débogueur. Il est un peu strict au sujet de certains avertissements--vous pouvez finir par coder d'une manière un peu plus rigoureuse, ou désactiver un ou plusieurs avertissements.

Je suis D'accord avec Sylwester: si possible, écrivez au standard, et ensuite vous pouvez exécuter votre code dans n'importe quelle implémentation. Vous allez comprendre en testant ce qui est le mieux pour votre projet.

depuis que SBCL compile de manière si agressive, de temps en temps le stacktrace dans le débogueur est moins informatif que je ne le voudrais. Cela peut probablement être contrôlé avec des paramètres, mais j'ai juste relancé le même code dans l'une des autres implémentations. L'ABCL dispose d'une chaîne de caractères informative, par exemple, si je me souviens bien. (C'est aussi très lent, mais si vous voulez une réelle interopérabilité Lisp et Java, c'est la seule option.)

l'Un des ce qu'il y a de bien dans le Lisp commun, c'est le nombre d'implémentations de haute qualité, la plupart gratuites.

pour un usage informel -- par exemple pour apprendre le Lisp commun, CCL ou CLISP peut être un meilleur choix que SBCL.

Je n'ai jamais essayé de compiler à C en utilisant ECL. Il est possible qu'il batte SBCL sur la vitesse pour certaines applications. Je n'ai aucune idée.

CLISP et LispWorks ne géreront pas arbitrairement de longues listes d'arguments (à moins que cela n'ait été corrigé dans les derniers couples de ans, mais j'en doute). Ceci s'est avéré être un problème avec mon application, mais ne serait pas un problème pour la plupart des code.

ne sort-il pas de Carnegie Mellon? Qu'est ce que ses auteurs utilisent? Je dirais CMUCL ou SBCL, qui est dérivé de CMUCL. (Je n'ai essayé la CMUCL que brièvement. Son interprète est très lent, mais je suppose que le code compilé est très rapide. Je pense que la plupart des gens choisissent SBCL plutôt que CMUCL, cependant.)

(il est possible que cette question Programmeurs.SE.)

14
répondu Mars 2014-08-05 04:57:47

En général, SBCL est le choix par défaut parmi les Lisps open-source. Il est solide, bien supporté, produit du code rapide, et offre de nombreux avantages au-delà de ce que les mandats standard (primitives de concurrence, profilage, etc.) Une autre implémentation avec des propriétés similaires est CCL.

CLISP est plus approprié si vous n'êtes pas un ingénieur, ou vous voulez montrer rapidement Lisp à quelqu'un non-ingénieur. C'est une implémentation assez basique, mais rapide à obtenir l'exécution et facile à utiliser. Un Lisp-calculatrice :)

est qu'il est intégrable, c'est-à-dire qu'il est assez facile de le faire fonctionner à l'intérieur d'une application C, comme un serveur web, etc. C'est un bon choix pour les geeks, qui veulent explorer des solutions à la limite du Lisp et du monde extérieur. Si vous n'êtes pas intéressé dans un tel cas d'Utilisation, Je ne vous recommande pas de l'essayer, d'autant plus qu'il n'est pas activement soutenu, à l'heure actuelle.

8
répondu Vsevolod Dyomkin 2014-08-02 09:56:28

leurs noms, leurs bogues et leurs ajouts non standard (les utiliser vous bloquera)

J'utilise CLISP comme REPL et testing pendant dev et habituellement SBCL pour la production. ECL je n'ai jamais utilisé.

je vous recommande de tester votre code avec plus d'une implémentation.

4
répondu Sylwester 2014-08-02 13:54:40