Como devo começar com o Lisp? [fechadas]

48

Venho programando há anos, trabalhando em várias iterações do Blub (BASIC, Assembler, C, C ++, Visual Basic, Java, Ruby em nenhuma ordem específica de "Blub-ness") e gostaria de aprender Lisp. No entanto, tenho muita interação com tempo limitado (família, trabalho em período integral etc.) e uma felicidade confortável com o meu atual Blub (Java).

Então, minha pergunta é esta, já que sou alguém que realmente gostaria de aprender o Lisp, quais seriam os passos iniciais para obter um bom resultado que demonstre a superioridade do Lisp no desenvolvimento da Web ? Talvez eu esteja perdendo o ponto, mas é assim que eu veria inicialmente a aplicação do meu conhecimento do Lisp.

Estou pensando "use o dialeto A, use o IDE B, siga as instruções na página C, questione sua sanidade após mônadas usando o conselheiro D". Eu gostaria de saber o que as pessoas aqui consideram um conjunto ideal de valores para A, B, C e talvez D. Também há algumas discussões sobre o mérito relativo de aprender uma linguagem tão poderosa em vez de, digamos, tornar-se um Rails especialista.

Apenas para adicionar mais detalhes, desenvolverei o MacOS (ou uma VM Linux) - nenhuma abordagem baseada no Windows será necessária, obrigado.

Notas para aqueles que apenas navegam

Vou manter essa pergunta em aberto por um tempo para poder oferecer feedback sobre as sugestões depois que eu puder explorá-las. Se você estiver navegando e achar que tem algo a acrescentar, faça. Eu realmente gostaria de receber seus comentários.

Links interessantes

Supondo que você venha do Lisp com experiência em Java, esse conjunto de links o ajudará a começar rapidamente.

  1. Usando o plugin La Clojure da Intellij para integrar o Lisp ( videocast )
  2. Lisp para a Web
  3. Versão online do Lisp Prático Comum (com Frank Shearar)
  4. Land of Lisp é um (+ (+ very quirky) game based)caminho, mas torna tudo tão simples
  5. Instale o Clojure e o Sublime 2 no MacOS, um excelente guia de introdução
  6. Veja o livro Clojure in Action . Trabalhou para mim.
Gary Rowe
fonte
11
Lendo "ANSI Common Lisp" e "On Lisp" de Paul Graham.
duros
2
Nas rochas Lisp (eu não li ANSI Common Lisp), mas como um livro de introdução , Practical Common Lisp> On Lisp. IMO, pelo menos. (Eu li On Lisp primeiro, mas PCL foi o que me levou a CL.)
Frank Shearar
Tenho que dizer que eu estou gostando de ler PCL no momento - excelentes notas sobre a história da língua realmente dar uma sensação para a comunidade
Gary Rowe
11
Minha primeira introdução ao Lisps foi assistir à famosa Estrutura e Interpretação de Programas de Computador. Então eu assisti o Clojure de Rich Hickey para programadores Java. Eu recomendaria esses vídeos como uma boa introdução.
WuHoUnited

Respostas:

18

Provavelmente, isso é contrário às recomendações da maioria das pessoas, mas evite o Emacs, a menos que você já saiba. Especialmente se você estiver acostumado com IDEs / editores modernos.

Estou falando por experiência própria; Tentei começar com o Emacs, mas ter que aprender o idioma E o editor ao mesmo tempo realmente me frustrou (especialmente porque o Emacs é tão diferente de outras ferramentas). Eu acabei jogando, começando com o PLT Scheme (agora Racket), que vem com um IDE de plataforma cruzada relativamente simples, um repositório centralizado de pacotes e documentos fabulosos (incluindo um tutorial intermediário especificamente voltado para o desenvolvimento da Web ). Depois de controlar o Lisp, voltei ao Emacs, pegando o EL / CL por meio do Common Common Lisp e do Guia do Elisp de Xah. Basicamente, a meu ver, você precisa conhecer um Lisp antes de poder usar o Emacs efetivamente, e precisa conhecer o Emacs para ser muito eficaz com o CL / Elisp. Isso significa que você pode escolher o esquema ou aprender o Common Lisp através de outro editor primeiro (provavelmente o LispWorks pessoal).

Se você já conhece o Emacs, sim, o Elisp é o passo natural (apesar de como você apreciaria o uso do Emacs sem conhecer o Elisp primeiro está além de mim).

YMMV, é claro, isso é exatamente o que eu achei que ajudou.

Como seu blub atual é Java, você provavelmente poderá obter muita quilometragem de Clojure , Armed Bear ou Kawa . Eu não tentei nenhum deles pessoalmente, não sendo um cara de Java, mas Clojure especificamente é altamente recomendado de outros Lispers que eu conheço. Parece que a capacidade de manter sua VM e IDE atuais pode ajudar no processo de aprendizado.

Inaimathi
fonte
Eu já tinha alguma fluência básica no emacs quando comecei. O Emacs tem uma curva de aprendizado muito íngreme!
Frank Shearar
+1 porque minhas experiências anteriores com o Emacs foram menos que maravilhosas (isso não me impede de querer conhecê-lo e ter o Lisp embutido - como Thorbjorn apontou - significa que posso usar meu conhecimento do Lisp no meu trabalho diário)
Gary Rowe
3
@ Thorbjørn Ravn Andersen - Fiz isso. Duas vezes. Ainda me encontrava constantemente usando atalhos do CUA (que estão desativados por padrão no Emacs). O pior foi fechar meu editor com um corte acidental + cópia pretendida ( C-x C-c). Eu amo o Emacs até a morte, e praticamente vivo nele agora, mas percebo que, a princípio, você está lutando anos de memória muscular dizendo que C-sé Save, não Searche Undoé isso C-z. Não vou recomendar esse tipo de frustração a alguém cuja intenção é aprender Lisp. Aprenda o idioma primeiro, perceba que você o ama e comece a lutar com as mãos com um objetivo claro em mente.
Inaimathi #
11
@Inaima, bem poder vem com um preço, e as ligações Emacs anteriores CUA assim culpa IBM :) Também Ctrl-C + Ctrl-V não é CUA :)
11
@Geoffrey van Wyk - O PLT é ótimo para começar, mas há alguns limites nos quais você se depara depois de um tempo que me fez mudar para o CL / Emacs depois de me orientar. YMMV. Escrevi há pouco tempo, se você estiver interessado em detalhes langnostic.blogspot.com/2010/09/… Quanto à questão do LispWorks; Eu tenho que acreditar que eles estão direcionando equipes grandes (onde a empresa compra as ferramentas) ou consultores (que geralmente fazem o suficiente para que o preço seja justificado). Não tenho certeza de como está funcionando para eles, mas não é a abordagem que eu teria escolhido.
Inaimathi
10

Bem, você pode acertar dois coelhos lendo o SICP ; um deles está aprendendo LISP (quero dizer, o esquema é um dialeto do Lisp) e outro é um ótimo insight sobre como programar.

Srinivas Reddy Thatiparthy
fonte
11
+1 para o link - uma rápida varredura parece mostrar que é muito detalhado, mas também bastante seco (leia acadêmico) em sua abordagem. Sou um grande fã da "voz dos especialistas" que aparece ao ler texto, mas parece uma boa referência geral.
Gary Rowe
10

Conrad Barski tem um ótimo tutorial chamado Casting SPELs in Lisp (SPEL é sua sigla para macros). Envolve fazer um jogo simples do tipo Aventura e pula direto para as macros Lisp. Ele também está trabalhando em um livro introdutório que agora está disponível em:

Aprenda a programar o Lisp, um jogo de cada vez .

E, no Sumário:

  • Crie seu próprio servidor web e use-o para jogar jogos baseados em navegador

No entanto, não sei o que isso implica no desenvolvimento da Web (como nas páginas HTML) usando o Lisp. :)

Atualização - Vejo alguém mencionar o livro "Estrutura e Interpretação de Programas de Computador", que me lembrou que o MIT colocou on-line todas as palestras em vídeo do SICP de Hal Abelson e Gerald Jay Sussman . Você pode ter achado o livro seco, mas as palestras são excelentes. Embora sejam baseados em esquemas, eles ainda transmitem os conceitos básicos também no Lisp, muito bem. Vale a pena baixar e assistir.

Cyclops
fonte
8

Para obter uma boa introdução básica ao idioma, leia Practical Common Lisp de Peter Seibel . O livro é excelente.

Configurar o emacs e o SLIME pode ser complicado para um iniciante, onde "complicado" varia em magnitude, dependendo do seu sistema operacional. Como de costume, o Windows pega o final mais curto, mas as pessoas fizeram a parte mais difícil e a escreveram (SBCL, Emacs, SLIME).

Assim que o caminho termina , o Planet Lisp fez referência a um artigo recentemente descrevendo como configurar o Hunchentoot e o nginx.

Edição específica do sistema operacional: MCLIDE pode ser um bom lugar para começar. Eu o instalei, mas ainda não tive a chance de usá-lo, por isso não posso dizer nada de útil. Certamente parece interessante!

Edit: O Eclipse também tem o plugin Cusp .

Frank Shearar
fonte
6

Já tenho muitas ótimas respostas, mas supondo que você queira mergulhar de cabeça no desenvolvimento web com um Lisp, tenho mais algumas idéias.

O Clojure é o primeiro Lisp que vi ter realmente excelentes estruturas da Web de pilha completa, prontas para o horário nobre.

  • Noir é uma estrutura web sólida, com roteamento, modelagem etc., semelhante ao Sinatra, mas um pouco mais rica em recursos. Ele usa o Ring, que é basicamente o equivalente de Clojure ao Rack in Ruby.
  • O Korma é uma biblioteca de abstração SQL que combina muito bem com o Noir.
  • Pinot é uma estrutura do lado do cliente escrita inteiramente em ClojureScript, que nos leva a:
  • Clojurescript é um compilador para Clojure que é direcionado para Javascript.

Se você não percebeu, acabei de cobrir toda a pilha da Web e está tudo escrito em Clojure.

Acho o Clojure um pouco mais fácil de começar do que o Common Lisp, com muito mais suporte a conjunto de recursos / biblioteca do que o Scheme.

Se você é proveniente de um background Java, ele tem o benefício adicional de executar na JVM, que fornece acesso a todo o stdlib Java quando necessário.

A documentação disponível é um trabalho em andamento, assim como as próprias estruturas. Mas há um bom tutorial aqui.

No que diz respeito aos editores ... se você está confortável com o vim, pode usar o vim com o SLIMV. Se você gosta do emacs, o emacs / SLIME está bem. Há um suporte muito bom do Eclipse e do NetBeans para o Clojure (ou pelo menos me disseram), mas geralmente uso o TextMate (embora o Sublime Text 2 esteja rapidamente se tornando meu editor preferido). Sei que estou perdendo um pouco da magia Lisp que não usa um ambiente mais integrado, mas estou feliz em pressionar ⌘-Tab para trocar entre meu editor e o REPL; sua milhagem pode variar.

Se você quer um livro para começar, recomendo o Programming Clojure de Stuart Halloway e Aaron Bedra. A 2ª edição acabou de sair do PragProg , portanto está atualizada.

Lisping feliz!

Jason Lewis
fonte
Você pode querer adicionar Leiningen
Gary Rowe
5

Outro comentarista, Inaimathi , recomendou este livro há alguns dias: The Little Schemer

Recebi hoje e posso dizer como alguém que possui uma biblioteca bastante robusta de livros de programação adquirida ao longo de muitos anos, que eu posso ter lido apenas um capítulo, mas definitivamente vou precisar de uma versão em capa dura. É como o Tao Te Ching, muitos pequenos trechos da sabedoria divina sobre a linguagem. Pode dizer Scheme, mas foi originalmente chamado de "The Little LISPer", os idiomas no nível que discute são suficientemente semelhantes para serem ensinados como um.

Não é um texto avançado, mas tem a missão de instilar os princípios da linguagem e para que serve, como pensar. Acredito que seria um excelente começo para o LISP.

NB A Matriz de Competências para Programadores, na verdade, menciona este livro no nível superior de competência das coisas a serem procuradas. (consulte a seção Livros)

Orbling
fonte
4

Um bom lugar para começar a usar o Lisp é dentro do editor Emacs, onde pode ser usado para redefinir qualquer coisa. Você deseja que a tecla 'e' insira a hora da data, basta escrever um pequeno trecho de Lisp para gerar a string e vinculá-la à tecla e. Feito.

Isso também permitirá que você USE o que aprendeu diariamente, se usar um editor comum durante o dia.


fonte
+1 no conselho "use o que aprender". Sou um funcionário da Intellij para o trabalho diário, mas talvez consiga colocar minhas patas no emacs em nosso ambiente de software muito restrito.
Gary Rowe
3

Se você estiver desenvolvendo em um Mac, experimente o Clozure CL . Ele vem com um IDE que possui pressionamentos de tecla compatíveis com o Emacs, e há uma ponte para o Objective C para que você possa escrever aplicativos Cocoa.

Além disso, li Prático Common Lisp, mas achei o Successful Lisp útil também.

Por fim, um pouco de paciência de sua parte será recompensada. A produtividade e as pequenas vitórias ocorrerão rapidamente, mas a grande vitória pode demorar um pouco.

Larry Coleman
fonte
2

Eu tenho uma cópia do ANSI Common Lisp aqui perto da minha mesa. Eu o pego a cada dois anos e passo alguns capítulos, depois fico preso em alguns exercícios e ele desliza para baixo na lista de prioridades. Isso provavelmente diz mais sobre mim do que o livro. O livro parece inteiramente competente ...

glenatron
fonte
Talvez a leitura das respostas e dos comentários a esta pergunta lhe dê o ímpeto de trabalhar em direção a um objetivo maior. Ter uma rachadura no link PCL e diga-nos o que você pensa ...
Gary Rowe