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?
fonte
Respostas:
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)
fonte
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.
fonte
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.
fonte