33 votes

En quoi les différentes implémentations ANSI CL diffèrent-elles ?

Quand j'ai commencé à apprendre la CL de la Pratique, Common Lisp, comme il est annoncé dans le livre, j'ai commencé avec Allegro CL compilateur. J'ai arrêté de l'utiliser, depuis sa commerical, encore gratuit bits ne m'a pas impressionnée. Il avait besoin d'une connexion à son serveur distant pour certaines licences pour animaux.

Je suis passé à "clisp" et je suis de l'utiliser. Maintenant, j'ai entendu parler de SBCL et de la planification pour commencer à l'utiliser ainsi.

Donc, la question est: Comment les différentes ANSI CL implémentations diffèrent-ils? Toute l'expérience pratique de l'utilisation de l'un sur l'autre ?

Je vous remercie.

35voto

huaiyuan Points 16570

Voir Common Lisp Implementations: A Survey par Daniel Weinreb.

18voto

jrockway Points 23734

Si vous êtes sur une machine capable d'exécuter SBCL, vous devez l'utiliser. C'est la manière la plus rapide gratuit compilateur Lisp (il peut générer du code qui est aussi rapide comme Haskell, OCaml, Java, C et C++, qui sont tous très très vite, surtout par rapport à Python et Ruby). C'est aussi une assez complet la mise en œuvre, et prend en charge la plupart des Swank de fonctions (SLIME), ce qui est agréable quand vous êtes en développement.

Comme certains des autres commentaires mentionner, vous ne le remarquerez même pas tout les différences lorsque vous êtes le premier à partir. Tous le gratuit CL les implémentations sont "assez rapide" et à soutenir toutes les fonctionnalités dont vous aurez besoin. Mais si vous commencez à écrire logiciel de production, vous apprécierez SBCL ses caractéristiques. Otoh, que, il n'y a vraiment aucune raison de ne pas changer maintenant.

16voto

Dave Bakhash Points 101

J'ai été en regardant Win32 solutions à la même question. Autant gratuit Lisp implémentations sur Windows, je vous recommande fortement Clozure CL (CCL). Il y a plusieurs raisons à cela. La première est que la Clozure prend en charge 32 - et 64-bits binaires. Il est très rapide, et un peu compact. Mais le plus important, c'est cohérent et correct. Je trouve que c'est une très mature Lisp, après avoir travaillé avec Lispworks (qui me manque) depuis plusieurs années. CCL fait un très beau travail avec le système d'exploitation natif des threads, des sockets, et quelques autres éléments qui ne font pas partie de la CL spec. Sa mise en œuvre du CLOS semble être extrêmement rigoureux. Et c'est de la GC et de la gestion de la mémoire sont excellents. J'ai comparé le CCA SBCL sur Win32, et tout SBCL était un peu plus rapide sur plusieurs points de référence, il cons avais beaucoup plus, et son image grandit, grandit, même après plusieurs forcé GCs. Pendant ce temps, le CCA était cohérent, petit, rapide, et agréable à utiliser. Et si vous voulez une plate-forme qui est compatible sur Windows, Mac et Linux, et est à la fois 32 et 64 bits, alors ne cherchez pas plus loin.

Je l'ai fait essayer CormanLisp sur Win32, et il y avait beaucoup de choses à propos de ce que j'ai aimé. Mais il ne fonctionnera pas correctement sur Windows 64 bits plates-formes, et est limitée à Win32. C'est pas gratuit, et en quelque sorte je l'ai eu de crash sur moi quand je l'avais jeter des ordures code à elle. J'ai aussi été capable de faire SBCL crash. Pas si avec la CCL. Solide comme un roc. Vraiment, ces gars ont fait un travail incroyable, et en fin de compte vous aidera à garder Lisp vivant.

Comme pour la boue, je n'ai pas essayer d'obtenir de BAVE de travail avec SBCL, mais j'ai eu il fonctionne parfaitement avec la CCL. Quel que soit votre fantaisie est, je vous informe que les gens écrire du code pour être facilement transportable. But pour Windows, Mac, et Linux, et le but pour 64-bit. Si vous tenez compte de ces, puis CCL est votre meilleur choix dans l'ensemble.

Une dernière tentative de réponse à cette question est de considérer ce qui est mal avec les autres. Voici ce que je viens de trouver:

  • CLISP est agréable, mais il est beaucoup plus lente, par rapport à SBCL ou de la CCL. Je vois peu à l'envers
  • SBCL semble pauvres sur Win32. Taille de l'Image peut devenir gros.
  • CormanLisp est bon sur Win32, mais pas portable, et ne prend pas en charge Windows x64. Il semble également que Roger Corman est pas activement le développement CormanLisp, qui est une honte, mais c'est la réalité.
  • Clojure (avec un "j") n'est pas en Common Lisp. Aussi beau que cela puisse être, je pense que si vous connaissez déjà la CL, alors il ne vaut pas pour les frais généraux de l'apprentissage du Clojure de nombreuses différences. Je suis sûr que certains peuvent les ramasser rapide, mais je n'a sûrement pas. (Si compatible Java, le code est ce que vous êtes après, alors regardez ABCL).

dave

14voto

Ben Collins Points 11318

Il ya des parties de la norme ANSI CL qui laissent certains détails jusqu'à la mise en œuvre à déterminer; vous trouverez que, pour les parties de la norme, chaque application a ses propres caprices.

Aussi, cherchez les choses qui sont importantes pour l'exécution mais non défini dans la langue: des choses comme le filetage et le multitraitement et la collecte des déchets varient sensiblement les performances et la fiabilité.

J'ai trouvé SBCL être la méthode la plus simple de mise en œuvre pour travailler avec Linux; il a un bon soutien pour le filetage dans Linux. Je ne peux pas en dire beaucoup sur le garbage collector, car il n'a pas compté pour moi encore beaucoup.

Sur Windows, votre meilleur pari sera probablement Allegro ou LispWorks, bien que j'ai eu un certain succès avec clisp sur Windows. Le port Windows de SBCL progresse, mais je ne l'ai pas utilisé beaucoup, donc je ne peux pas vraiment commenter.

Généralement parlant, la compréhension de ces sortes de choses qui sont difficiles à acquérir par le biais de la recherche ou de l'analyse; il s'agit au travers de l'expérience. Il suffit de choisir un décent mise en œuvre que vous êtes à l'aise avec, et se mettre au travail. Vous allez comprendre les choses difficiles que vous allez.

3voto

Kyle Cronin Points 35834

Je ne sais pas assez pour vous donner une réponse détaillée, mais j’ai remarqué que SBCL était considérablement plus rapide que Clisp quand je travaillais avec CL pour ma classe ai. Sauf si vous avez une raison impérieuse de ne pas le faire, je vous suggère d’aller avec SBCL.

J’ai entendu dire que Clisp est plus facile à installer et est plus portable que SBCL (qui a beaucoup d’optimisations spécifiques au processeur), mais si vous utilisez Linux, ils sont tous deux assez facile à chercher auprès du gestionnaire de paquets.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X