Parece haver um problema imediato com o desenvolvimento do Common Lisp: escolhendo uma implementação. O que se deve levar em consideração e quanto peso deve ter ao considerar uma implementação de CL?
Deve estar em conformidade com o padrão ANSI? Deve ser suportado pelo SLIME? Algumas implementações carecem de boas bibliotecas, documentação, etc?
lisp
implementations
common-lisp
anônimo
fonte
fonte
Respostas:
Depende de suas necessidades específicas e dos pontos fortes e fracos das implementações específicas. Dito isto, eis o que me vem à mente quando se pensa em diferentes implementações:
O SBCL é bastante rápido e bom em processamento de números. Portanto, se você depende de computação numérica pesada, essa pode ser a implementação correta para você. Além disso, possui inferência de tipo decente (para uma implementação Lisp).
O CLISP é uma implementação relativamente pequena, de compilação de bytes, que pode ser interessante para scripts.
Alguns anos atrás, eu tentei o CCL e o mantive, porque preferia suas mensagens de erro e rastreios de pilha aos de outras implementações, bem como seus tempos de compilação relativamente baixos. Para mim, a facilidade de uso interativo é algo de alta prioridade. Se a velocidade for necessária, eu ainda posso mudar para SBCL para o programa implantado. (Porém, nunca foi necessário.) Além disso, existe a opção de suporte comercial.
Se você deseja implantar na JVM, existe o ABCL.
Para uso incorporado, ECL.
O Allegro possui o AllegroGraph, o AllegroStore, um construtor de GUI visual simples de usar e muito mais, mas nem todo mundo gosta dos termos de licença.
O LispWorks parece se prestar muito bem à programação de aplicativos para o usuário final com um bom conjunto de ferramentas de GUI de plataforma cruzada e termos de licenciamento que podem se encaixar em equipes pequenas e programadores únicos melhores que os da Allegro. (Pelo menos é o que eu prefiro.)
Obviamente, essas são apenas categorias e impressões amplas. Sugiro dar uma olhada mais de perto na SBCL, CCL e CLISP, já que essas são IMHO as implementações de código aberto mais usadas e com o melhor suporte, e depois escolher uma delas. Ou seja, a menos que suas necessidades correspondam ao que ABCL ou ECL tem a oferecer.
Não seria uma implementação de CL, se não. (É claro que pode haver alguns desvios na prática, mas a conformidade deve pelo menos ser o objetivo.)
Claro - se você usa SLIME. (Na minha opinião, é o melhor ambiente Lisp disponível no momento, mas cada um é seu.)
Pelo menos SBCL, CCL, Allegro e LispWorks devem ser bem suportados pela maioria das bibliotecas comumente usadas. O CLISP vem com uma coleção de bibliotecas bastante agradável e também deve ser suportado principalmente.
fonte
Dan Weinreb (infelizmente ele faleceu no ano passado) escreveu uma visão geral:
Pesquisa Lisp
Existem muitas diferenças entre as implementações de CL. Não é possível atender a todas as diferentes necessidades (velocidade, tamanho, licença, preço, compatibilidade, suporte ao sistema operacional, ...) dos usuários de um sistema Lisp em uma implementação. É preciso encontrar um ótimo local usando uma ou mais das implementações disponíveis, que seguem uma certa filosofia:
grátis, sem custo, baseado em C (portanto amplamente portado): ECL , CLISP
grátis, sem custo, baseado em JVM: ABCL
implementação nativa gratuita, gratuita e abrangente: SBCL , CCL , CMUCL
implementação nativa proprietária, comercial, muito extensa, excelente suporte para aplicativos baseados em GUI: Allegro CL , LispWorks
por SO / plataforma:
fonte