É viável fazer um desenvolvimento web (sério) em Lisp? [fechadas]

100

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?

Leonardo
fonte
2
Depende do que você entende por "prático". Possível, sim. Prático, provavelmente não para a maioria. Você planeja ter seu site hospedado? Você vai operar sua própria máquina dedicada, onde terá controle de raiz? Quanto esforço você está disposto a colocar nisso?
núcleo de
Leonardo, estou montando um livro sobre esse assunto agora, e gostaria de receber feedback de desenvolvedores web interessados ​​em Lisp. Se quiser, pode me dizer como surgiu a ideia de usar o Lisp e o que gostaria de ver nesse livro? [email protected]
vsedach
@chris - Eu recentemente configurei a hospedagem Scheme para alguns de meus projetos paralelos; foi mais fácil do que pensei que seria - gcbhacks.dreamhosters.com/scheme-web-apps
gcbenison
2
Vá ler os ensaios de Paul Graham. Duvido que ele tenha perdido alguma coisa em uma discussão sobre o uso de LISP para aplicativos da web, além disso, ele é um grande escritor. paulgraham.com/avg.html sua página inicial é: paulgraham.com/index.html
Kelly S. French
Companheiros googlers: há mais respostas atualizadas na incrível lista de CL .
Ehvince

Respostas:

82

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 :-)

David Lichteblau
fonte
1
e isso é apenas para ceceio comum e apenas um conjunto de ferramentas ...
Attila Lendvai
1
@MattBall woof. yap. uivo.
não sincronizado de
Na internet, ninguém consegue ouvir o seu grito de servidor ceceio.
kd4ttc
31

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:

(defview signup (:type form :caption "Sign up")
  (username :satisfies #'valid-username)
  (password :present-as dual-password :parse-as dual-password)
  (receive-newsletter-p :present-as checkbox :parse-as predicate))

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.

Leslie P. Polzer
fonte
19

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 )

d4nt
fonte
Ele disse que as bibliotecas eram o "maior problema", mas logo antes disso ele disse que "o reddit não rodava no meu Mac"; na época, havia apenas um CL encadeado para Mac, que não podia executar seu código de soquete de baixo nível. Isso soa pelo menos como um problema.
Ken
3
Sou um grande fã do Lisp, está substituindo o Python para mim. Mas eu trabalho em C ++. Posso encontrar outros programadores Python que entenderão protótipos Python, mas até o presente revival do Lisp ter mais sucesso, não posso usá-lo no trabalho sem perguntas intermináveis ​​"por que você não usou Python ou Ruby?"
Aaron
11

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!

  • Use CL-WHO para escrever HTML sem esforço em uma sintaxe de estilo lisp
  • Parenscript permite que você escreva código que compila para javascript
  • Para conectividade de banco de dados, use Postmodern para falar com PostgreSQL

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á.

Chris
fonte
Você está ciente de algo que tornará o LISP compatível com o MongoDB?
MadPhysicist
9

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

vsedach
fonte
8

Acho que se pode dizer sim sem muita confusão.

  1. um dos primeiros servidores HTTP foi cl-http

  2. O esquema que as pessoas ao redor do DrScheme gastaram uma quantidade notável de tempo nele:

  3. www.franz.com é executado em seu próprio servidor da Web (AllegroServer) e webframework (ações da web)

  4. 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 ....

Friedrich
fonte
4

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.

ConcernedOfTunbridgeWells
fonte
1
Se isso for verdade sobre o Yahoo, alguns podem ver isso como uma falha do CL como uma linguagem da web. Mas eu veria isso como um sucesso de CL como uma linguagem de prototipagem da web.
gcbenison
3
Eu dificilmente consideraria a reescrita um fracasso, como Paul Graham disse nas notas sobre Beating the Averages: "Em janeiro de 2003, o Yahoo lançou uma nova versão do editor escrito em C ++ e Perl. É difícil dizer se o programa não é mais escrito em Lisp, porém, porque para traduzir este programa em C ++ eles literalmente tiveram que escrever um interpretador Lisp: os arquivos de origem de todos os modelos de geração de página ainda são, pelo que eu sei, código Lisp. "
protista de
viaweb não foi prototipado em lisp comum para reescrever em outra linguagem, c ++. foi planejado pelos produtores para ser escrito e executado em lisp devido a várias razões óbvias declaradas por ele, poder de linguagem, rápido, sim prototipagem e produção rápida, ele sabia ceceio muito bem etc. eles executam com a versão que eles escrevi em lisp, partes dele estavam em lisp, na verdade. depois de ahooacquired, eles reescreveram de acordo com rumores, eu não tenho certeza. é a escolha do adquirente, você poderia até mesmo wirte em vbasic, ou pascal fortran.
sçuçu 08/02/2014
2

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).

Dave Webb
fonte
2

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 .

Yuval F
fonte
1
Alguma chance de você adicionar um pouco mais de FUD à sua postagem?
jrockway
@Yuval está certo. Essa é a sabedoria comum. Reddit mudou. Acho que o post está perguntando se há alguma verdade por trás dessa sabedoria comum.
Steve Rowe
1
@jrockway e Steve Rowe - A sabedoria comum existe por uma razão. Eu não acho que isso seja FUD. Não ouvi falar de um site de sucesso escrito em LISP desde a ViaWeb. Por favor, corrija-me se eu estiver errado. Eu acredito que a linguagem de programação deve ser usada de acordo com seus méritos, ao invés de ideologia.
Yuval F
0

Dê uma olhada em Allegro Common Lisp. Possui algumas bibliotecas, incluindo um servidor web, específico para desenvolvimento web.


fonte