Pergunta

Existe uma linguagem funcional que tem um bom suporte e ferramentas para a construção de serviços web? Eu estive olhando Scala (que compila para o JVM e pode usar as bibliotecas Java) e F # (que é .NET), mas estes são jovens e têm algumas ineficiências. O Scala, em particular, não suporta a eliminação tail-call, exceto em funções auto-recursiva, o que limita os tipos de composição que você pode fazer (esta é uma limitação fundamental do JVM). F # é muito novo e não parece ser totalmente suportado ainda, o que torna mais arriscado do que uma linguagem mais convencional.

É possível construir um serviço da web usando Haskell, ML, ou qualquer uma das outras linguagens funcionais mais tradicionais, ou seria melhor ir com Scala ou F #? Qualquer outra sugestão?

Foi útil?

Solução

Se o .NET é uma opção para a plataforma, não desconto F # por causa de sua juventude. À medida que se aproximar para se tornar um produto oficial, ele está ficando melhor e melhor integração com Visual Studio e herda todo o bem proporcionada pelo .NET.

Há também activa eo apoio acessível tanto pela Microsoft e uma comunidade entusiástica.

Outras dicas

Ocaml tem Ocsigen / Eliom ... Eu não posso dizer que eu usei-o, no entanto. Ele também está em sua fase inicial.

Erlang, com Bouba . É um divertimento, linguagem poderosa, escalas muito bem, e faz usando 100 ou 1000 processos seguro e fácil. E divertido.

(Eu também acho que é bastante.)

Haskell:

Dê uma olhada esta pergunta: Qual é a maneira mais simples de aplicativos Write Web em Haskell?

Basicamente, WASH , Happs e Janus são os três grandes em Haskell no momento. Meu voto é para Happs que tem o melhor tutorial no momento.

Há também HSP mas eu não olhei para ele ou pensei sobre isso recentemente.

Por favor, leia esta introdução sobre F # e ASP.NET que dará lhe um bom começo.

Existem vários exemplos na web em que F # é usado em aplicações web. Um deles é por exemplo o autocompleter de Tomas Petricek que ele construiu como uma aplicação ilustrativa de seu artigo "F # web Tools: aplicações Ajax feitas simples" . Eu usei F # como parte de um webservice mim também e eu garanto que ele funciona bem:).

Se você está fazendo isso para se divertir, e não para qualquer robustez ou local de trabalho, você poderia investigar ARC . É uma linguagem inacabada em andamento, com as vantagens e desvantagens que isso implica.

IMPORTANTE: não afiliado com ARC ou Paul Graham

Reddit foi construído em Lisp, não foi? E Paul Graham fala muito bem de sua agilidade, especialmente com webapps.

Você pode considerar Clojure - é um muito novo idioma, mas parece muito promissor para aplicações simultâneas escaláveis ??e tem a vantagem de muito boa integração JVM e acesso a todas as bibliotecas Java (assim como Scala)

.

Clojure também tem algumas características de design que recebem em torno da questão da cauda recursão (construção especial recorrem, muitas funções essenciais são implementados de forma iterativa etc.)

Embora eu não posso recomendá-lo, porque eu ainda estou jogando com ele, Erlang é muito poderoso.

Devo concordar com a recomendação para Clojure. Acabei de terminar um teste de carga de um href="http://www.dynamicalsoftware.com/software/architecture/oss/clojure" rel="nofollow"> serviço de alimentação que sustentou 80 saída mensagens de atividade por segundo por servidor web Clojure em execução em uma instância m1.medium EC2.

A geração anterior de linguagens funcionais têm ferramentas como Ocsigen (para OCaml) e Happs (para Haskell), mas eles não têm virtualmente nenhuma usuários: eles são software completamente testado

.

Em contraste, Scala e F # construir em cima código muito bem testado a partir de Java e .NET. Em particular, F # tem sido muito fortemente desenvolvido pela Microsoft no ano passado porque ele está sendo productized. Nenhuma outra linguagem funcional já recebeu esse nível de apoio e, consequentemente, F # já é muito útil (e muito à frente de linguagens como Haskell em termos de ferramentas de desenvolvimento).

scroll top