Es scheint ein unmittelbares Problem beim Beginn der Entwicklung in Common Lisp zu geben: die Auswahl einer Implementierung. Was sollte man beachten und wie viel Gewicht sollte es tragen, wenn man über eine CL-Implementierung nachdenkt?
Sollte es dem ANSI-Standard entsprechen? Sollte es von SLIME unterstützt werden? Fehlen bestimmten Implementierungen gute Bibliotheken, Dokumentationen usw.?
lisp
implementations
common-lisp
anonym
quelle
quelle
Antworten:
Dies hängt von Ihren spezifischen Anforderungen und den Stärken und Schwächen der jeweiligen Implementierungen ab. Das heißt, hier ist, was mir zuerst einfällt, wenn ich über verschiedene Implementierungen nachdenke:
SBCL ist ziemlich schnell und kann gut zahlen. Wenn Sie also auf umfangreiche numerische Berechnungen angewiesen sind, ist dies möglicherweise die richtige Implementierung für Sie. Es hat auch anständige Typinferenz (für eine Lisp-Implementierung).
CLISP ist eine relativ kleine Implementierung zum Kompilieren von Bytes, die für die Skripterstellung interessant sein könnte.
Vor ein paar Jahren habe ich CCL ausprobiert und bin dabei geblieben, weil ich die Fehlermeldungen und Stack-Traces denjenigen anderer Implementierungen vorgezogen habe und auch die relativ geringen Kompilierungszeiten. Die einfache interaktive Nutzung hat für mich einen sehr hohen Stellenwert. Wenn die Geschwindigkeit benötigt wird, wechsle ich möglicherweise immer noch zu SBCL für das bereitgestellte Programm. (Muss aber nie sein.) Es besteht auch die Möglichkeit der kommerziellen Unterstützung.
Wenn Sie auf der JVM implementieren möchten, gibt es ABCL.
Für die eingebettete Verwendung ECL.
Allegro hat AllegroGraph, AllegroStore, einen einfach zu verwendenden visuellen GUI-Builder und vieles mehr, aber nicht jeder mag seine Lizenzbedingungen.
LispWorks eignet sich anscheinend recht gut für die Programmierung von Endbenutzeranwendungen mit einem netten plattformübergreifenden GUI-Toolkit und Lizenzbedingungen, die möglicherweise für kleine Teams und einzelne Programmierer besser geeignet sind als die von Allegro. (Zumindest ist es das, was ich vorziehen würde.)
Dies sind natürlich nur breite Kategorien und Eindrücke. Ich würde vorschlagen, sich SBCL, CCL und CLISP genauer anzuschauen, da dies meiner Meinung nach die am häufigsten verwendeten und am besten unterstützten Open-Source-Implementierungen sind, und dann eine davon auszuwählen. Das heißt, es sei denn, Ihre Anforderungen stimmen mit den Angeboten von ABCL oder ECL überein.
Es wäre keine CL-Implementierung, wenn dies nicht der Fall wäre. (In der Praxis kann es natürlich einige Abweichungen geben, aber Konformität sollte zumindest das Ziel sein.)
Sicher - wenn Sie SLIME verwenden. (Meiner Meinung nach ist es die derzeit beste Lisp-Umgebung, aber für jeden seine eigene.)
Zumindest SBCL, CCL, Allegro und LispWorks sollten von den meisten üblicherweise verwendeten Bibliotheken gut unterstützt werden. CLISP wird mit einer hübschen Bibliothekssammlung geliefert und sollte auch größtenteils unterstützt werden.
quelle
Dan Weinreb (leider ist er letztes Jahr verstorben) schrieb eine Übersicht:
Lisp Umfrage
Es gibt viele Unterschiede zwischen den CL-Implementierungen. Es ist nicht möglich, alle unterschiedlichen Anforderungen (Geschwindigkeit, Größe, Lizenz, Preis, Kompatibilität, Betriebssystemunterstützung, ...) von Benutzern für ein Lisp-System in einer Implementierung abzudecken. Man muss ein lokales Optimum finden, indem man eine oder mehrere der verfügbaren Implementierungen verwendet, die einer bestimmten Philosophie folgen:
kostenlos, kostenlos, C-basiert (daher weit verbreitet): ECL , CLISP
Kostenlos, kostenlos, JVM-basiert: ABCL
Kostenlose, kostenlose und umfassende native Implementierung: SBCL , CCL , CMUCL
proprietäre, kommerzielle, sehr umfangreiche native Implementierung, exzellente Unterstützung für GUI-basierte Apps: Allegro CL , LispWorks
nach Betriebssystem / Plattform:
quelle