Obviamente, é possível escrever quase qualquer tipo de aplicativo em quase qualquer linguagem de programação, especialmente em uma tão poderosa como Lisp (seja Scheme ou Common Lisp). Mas é prático usá-lo para desenvolvimento web? Em caso afirmativo, qual deve ser um bom ponto de partida? Onde podem ser encontrados os recursos adequados (ferramentas, bibliotecas, documentação, melhores práticas, exemplos, etc.) para um projeto desta natureza?
100
Respostas:
Sim, o desenvolvimento web é um dos pontos fortes do Common Lisp hoje.
Como servidor da web, use o Hunchentoot , anteriormente conhecido como tbnl, do Dr. Edmund Weitz.
Você pode executá-lo como um back-end para o Apache usando mod_proxy como um proxy reverso ou como um servidor autônomo.
Várias soluções de geração de HTML estão disponíveis, de modelos de estilo PHP a hacks de macro Lisp e XSLT. Basta fazer sua escolha.
HTML-TEMPLATE é um exemplo.
Closure XML está disponível para análise XML, serialização, XPath 1.0, XSLT 1.0. Há também Closure HTML para análise de sopa de tag HTML.
(Divulgação completa: eu sou o mantenedor do Closure XML e do Closure HTML.)
Se desejar, o Parenscript pode tornar sua experiência com o JavaScript mais lispier, mas você também pode escrever um JavaScript simples e antigo, é claro.
Outra solução interessante de aprimoramento de JavaScript em jwacs , que é escrita em Common Lisp e transforma o JavaScript para adicionar suporte de continuação.
Projetos de serviço da Web podem exigir um cliente HTTP além de um servidor.
Drakma é a biblioteca a ser usada para isso hoje.
PURI é útil para manipulação de URI.
E tem mais! Um ponto de partida é o cliki, por exemplo cliki.net/web .
Na web, ninguém sabe que seu servidor está escrito em Common Lisp :-)
fonte
O desenvolvimento da Web em Common Lisp é eficaz e divertido.
Alguns exemplos:
CL-WHO permite que você escreva HTML sem esquecer uma tag de fechamento nunca mais.
Weblocks permite definir formulários declarativamente com validação integrada:
Ele também oferece suporte a AJAX de maneira totalmente automática, voltando aos links normais se o navegador não o suportar.
cl-prevalência é uma alternativa incrivelmente simples para SQL.
Muitas pessoas estão usando essas tecnologias recentemente para aplicativos de missão crítica - com sucesso.
A maioria dos projetos de código aberto CL mais importantes, de fato, têm um excelente suporte da comunidade.
fonte
Existem alguns frameworks web para desenvolvimento web. Dê uma olhada em:
Se você deseja ferramentas lisp bem suportadas, você precisará pagar por elas. Simplesmente não há uma comunidade muito grande em torno das ferramentas de código aberto, então elas não têm o mesmo nível de documentação / adoção que, digamos, Django em Python.
Aqui estão alguns produtos comerciais de Lisp:
Também é importante notar que o Reddit foi inicialmente construído em Lisp, mas os autores posteriormente migraram para Python, citando a falta de bibliotecas bem utilizadas e documentadas. ( link )
fonte
Não posso falar com outros frameworks, mas tive muito boa sorte usando o Hunchentoot para um servidor web (ele funciona bem por conta própria, ou você pode colocá-lo atrás do Apache ). O que realmente o faz brilhar (isso provavelmente será um choque para alguns) são as bibliotecas!
O que eu realmente gosto em usar CL para a web é que você pode ajustar tudo enquanto está sendo executado. Você sempre tem um REPL instalado e executando o código do servidor, pode então conectar-se a esse REPL e alterar ou inspecionar como o código está funcionando, tudo sem precisar interromper nada. Eu redefini funções enquanto o site está em execução; da próxima vez que a função for chamada, ela simplesmente pegará o novo código e funcionará.
fonte
Para ajudar ainda mais a dissipar o mito de que não existem frameworks Lisp da web, aqui estão alguns que ainda não foram mencionados:
Obviamente, muitas pessoas parecem pensar que Lisp é bom o suficiente para escrever muitos frameworks web.
Eu não uso ou endosso nenhuma estrutura da web. Eu prefiro construir aplicativos da web combinando ferramentas ortogonais (David Lichteblau mencionou algumas boas) usando padrões de design de uma forma que seja realmente apropriada para o aplicativo que você está construindo, e essa é a abordagem que eu recomendo. O Common Lisp fornece uma riqueza dessas ferramentas e uma capacidade incomparável de combiná-las.
Adam Petersen publicou um excelente tutorial introdutório sobre como começar a construir aplicativos da web Lisp neste estilo no ano passado:
http://www.adampetersen.se/articles/lispweb.htm
fonte
Acho que se pode dizer sim sem muita confusão.
um dos primeiros servidores HTTP foi cl-http
O esquema que as pessoas ao redor do DrScheme gastaram uma quantidade notável de tempo nele:
www.franz.com é executado em seu próprio servidor da Web (AllegroServer) e webframework (ações da web)
Se você estiver em dúvida, verifique os pacotes lisp comuns da Edi Weitz. Eles geralmente funcionam.
Então, sim, pode-se fazer programação web "séria" com Common Lisp. De minha parte, estou indeciso em seguir alguma rota do Common Lisp ou Ruby on Rails. Eu prefiro ambos a qualquer coisa. NET ....
fonte
A Viaweb, empresa de Paul Graham, escreveu um produto em Common Lisp que posteriormente se tornou o Yahoo Shops. Aparentemente, o Yahoo posteriormente o reescreveu em C ++. Existem alguns recursos da web para programação Lisp.
fonte
Você pode encontrar algumas informações sobre ferramentas para aplicativos da web Lisp nesta questão .
Também pode valer a pena ouvir o Stack Overflow Podcast 27, onde os caras do Reddit falam um pouco sobre sua experiência de executar um site em Lisp (e sua mudança para Python).
fonte
As opiniões variam. O senso comum é: melhor usar uma linguagem diferente, ou melhor, uma pilha da web diferente, como LAMP, .NET, Ruby on Rails, Java. O conhecido projeto da web de sucesso em lisp foi a ViaWeb de Paul Graham . Reddit foi implementado inicialmente em lisp, mas depois mudou para python . Se você decidir usar lisp, tente o livro de Seibel: Practical Common Lisp .
fonte
Parece que muito do Orbitz foi ou está escrito em LISP .
fonte
Dê uma olhada em Allegro Common Lisp. Possui algumas bibliotecas, incluindo um servidor web, específico para desenvolvimento web.
fonte