¿Qué implementación de Common Lisp usar? [cerrado]


45

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.?


Pregunta interesante: estoy leyendo "Practical Common Lisp" en este momento y pruebo mis ejemplos en CLISP, pero supongo que cualquier implementación se ajusta al estándar: Common Lisp me parece un lenguaje muy maduro y estable.
Giorgio el

Respuestas:


25

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.

¿Debería cumplir con el estándar ASNI?

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).

¿Debería ser compatible con SLIME?

Claro, si usas SLIME. (En mi opinión, es el mejor entorno Lisp disponible en este momento, pero para cada uno lo suyo).

¿Ciertas implementaciones carecen de buenas bibliotecas, documentación, etc.?

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.


22

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:

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.