Quale implementazione Common Lisp usare? [chiuso]

44

Sembra esserci un problema immediato con l'avvio dello sviluppo in Common Lisp: scegliere un'implementazione. Che cosa bisogna tenere in considerazione e quanto peso dovrebbe sopportare quando si considera un'implementazione CL?

Dovrebbe essere conforme allo standard ANSI? Dovrebbe essere supportato da SLIME? Alcune implementazioni mancano di buone librerie, documentazione, ecc.?

    
posta anonymous 19.01.2013 - 04:42
fonte

2 risposte

25

Dipende dalle tue esigenze specifiche e dai punti di forza e di debolezza delle particolari implementazioni. Detto questo, ecco cosa mi viene in mente quando penso a diverse implementazioni:

SBCL è piuttosto veloce e bravo a gestire i numeri. Quindi, se dipendi da pesanti calcoli numerici, quella potrebbe essere la giusta implementazione per te. Inoltre, ha un'inferenza di tipo decente (per un'implementazione Lisp).

CLISP è un'implementazione di compilazione di byte relativamente piccola che potrebbe essere interessante per lo scripting.

Alcuni anni fa, ho provato CCL e ne ho tenuto conto perché preferivo i suoi messaggi di errore e le tracce di stack a quelle di altre implementazioni, così come i tempi di compilazione relativamente bassi. Per me, la facilità di utilizzo interattivo è una priorità molto alta. Se è necessaria la sua velocità, potrei comunque passare a SBCL per il programma distribuito. (Mai necessario, però.) Inoltre, c'è l'opzione del supporto commerciale.

Se desideri distribuire su JVM, c'è ABCL.

Per uso incorporato, ECL.

Allegro ha AllegroGraph, AllegroStore, un semplice costruttore di GUI visivi e molto altro, ma non tutti amano i loro termini di licenza.

LispWorks, sembra prestarsi piuttosto bene per la programmazione di applicazioni per l'utente finale con un bel toolkit GUI multipiattaforma e termini di licenza che potrebbero adattarsi a piccoli team e singoli programmatori meglio di Allegro. (Almeno è quello che preferirei.)

Naturalmente, queste sono solo ampie categorie e impressioni. Suggerirei di dare un'occhiata più da vicino a SBCL, CCL e CLISP, dal momento che sono IMHO le implementazioni open source più utilizzate e meglio supportate, quindi scegliere una di queste. Cioè, a meno che le tue esigenze corrispondano a ciò che ABCL o ECL hanno da offrire.

Should it conform to the ASNI standard?

Non sarebbe un'implementazione CL, se così non fosse. (Potrebbero, naturalmente, esserci alcune deviazioni nella pratica, ma la conformità dovrebbe essere almeno l'obiettivo.)

Should it be supported by SLIME?

Certo - se usi SLIME. (Secondo me, è il miglior ambiente Lisp disponibile al momento, ma a ciascuno il suo.)

Do certain implementations lack good libraries, documentation, etc?

Almeno SBCL, CCL, Allegro e LispWorks dovrebbero essere supportati dalla maggior parte delle librerie comunemente usate. CLISP è dotato di una raccolta di librerie piuttosto bella e dovrebbe anche essere supportato principalmente.

    
risposta data 19.01.2013 - 06:05
fonte
21

Dan Weinreb (purtroppo è scomparso l'anno scorso) ha scritto una panoramica:

Lisp Survey

Ci sono molte differenze tra le implementazioni di CL. Non è possibile coprire tutte le esigenze (velocità, dimensioni, licenza, prezzo, compatibilità, supporto del sistema operativo, ...) degli utenti per un sistema Lisp in un'unica implementazione. Bisogna trovare un ottimo locale usando una o più delle implementazioni disponibili, che seguono una certa filosofia:

  • gratuito, a costo zero, basato su C (quindi ampiamente trasferito): ECL , CLISP

  • gratuito, a costo zero, basato su JVM: ABCL

  • implementazione nativa gratuita, gratuita ed estesa: SBCL , CCL , CMUCL

  • implementazione nativa proprietaria, commerciale, molto estesa, supporto eccellente per le applicazioni basate su GUI: Allegro CL , < a href="http://www.lispworks.com"> LispWorks

per OS / Piattaforma:

risposta data 19.01.2013 - 08:07
fonte

Leggi altre domande sui tag