Parece haber un problema inmediato al comenzar a desarrollarse en Common Lisp: elegir una implementación. ¿Qué se debe tener en cuenta y cuánto peso debe tener al considerar una implementación de CL?
¿Debería cumplir con el estándar ANSI? ¿Debería ser compatible con SLIME? ¿Ciertas implementaciones carecen de buenas bibliotecas, documentación, etc.?
lisp
implementations
common-lisp
anónimo
fuente
fuente
Respuestas:
Depende de sus necesidades específicas y de las fortalezas y debilidades de las implementaciones particulares. Dicho esto, esto es lo que primero viene a mi mente cuando pienso en diferentes implementaciones:
SBCL es bastante rápido, y bueno en el cálculo de números. Entonces, si depende de un cálculo numérico pesado, esa podría ser la implementación adecuada para usted. Además, tiene una inferencia de tipo decente (para una implementación de Lisp).
CLISP es una implementación de compilación de bytes relativamente pequeña que podría ser interesante para la creación de scripts.
Hace unos años, probé CCL y me quedé con él, porque prefería sus mensajes de error y seguimientos de pila a los de otras implementaciones, así como sus tiempos de compilación relativamente bajos. Para mí, la facilidad de uso interactivo es algo de alta prioridad. Si se necesita su velocidad, aún podría cambiar a SBCL para el programa implementado. (Sin embargo, nunca fue necesario). Además, existe la opción de soporte comercial.
Si desea implementar en la JVM, hay ABCL.
Para uso incorporado, ECL.
Allegro tiene AllegroGraph, AllegroStore, un generador de GUI visual fácil de usar y mucho más, pero no a todos les gustan sus términos de licencia.
LispWorks, parece prestarse bastante bien para la programación de aplicaciones de usuario final con un buen kit de herramientas GUI multiplataforma y términos de licencia que podrían adaptarse a equipos pequeños y programadores individuales mejor que los de Allegro. (Al menos es lo que preferiría).
Por supuesto, estas son solo categorías e impresiones amplias. Sugeriría echar un vistazo más de cerca a SBCL, CCL y CLISP, ya que esas son en mi humilde opinión las implementaciones de código abierto más utilizadas y mejor compatibles, y luego elegir una de ellas. Es decir, a menos que sus necesidades coincidan con lo que ABCL o ECL tienen para ofrecer.
No sería una implementación CL, si no fuera así. (Por supuesto, puede haber algunas desviaciones en la práctica, pero la conformidad debería ser al menos el objetivo).
Claro, si usas SLIME. (En mi opinión, es el mejor entorno Lisp disponible en este momento, pero para cada uno lo suyo).
Al menos SBCL, CCL, Allegro y LispWorks deberían ser compatibles con la mayoría de las bibliotecas de uso común. CLISP viene con una colección de biblioteca bastante agradable en sí misma, y también debería ser compatible principalmente.
fuente
Dan Weinreb (lamentablemente falleció el año pasado) escribió un resumen:
Encuesta Lisp
Existen muchas diferencias entre las implementaciones de CL. No es posible cubrir todas las diferentes necesidades (velocidad, tamaño, licencia, precio, compatibilidad, soporte del sistema operativo, ...) de los usuarios de un sistema Lisp en una sola implementación. Uno tiene que encontrar un óptimo local utilizando una o más de las implementaciones disponibles, que siguen una cierta filosofía:
gratis, sin costo, basado en C (por lo tanto, ampliamente portado): ECL , CLISP
gratis, sin costo, basado en JVM: ABCL
Implementación nativa gratuita, sin costo y extensa: SBCL , CCL , CMUCL
implementación nativa comercial, muy extensa y patentada, excelente soporte para aplicaciones basadas en GUI: Allegro CL , LispWorks
por sistema operativo / plataforma:
fuente