Qual implementação do Common Lisp usar? [fechadas]


45

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?


Pergunta interessante: Estou lendo "Practical Common Lisp" agora e experimento meus exemplos no CLISP, mas acho que qualquer implementação está em conformidade com o padrão: Common Lisp parece uma linguagem muito madura e estável para mim.
Giorgio

Respostas:


25

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.

Deve estar em conformidade com o padrão ASNI?

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

Deve ser suportado pelo SLIME?

Claro - se você usa SLIME. (Na minha opinião, é o melhor ambiente Lisp disponível no momento, mas cada um é seu.)

Algumas implementações carecem de boas bibliotecas, documentação, etc?

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.


22

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:

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.