Qual é o melhor esquema ou implementação LISP para OS X?

86

Estou procurando uma versão do Scheme ou mesmo LISP que eu possa usar para recuperar algumas habilidades de desenvolvimento Lisp perdidas. Alguns recursos da web seriam bons, mas não essenciais.

Eu olhei para o esquema Plt e MIT e, embora ambos pareçam muito bons, o Plt parece ser mais rico em recursos. Também examinei as implementações Lisp, mas todas parecem muito caras.

Eu sou a favor de implementações gratuitas / baratas, pois é realmente provável que seja apenas uma programação de hobby ocasional. Que recomendações você teria?

Mark Brittingham
fonte
6
Observe que o esquema PLT mudou o nome para Racket.
soegaard
pergunta fortemente relacionada: stackoverflow.com/questions/2485859
pnkfelix
2
Por que essa pergunta não foi encerrada e quase todas as outras como esta foram?
Erik Kaplun de

Respostas:

71

Eu iria com o Racket. Pode não ser tão rápido quanto o SBCL, mas tem excelentes bibliotecas e documentação, bem como um ambiente integrado projetado para permitir que você desenvolva e execute programas Scheme desde o início. O que eu realmente gosto no IDE do Racket, DrRacket, é o que você não precisa fazer - você não precisa aprender Emacs, não precisa aprender SLIME, não precisa se preocupar em procurar terceiros- bibliotecas do partido, como virtualmente todas as bibliotecas destinadas ao Racket podem ser encontradas em pacotes . Resumindo, ele realmente reduz a curva de aprendizado e permite que você se concentre na tarefa real em mãos: escrever um ótimo código.

Além disso, ele vem com um servidor web se você quiser fazer sites com o Racket (que estou pesquisando atualmente).

Kyle Cronin
fonte
1
Escolhi o PLT mais ou menos aleatoriamente há algumas semanas e até agora estou muito satisfeito com minha escolha. Como você disse, muitas bibliotecas e documentação, algumas ferramentas úteis.
Slartibartfast
Obrigado, hum, ninguém. Estou mais focado em ferramentas e documentação do que em velocidade, então vou usar o PLT.
Mark Brittingham
1
Coisa certa. DrScheme foi criado com a educação em mente, o que tem algumas vantagens (simples de usar e documentado), mas também tem algumas desvantagens; a menos que você esteja acessando HtDP ( htdp.org ), é melhor ignorar as línguas de ensino e usar o Módulo para tudo.
Kyle Cronin
Além de agora ser chamado de Racket, há agora um novo sistema de pacotes e catálogo de pacotes que é preferível a Planet para a maioria dos casos de uso.
Jack
22

Eu fiz algumas experiências com isso.

Clozure Common Lisp (née Open MCL) é de longe o mais rápido; 25-30 por cento mais rápido do que o próximo concorrente no meu Mac Mini Intel.

O Esquema do MIT funciona muito bem em um Mac. Acho que acabei compilando sozinho, mas há binários nesse site. O PLT Scheme também é bom e, possivelmente, um pouco melhor integrado ao mundo Mac. (O esquema PLT agora é conhecido como Racket , mas não o experimentei depois da mudança.)

Charlie Martin
fonte
2
quase tudo com que tentei; geralmente, essas foram manipulação pesada de lista e uso pesado da loopmacro.
Charlie Martin de
1
Talvez queira observar que o CCL parece não funcionar no Intel de 32 bits, então meu Mac Mini é um pouco velho para ele.
David Thornley
16

Sou um grande fã de Clojure, SBCL e Clozure CL. Eles são todos fantásticos, mas também são exagerados se tudo o que você quer fazer é refrescar suas costeletas de Lisping. Todos eles requerem uma quantidade absurda de caça de informações, pesquisa de listas de discussão, instalação de pacotes, irc espreita, etc.

Dr Scheme apenas instala e executa. Terminei os três primeiros capítulos do SICP há quatro anos e meio, usando o Dr. Scheme. Nada foi mais profundo do que definir um avaliador Scheme em si. Depois de definir isso, você terá muito mais paciência para os irmãos da força industrial.

dnolen
fonte
3
Na verdade, eu não precisava de mais nada para a configuração do Ubuntu-SBCL-SLIME-stumpwm. Para começar, o Practical Common Lisp e o CLHS são tudo o que você precisa, e isso o leva muito longe.
Svante
15

Para Scheme, DrRacket é incrível (incluído no Racket ).

Para Common Lisp, Ready Lisp é ótimo. Um único dmg com SBCL, Aquamacs e Slime funcionando fora da caixa.

A partir do site:

Ready Lisp é uma combinação de vários pacotes Common Lisp populares especialmente para Mac OS X, incluindo: Aquamacs, SBCL e SLIME. Uma vez baixado, você terá um pacote de aplicativo único no qual você pode clicar duas vezes - e se encontrar em um REPL Common Lisp totalmente configurado.

É ideal para usuários do OS X que desejam experimentar a beleza do Common Lisp com o mínimo de complicações. Ele também pode ser usado por professores para fornecer aos alunos do Mac um ambiente Common Lisp completo e gratuito para levar para casa. Requisitos

A versão atual do Ready Lisp é 20090127 e requer Mac OS X 10.5 (Leopard).

Inclui as seguintes versões de software do componente:

Aquamacs  1.6
SBCL    1.0.24
SLIME   2009-01-23
CL-FAD  0.6.2
CL-PPCRE    2.0.1
LOCAL-TIME  0.9.3
SERIES  2.2.10
CL HyperSpec    7.0
paredit.el  20
redshank.el     1
cldoc.el    1.16
Sébastien RoccaSerra
fonte
5

Acabei de começar a jogar com Clojure . Aparentemente, ele tem uma boa estrutura da web e compila para bytecode JVM.

Eu também uso muito o DrScheme . É um IDE simples, mas útil.

Matthew Schinckel
fonte
5

Dependendo de como você define "Lisp", Clojure pode ser adequado. Ele roda bem no OS X (roda em qualquer lugar em que o JVM seja executado). Ele tem recursos da web e é gratuito.

Ele também tem a vantagem de ser novo, moderno e divertido de usar. Pode ser ideal para programação de hobby. É fácil escrever aplicativos web ou aplicativos GUI (usando Swing do Java ou mesmo Qt).

Brian Carper
fonte
4

Eu mesmo não usei, mas o Steel Bank Common Lisp recebeu comentários favoráveis ​​no reddit. É open source e gratuito, então o preço é justo para alguma programação de hobby.

No passado, eu tinha o GNU Common Lisp em execução no meu macbook pro.

Dana
fonte
4

Se você está procurando pelo Scheme, pode dar uma olhada no JazzScheme recém-lançado .

Marko
fonte
4

Eu recomendo Racket para iniciantes, uma vez que fornece um dos melhores IDE para iniciantes em Scheme (ou melhor, iniciantes em programação que estão usando Scheme, ou melhor ainda, trabalhando seu caminho através do HtDP).

http://racket-lang.org/

Outra opção, para pessoas que estão mais interessadas em um pequeno sistema Scheme a fim de modificá-lo ou ler seu código-fonte, é o Larceny Scheme, que é de interesse em grande parte porque seu compilador JIT, Twobit, é implementado inteiramente no Scheme.

http://www.larcenists.org/


Atualização: Além disso, o Chez Scheme teve recentemente o código aberto:

https://github.com/cisco/ChezScheme

(Pode não ser tão "pequeno" quanto o Larceny, mas tem um compilador de otimização muito agressivo.)

pnkfelix
fonte
no site, eles parecem mencionar apenas um compilador nativo, um compilador para C e uma implementação CLR - onde está o JIT?
Erik Kaplun de
O compilador nativo é um JIT.
pnkfelix
(isto é, ele compila dinamicamente cada expressão Scheme que você alimenta via 'load' ou o REPL em código de máquina x86. JIT aqui é para "just in time"; não está relacionado a Java e JVM, caso seja isso que você pensei que quis dizer com JIT)
pnkfelix
Não acho que tenha algo a ver com Java; só que a página inicial diz "compila diretamente para o código de máquina nativo" , e não é assim que VMs / interpretadores de compilação JIT são geralmente descritos.
Erik Kaplun
1
Para responder à sua pergunta, você não pode realmente obter um binário autônomo do Larceny como ele está agora. Você pode carregar sua origem do Scheme e então serializar seu heap (com código compilado) em uma imagem de heap, mas mesmo assim você ainda terá que redistribuir o arquivo de heap e o binário de tempo de execução como arquivos separados. Já considerei tentar tornar mais fácil mesclar os dois em uma única imagem binária, mas nunca me precipitei.
pnkfelix
3

Você pode querer dar uma olhada na Association of Lisp Users ou no Common Lisp Wiki para ver o que há. Eu me estabeleci com Steel Bank Common Lisp e Emacs, mas fiz pouco com eles até agora.

David Thornley
fonte
2

Se você está apenas programando por hobby, LispWorks tem uma versão pessoal gratuita que é bastante poderosa e sofisticada. Seu maior problema é um limite de tempo de execução de várias horas. Portanto, você não escreverá nenhum servidor de longa duração nele, mas isso não significa que não seja uma ferramenta útil.

CLISP roda em quase tudo e é muito bom, na verdade, ele simplesmente não faz threads. (Importante se você deseja escrever um servidor real, mas como PHP e Perl nos mostraram, Apache + [inserir linguagem] é uma plataforma muito viável.)

Will Hartung
fonte
1

Tenho me perguntado a mesma coisa ultimamente. Tendo usado o DrScheme no OS X, seria minha primeira escolha de distribuição do Scheme para qualquer plataforma. IDE muito bom, recursos de depuração e um bom conjunto de bibliotecas / frameworks (incluindo um kit de ferramentas GUI muito bom que 'simplesmente funciona ... mesmo no Mac' ;-))

No entanto, agora estou procurando um ambiente similarmente confortável para Common Lisp. Tudo se resumia a CCL (OpenMCL) versus SBCL. SBCL parece ser a escolha popular, mas eu li que no OS X ele não suporta threading. (Isso é realmente um problema?). O Clozure CL, por outro lado, possui um bom suporte para threads nativas, a ponte obcj, etc ...

Estou achando o CCL um pouco estranho, mas vou insistir por um tempo - ainda parece a escolha lógica para integração.

Eu uso Emacs 23 (construído a partir do código-fonte usando --with-ns) e Slime como um ambiente e isso funciona bem para mim. :-)


fonte
1

Eu descobri que o Chicken funciona bem para Scheme e está disponível através de homebrew.

brew install chicken

A maior parte do código do SICP funciona com pequenas modificações.

Justin Meiners
fonte
1

Vá com Racket . Estou muito feliz com isso!

Jaro
fonte