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.
- Usando o plugin La Clojure da Intellij para integrar o Lisp ( videocast )
- Lisp para a Web
- Versão online do Lisp Prático Comum (com Frank Shearar)
- Land of Lisp é um
(+ (+ very quirky) game based)
caminho, mas torna tudo tão simples - Instale o Clojure e o Sublime 2 no MacOS, um excelente guia de introdução
- Veja o livro Clojure in Action . Trabalhou para mim.
fonte
Respostas:
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.
fonte
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 queC-s
éSave
, nãoSearch
eUndo
é issoC-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.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.
fonte
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:
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.
fonte
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 .
fonte
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.
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!
fonte
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)
fonte
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
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.
fonte
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 ...
fonte