Venho dedicando tempo ao aprendizado da programação funcional e cheguei à parte em que quero começar a escrever um projeto, em vez de apenas me dedicar a tutoriais / exemplos.
Ao fazer minha pesquisa, descobri que Erlang parece ser bastante poderoso quando se trata de escrever software simultâneo (que é o meu objetivo), mas os recursos e ferramentas de desenvolvimento não são tão maduros quanto os produtos de desenvolvimento da Microsoft.
O F # pode ser executado no Linux (Mono) para que o requisito seja atendido, mas, enquanto procurava na Internet, não encontro comparações de F # vs Erlang. No momento, estou inclinado a Erlang apenas porque parece ter o maior número de publicações, mas estou curioso para saber se há realmente alguma diferença de desempenho entre os dois sistemas.
Como estou acostumado a desenvolver no .NET, provavelmente consigo acelerar o F # muito mais rápido que o Erlang, mas não consigo encontrar nenhum recurso para me convencer de que o F # é tão escalável quanto o Erlang.
Estou mais interessado em simulação, que disparará muitas mensagens processadas rapidamente para nós persistentes.
Se não fiz um bom trabalho com o que estou tentando perguntar, peça mais verificação.
Respostas:
O que você quer dizer com "viável"? "Ter o máximo de imprensa" não é necessariamente a melhor maneira de escolher um idioma.
A reivindicação de Erlang à fama é sua capacidade de paralelização maciça. É por isso que é comumente usado nos comutadores de telefone da Ericsson. O Erlang é em tempo real suave, para que você possa garantir certas garantias de desempenho.
O F # se beneficia dos recursos de otimização do .NET Jitter. Além disso, a própria linguagem foi projetada para ser uma linguagem funcional de alto desempenho (sendo uma variante do OCaml, amplamente usada no setor financeiro devido à sua velocidade).
Por fim, a menos que você planeje executar milhões de agentes minúsculos ao mesmo tempo (que é para isso que Erlang é otimizado), o F # deve estar à altura da tarefa.
Esta página explica os casos de uso apropriados para Erlang.
fonte
Poucas declarações objetivas podem ser feitas sobre esse assunto, porque o desempenho dessas duas linguagens depende fortemente do estilo de aplicação e programação.
O único conselho que posso dar é que o F # tem a vantagem de desempenho de um sistema de tipo estático e o CLR faz um bom trabalho ao aproveitar isso para melhorar o desempenho. O F # possui agentes assíncronos e passagem de mensagens, mas não foi otimizado e o código síncrono geralmente é 10 vezes mais rápido.
O Erlang é digitado dinamicamente, o que coloca em desvantagem significativa em termos de desempenho (espera-se muito mais boxe), mas foi construído desde o início para oferecer suporte à passagem rápida de mensagens entre agentes assíncronos, de modo que pode ser muito mais rápido que o equivalente F # . No entanto, não tenho resultados de referência para apoiar isso: é apenas a minha expectativa.
Além disso, tanto o Erlang quanto o F # são idiomas relativamente periféricos em pequenas comunidades e, devido aos seus diferentes mercados-alvo, pessoas familiarizadas com ambos são raras. A única pessoa em que consigo pensar que quase se qualifica é Jesper Louis Andersen, mas não sei ao certo quanto F # ele fez.
fonte
Você deve ler este post de Joe Armstrong: http://erlang.org/pipermail/erlang-questions/2012-February/064277.html
O resumo é que Erlang não foi projetado para ser rápido! É razoavelmente rápido em muitos casos, mas isso é secundário a problemas como tolerância a falhas e estabilidade.
A verdade é que Erlang e F # são linguagens agradáveis, e enquanto eu apenas dei uma olhada rápida no F #, escrevi um livro sobre Erlang: Criando aplicativos da Web com Erlang e posso dizer que é uma linguagem divertida para se trabalhar.
Eu também apontaria que parece haver um boom nos livros de idiomas funcionais a serem publicados nos próximos 6-9 meses. Conheço pelo menos quatro em Erlang (incluindo o meu), um em Haskell e títulos em OCaml, Clojure e F #.
fonte