Haskell vs Erlang para serviços web


30

Estou procurando iniciar um projeto experimental usando uma linguagem funcional e estou tentando decidir entre Erlang e Haskell, e ambos têm alguns pontos que realmente gosto.

Eu gosto do forte sistema e pureza de Haskell. Tenho a sensação de que será mais fácil escrever código realmente confiável. E acho que o poder de Haskell facilitará muito o que quero fazer.

No lado negativo, tenho a sensação de que alguns dos Frameworks para fazer coisas na Web em Haskell, como Yesod, não são tão avançados quanto suas contrapartes Erlang.

Eu gosto bastante da abordagem Erlang para threads e tolerância a falhas. Tenho a sensação de que a escalabilidade do Erlang pode ser uma grande vantagem.

O que leva à minha pergunta: qual tem sido a experiência das pessoas na implementação de back-ends de aplicativos da Web em Haskell e Erlang. Existem pacotes para o Haskell fornecer alguns dos tópicos e atores leves que se tem em Erlang?


4
Se você não especificar requisitos, é impossível saber. Basta jogar uma moeda ou algo assim.
Vitor Py

11
Não tenho provas dessa conclusão, mas o uso do Erlang no Facebook indica para mim que ele é poderoso e confiável.
Matthew Leia

11
@ Matthew: O Facebook usa o Erlang para o seu sistema de bate-papo, presumivelmente por suas qualidades massivamente paralelas.
Robert Harvey

3
Yessss, use Lisssssssp .
C #

8
Em uma antiga revista Commodore 64, eles tinham um artigo sobre idiomas falsos. O melhor foi "Lithp", que era exatamente como lisp, exceto que o caracter 's' foi excluído. Isso forçou todos os desenvolvedores 'lithp' a substituir um 'th' pelo 's'. :)
Berin Loritsch 15/03

Respostas:


17

A única pergunta que tenho é o que o seu serviço da web está fazendo? Se o serviço da Web for realmente um problema funcional, o Haskell será mais adequado.

Erlang não é necessariamente uma linguagem funcional. É uma linguagem processual com um modelo de execução muito forte para sistemas massivamente paralelos. Ele foi projetado para o setor de telecomunicações e, definitivamente, seria um excelente ajuste para responder a solicitações de serviços da Web.

Consulte esta página * para obter uma visão geral das diferenças entre programação procedural e funcional. (Desculpas antecipadas pelo preto feio na página ciana).

Se o seu serviço da Web estiver realizando uma boa quantidade de correspondência de padrões e aplicação de regras, o Haskel é sua escolha. Se você deseja apenas uma infraestrutura escalável que não seja muito diferente dos idiomas que você provavelmente já conhece, escolha Erlang.

(* link via máquina Wayback. O arquivo original foi removido)


Vai ser algo que se parece muito com uma rede social. Neste ponto, há uma chance de 90% de ser feito em haskell.
Zachary K

12
Erlang é uma linguagem funcional, não uma linguagem processual. Ele oferece excelente suporte à correspondência de padrões e é a correspondência única de padrões por bit, o que é muito útil ao realizar serviços de rede.
Jonas4

@ Berin como sempre é o problema com links externos, agora está morto.
thecoshman

@thecoshman, Minhas desculpas ... Depois de três anos, não consigo nem lembrar o conteúdo do que costumava estar na página.
Berin Loritsch 23/03

Não se preocupe: D ¬_¬ nunca mais deixa isso acontecer novamente. (antes que as pessoas surtar, eu estou brincando)
thecoshman

11

Entre os dois que você mencionou, definitivamente Haskell é acadêmico, enquanto Erlang é usado em projetos de alta escalabilidade da vida real. Então, dos dois serviços web, eu escolheria Erlang.

Mas eu diria que você tem uma terceira opção: Scala , uma linguagem fortemente influenciada por Haskell e Erlang. É usado para criar serviços da web de alto nível, como o Twitter ou o Foursquare. Existe ainda o Lift , um framework web inspirado no Rails e Django, embora com uma abordagem um pouco diferente e mais funcional. O Quadrangular está usando o Elevador.


2
Concorde com sua resposta, exceto a última frase. O elevador é muito diferente do Rails. Os trilhos são modulares, o elevador é monolítico. O Rails é uma estrutura MVC, o Lift não. O Rails é orientado a objetos, o Lift é mais funcional.
dbyrne

@dbyrne: ok, editado
vartec

3
O problema com o Scala para serviços da Web é que os servidores de aplicativos Java mais populares são muito ruins em comparação aos servidores escritos em Erlang e Haskell.
Jonas4

11
@Jonas: existe, por exemplo, vert.x vertx.io
vartec

A elevação não é mais a estrutura de fato para o Scala. Agora é o Play , que é totalmente MVC e sem estado. Eu concordo com a resposta. Scala é uma escolha melhor para o mundo real. Mais fácil obter desenvolvedores Scala do que Erlang e Haskell.
Jus12

7

Normalmente eu digo: "aprenda as coisas o mais longe possível da sua zona de conforto, ele fará de você um programador melhor, mesmo que você nunca o use na prática".

Nesse caso, isso provavelmente poderia significar Haskell; mas Erlang não está apenas se tornando quase socialmente aceitável; mas os pontos principais (processos leves, transmissão de mensagens, enorme escalabilidade) estão surgindo em muitas outras plataformas 'práticas'; portanto, as lições aprendidas têm grande e imediata aplicabilidade em trabalhos mais 'reais'.

meu conselho: se é por diversão, faça Haskell. se for para treinamento, vá Erlang.


é para um projeto de tipo de trabalho. Eu estou pensando que provavelmente será Erlang, mas eu posso fazer haskell.
Zachary K
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.