Que implementação do Common Lisp deve ser usada? [fechadas]

44

Parece haver um problema imediato em começar a desenvolver no Common Lisp: escolhendo uma implementação. O que se deve levar em conta, e quanto peso ele 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?

    
por anonymous 19.01.2013 / 04:42
fonte

2 respostas

25

Depende de suas necessidades específicas e dos pontos strongs e fracos das implementações específicas. Dito isto, eis o que me vem pela primeira vez quando penso em diferentes implementações:

A SBCL é bastante rápida e boa em processamento de números. Portanto, se você depender de computação numérica pesada, essa pode ser a implementação correta para você. Além disso, tem inferência de tipo decente (para uma implementação de Lisp).

O CLISP é uma implementação de compilação de bytes relativamente pequena que pode ser interessante para o script.

Há alguns anos, experimentei o CCL e fiquei com ele, porque preferia suas mensagens de erro e rastreamentos de pilha aos de outras implementações, assim como seus tempos de compilação relativamente baixos. Para mim, facilidade de uso interativo é algo de alta prioridade. Se sua velocidade for necessária, ainda posso mudar para o SBCL para o programa implantado. (Nunca precisei, no entanto.) Além disso, há a opção de suporte comercial.

Se você deseja implantar na JVM, há ABCL.

Para uso incorporado, ECL.

O Allegro tem AllegroGraph, AllegroStore, um construtor de GUI visual simples e muito mais, mas nem todo mundo gosta de seus termos de licenciamento.

O LispWorks parece se adaptar muito bem para a programação de aplicativos do usuário final, com um kit de ferramentas GUI de plataforma cruzada e termos de licenciamento que podem se adequar a equipes pequenas e programadores únicos melhor do que o da Allegro. (Pelo menos é o que eu prefiro.)

Claro, essas são apenas categorias e impressões amplas. Eu sugiro dar uma olhada mais de perto na SBCL, CCL e CLISP, já que essas são as implementações de código aberto mais usadas e melhor suportadas, escolhendo uma delas. Ou seja, a menos que suas necessidades correspondam com o que a ABCL ou a ECL tem a oferecer.

Should it conform to the ASNI standard?

Não seria uma implementação de CL, se não fosse. (Pode haver, é claro, alguns desvios na prática, mas a conformidade deve ser pelo menos o objetivo.)

Should it be supported by SLIME?

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

Do certain implementations lack good libraries, documentation, etc?

Pelo menos, SBCL, CCL, Allegro e LispWorks devem ser bem suportados pela maioria das bibliotecas comumente usadas. O CLISP vem com uma boa coleção de bibliotecas, e também deve ser suportado principalmente.

    
por 19.01.2013 / 06:05
fonte
21

Dan Weinreb (infelizmente ele faleceu no ano passado) escreveu uma visão geral:

Levantamento de Lisp

Existem muitas diferenças entre as implementações do CL. Não é possível cobrir todas as diferentes necessidades (velocidade, tamanho, licença, preço, compatibilidade, suporte ao sistema operacional, ...) de usuários para 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:

  • gratuito, sem custo, baseado em C (portanto, amplamente portado): ECL , CLISP

  • gratuito, sem custo, baseado em JVM: ABCL

  • implementação nativa gratuita, gratuita e extensiva: SBCL , CCL , CMUCL

  • implementação nativa proprietária, comercial, muito extensa, excelente suporte para aplicativos baseados em GUI: Allegro CL , < href="http://www.lispworks.com"> LispWorks

pelo sistema operacional / plataforma:

por 19.01.2013 / 08:07
fonte