tutorial net descargar compiler compiladores common lisp common-lisp

lisp - net - ¿Cómo difieren las diversas implementaciones CL de ANSI?



lisp descargar (9)

No sé lo suficiente como para darle una respuesta detallada, pero noté que SBCL era considerablemente más rápido que Clisp cuando estaba trabajando con CL para mi clase de IA. A menos que tengas una razón convincente para no hacerlo, te sugiero que vayas con SBCL.

He escuchado que Clisp es más fácil de instalar y más portátil que SBCL (que tiene muchas optimizaciones específicas del procesador), pero si usa Linux, ambos son fáciles de obtener del administrador de paquetes.

Cuando comencé a aprender CL de Practical Common Lisp, como se predica en el libro, comencé con Allegro CL compilador. Dejé de usarlo, ya que su bit comercial, pero libre, no me impresionó. Necesitaba una conexión a su servidor remoto para algunas licencias.

Cambié a ''clisp'' y lo estoy usando. Ahora, he estado escuchando sobre SBCL y estoy planificando comenzar a usarlo también.

Entonces, la pregunta es: ¿cómo difieren las diversas implementaciones CL de ANSI? ¿Alguna experiencia práctica de usar una sobre la otra?

Gracias.


Si está en una máquina que puede ejecutar SBCL, debería usarla. Es el compilador Lisp gratuito más rápido (puede generar código tan rápido como Haskell, OCaml, Java, C y C ++, que son muy rápidos, especialmente en comparación con Python y Ruby). También es una implementación bastante completa y es compatible con la mayoría de las características de Swank (para SLIME), lo cual es bueno cuando se está desarrollando.

Como mencionan algunos de los otros comentarios, no notará ninguna diferencia cuando empiece. Todas las implementaciones de CL gratuitas son "lo suficientemente rápidas" y admiten todas las características que necesitará. Pero si comienza a escribir software de producción, apreciará las características de SBCL. OTOH, realmente no hay razón para no cambiar ahora.



Encontré los mensajes de error en clisp para ser más amigables y ayudarme a encontrar el problema más rápido.


He tenido bastante suerte con la instalación de clisp usando cygwin si estás en Windows.


Hay porciones de CL ANSI que dejan ciertos detalles hasta las implementaciones para determinar; encontrará que para esas partes del estándar, cada implementación tendrá sus propias peculiaridades.

Además, busque las cosas que son importantes para el tiempo de ejecución pero que no están definidas en el lenguaje: cosas como el enhebrado y el multiprocesamiento y la recolección de basura variarán sustancialmente en rendimiento y confiabilidad.

He encontrado que SBCL es la implementación más fácil para trabajar en Linux; tiene un buen soporte para enhebrar en Linux. No puedo decir mucho sobre el recolector de basura, porque todavía no me ha importado mucho.

En Windows, su mejor opción será Allegro o LispWorks, aunque he tenido cierto éxito con clisp en Windows. El puerto de Windows de SBCL está progresando, pero no lo he usado demasiado, así que no puedo comentar.

En términos generales, una comprensión de este tipo de cosas que son difíciles de adquirir a través de la investigación o el análisis; viene a través de la experiencia. Solo elija una implementación decente con la que se sienta cómodo y empiece a trabajar. Descubrirás las cosas difíciles a medida que avanzas.


Parece que el REPL de SBCL no es amigable en comparación con clisp? EG Puedo usar la tecla TAB para autocompletar la entrada en clisp.

así clisp es mejor para lisb novato.


Depende de su sistema operativo de elección

  • Windows: use ecl o abcl
  • Linux: use sbcl o ecl o abcl o cmucl
  • Mac - ccl o ecl o sbcl
  • Otro - abcl o ecl o sbcl

EDITAR:

Sbcl en Windows carece de subprocesos y, en general, no es estable, y ninguno de los mantenedores principales usa Windows.

ecl es una opción mucho mejor para crossps de plataforma cruzada, su conjunto de características es igual de estable en todas las plataformas principales.

EDITAR 2011-10: Windows SBC ahora tiene soporte de enhebrado. Todavía no se ha fusionado por completo en mainiline, pero hay una bifurcación que es bastante estable y tiene subprocesos y otros objetos específicos de Windows.


He estado buscando soluciones de Win32 para la misma pregunta. En cuanto a las implementaciones gratuitas de Lisp en Windows, recomendaría encarecidamente Clozure CL (CCL). Hay varias razones para esto. El primero es que Clozure admite binarios de 32 y 64 bits. Es muy rápido y algo compacto. Pero lo más importante, es consistente y correcto. Me parece que es un Lisp extremadamente maduro, después de trabajar con Lispworks (que echo de menos) durante varios años. CCL hace un muy buen trabajo con subprocesos de SO nativos, sockets y algunos otros elementos que no forman parte de las especificaciones de CL. Su implementación de CLOS parece ser extremadamente completa. Y es GC y la administración de la memoria son excelentes. Comparé CCL con SBCL en Win32, y aunque SBCL fue un poco más rápido en varios puntos de referencia, significaba mucho más, y su imagen siguió creciendo y creciendo, incluso después de varios GC forzados. Mientras tanto, CCL fue consistente, pequeño, rápido y agradable de usar. Y si desea una plataforma que sea consistente en Windows, Mac y Linux, y que cuente con soporte de 32 y 64 bits, no busque más.

Probé CormanLisp en Win32, y había muchas cosas que me gustaban. Pero no se ejecuta correctamente en plataformas Windows de 64 bits y está limitado a Win32. Tampoco es gratis, y de alguna manera tuve que estrellarme cuando le arrojaba un código de basura. También pude hacer que SBCL fallara fácilmente. No es así con CCL. Roca sólida. Realmente, esos muchachos hicieron un trabajo increíble, y finalmente ayudarán a mantener a Lisp con vida.

En cuanto a SLIME, no intenté que SLIME trabajara con SBCL, pero lo hice funcionar bien con CCL. No importa cuál sea su fantasía, le aconsejo a las personas que escriban código para que sea fácilmente portátil. Apunta a Windows, Mac y Linux, y apunta a 64 bits. Si considera esto, entonces CCL es su mejor opción en general.

Un último intento de respuesta a esto es considerar qué está mal con los demás. Esto es lo que he venido a encontrar:

  • CLISP es agradable, pero es mucho más lento, relativo a SBCL o CCL. Veo poco al revés
  • SBCL parece pobre en Win32. El tamaño de la imagen puede ser grande.
  • CormanLisp es bueno en Win32, pero no es portátil, y no es compatible con Windows x64. También parece que Roger Corman no está desarrollando activamente CormanLisp, lo cual es una pena, pero es la realidad.
  • Clojure (con una "j") no es Common Lisp. Por bueno que sea, creo que si ya conoces a CL, no vale la pena sobrecargar las muchas diferencias de Clojure. Estoy seguro de que algunos pueden recogerlos rápido, pero seguro que no. (Si el código compatible con Java es lo que buscas, entonces mira ABCL).

dave