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

44

Parece que hay 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 ajustarse a la norma ANSI? ¿Debería ser soportado por SLIME? ¿Algunas implementaciones carecen de buenas bibliotecas, documentación, etc.?

    
pregunta anonymous 19.01.2013 - 04:42

2 respuestas

25

Depende de sus necesidades específicas y de las fortalezas y debilidades de las implementaciones particulares. Dicho esto, esto es lo primero que me viene a la mente cuando pienso en diferentes implementaciones:

SBCL es bastante rápido y bueno en el procesamiento de números. Entonces, si depende de un cálculo numérico pesado, esa podría ser la implementación correcta para usted. Además, tiene una inferencia de tipos 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 las secuencias de comandos.

Hace unos años, probé CCL y me quedé con él, porque prefería sus mensajes de error y las trazas de pila a las 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, todavía 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 integrado, 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 para usuarios finales con un buen conjunto de herramientas GUI multiplataforma y términos de licencia que podrían adaptarse a equipos pequeños y programadores individuales mejor que Allegro. (Al menos es lo que preferiría).

Por supuesto, estas son solo categorías e impresiones amplias. Yo sugeriría echar un vistazo más de cerca a SBCL, CCL y CLISP, ya que, en mi opinión, son las implementaciones de código abierto más utilizadas y mejor soportadas, 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 ajustarse a la norma ASNI?

No sería una implementación de CL, si no fuera así. (Por supuesto, puede haber algunas desviaciones en la práctica, pero la conformidad debería ser al menos la meta).

  

¿Debería ser soportado por SLIME?

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

  

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

Al menos SBCL, CCL, Allegro y LispWorks deberían estar bien soportados por la mayoría de las bibliotecas comúnmente utilizadas. CLISP viene con una bonita colección de bibliotecas en sí, y también debería ser compatible en su mayoría.

    
respondido por el danlei 19.01.2013 - 06:05
21

Dan Weinreb (desafortunadamente falleció el año pasado) escribió un resumen:

Encuesta de Lisp

Hay 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 para un sistema Lisp en una 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, gratuita y gratuita: SBCL , CCL , CMUCL

  • implementación nativa muy extensa, comercial, muy extensa, excelente soporte para aplicaciones basadas en GUI: Allegro CL , < a href="http://www.lispworks.com"> LispWorks

por SO / Plataforma:

respondido por el Rainer Joswig 19.01.2013 - 08:07

Lea otras preguntas en las etiquetas