Porque decidiste" contra " usar o Erlang?

Você realmente" tentou " (significa programado em, não apenas ler um artigo sobre ele) Erlang e decidiu contra ele para um projeto? Em caso afirmativo, porquê? Além disso, se você optou por voltar para a sua língua antiga, ou para usar outra linguagem funcional como F#, Haskell, Clojure, Scala, ou outra coisa, então isso também conta, e diga por quê.

Author: Zubair, 2010-02-04

15 answers

Voltei a Haskell para os meus projectos pessoais de Erlang pela simples virtude do incrível sistema de tipo de Haskell. Erlang dá-lhe uma tonelada de ferramentas para lidar quando as coisas correm mal. Haskell dá-lhe ferramentas para evitar que corra mal.

Quando se trabalha numa linguagem com um sistema de tipo forte, está-se efectivamente a provar teoremas livres sobre o código sempre que se compila.

Também recebes um monte de açúcar sobrecarregado da Máquina de leitura do Haskell., mas isso é em grande parte secundário para mim -- mesmo que me permita expressar uma série de abstrações que seriam terrivelmente verbosas ou não-idiomáticas e inutilizáveis em Erlang (por exemplo, os extras de categoria de Haskell). Adoro o Erlang, adoro os seus canais e a sua escalabilidade sem esforço. Virei-me para ele quando estas são as coisas de que preciso. Haskell não é uma panaceia. Desisto de uma melhor compreensão operacional do consumo de espaço. Rendo - me ao coleccionador de lixo mágico one pass. Eu desisto de padrões de OTP e toda essa escalabilidade sem esforço. Mas é difícil para mim desistir do cobertor de segurança que, como se costuma dizer, em Haskell, se ele escreve, é provavelmente correto.
 49
Author: Edward Kmett, 2011-07-02 00:59:44

Usamos Haskell, OCaml e (agora) f# então para nós não tem nada a ver com a falta de sintaxe C-like. Preferimos saltar o Erlang Porque: [[2]}

    É dinamicamente digitado (somos fãs do sistema do tipo do Haskell)
  • não fornece um tipo de cadeia 'real' (entendo porquê, mas é irritante que isto ainda não tenha sido corrigido no nível da linguagem)
  • tende a ter maus (incompletos ou não mantidos) controladores de bases de dados
  • Não estão incluídas baterias e não parecem ter uma comunidade trabalhando para corrigir isso. Se o fizer, não é altamente visível. O Haskell, pelo menos, tem uma falha, e acho que é isso que nos leva a escolher essa linguagem em vez de qualquer outra. Em ambientes Windows f# está prestes a ter a vantagem final aqui.
Há provavelmente outras razões que não consigo pensar neste momento, mas estes são os pontos principais.
 26
Author: Shaun, 2010-02-04 17:34:42

A melhor razão para evitar o Erlang é quando não se pode comprometer com a forma funcional de programação.

[[1]eu li um blog anti-Erlang rant algumas semanas atrás, e uma das críticas do autor sobre Erlang é que ele não poderia descobrir como fazer uma função retornar um valor diferente cada vez que ele chamou com os mesmos argumentos. O que ele não tinha percebido é que o Erlang é assim de propósito. É assim que o Erlang consegue correr tão bem em múltiplos processadores sem ser explícito. Fecho. Programação puramente funcional é programação sem efeito colateral. Você pode torcer o braço de Erlang para trabalhar como nosso blogueiro ranking queria, adicionando efeitos colaterais, mas ao fazer isso você joga fora o valor que Erlang oferece.

Programação funcional pura não é a única maneira certa de programar. Nem tudo precisa ser matematicamente rigoroso. Se você determinar a sua aplicação seria melhor escrito em uma linguagem que utiliza mal o termo "função", melhor riscar Erlang da sua lista.

 25
Author: Warren Young, 2012-03-02 19:25:06
Já usei o Erlang em alguns projectos. Uso-o muitas vezes para serviços de repouso. Onde eu não usá-lo no entanto é para aplicações complexas front-end web onde ferramentas como Ruby on Rails são muito melhores. Mas para o powerbroker nos bastidores, não conheço melhor ferramenta do que o Erlang.

Também uso algumas aplicações escritas em Erlang. Uso o CouchDB e o RabbitMQ um pouco e instalei alguns servidores de Ejaculação. Estas aplicações são as ferramentas mais poderosas, mais fáceis e flexíveis em o campo deles.

Não querer usar o Erlang porque não usa o JVM é na minha mente uma tolice. JVM não é uma ferramenta mágica que é o melhor em fazer tudo no mundo. Na minha opinião, a capacidade de escolher entre um arsenal de ferramentas diferentes e não ficar preso numa única língua ou estrutura é o que separa especialistas de macacos de código.

PS: Depois de ler o meu comentário de volta no contexto, reparei que parecia que estava a chamar o oxbow_lakes de macaco de código. A sério.

 16
Author: Jon Gretar, 2010-02-04 13:27:28

Embora eu não tenha, outros na internet têm, por exemplo

Investigámos os méritos relativos do C++ e Erlang na implementação de raios acústicos paralelos algoritmo para a Marinha dos EUA. Encontrámos uma curva de aprendizagem muito menor e melhor ambiente de depuração para Erlang paralelo do que para programação C++ baseada em pthreads. Nossos A implementação C++ superou o Programa Erlang pelo menos 12x. Tentativas de usar o Erlang na célula IBM SER os microprocessadores foram frustrados por A pegada de memória do Erlang. (Fonte)
E algo mais próximo do meu coração, que me lembro de ler depois do concurso ICFP:
A codificação foi muito simples., traduzindo pseudocode em C++. I poderia ter usado Java ou C#, Mas eu estou em o ponto em que a programação em um alto nível em C++ é tão fácil, e eu queria manter a opção de a cair para um nível baixo a mexer-se um pouco, se for preciso. Erlang é a minha outra língua favorita. por hackear, mas estava preocupado. sobre correr para algum desempenho problema que não consegui resolver de mim mesmo. (Fonte)
 9
Author: Will, 2010-02-04 11:55:54
Para mim, o facto de o Erlang ser dinamicamente tipado é algo que me faz desconfiar. Embora eu Faça usar linguagens dinamicamente tipadas porque algumas delas são muito orientadas para problemas( tome Python, eu resolvo muitos problemas com ele), eu gostaria que elas fossem digitalmente tipadas em vez disso. Dito isto, tencionava dar uma oportunidade ao Erlang por algum tempo, e comecei a descarregar a fonte. Afinal, a tua" pergunta " conseguiu alguma coisa. ;-)
 7
Author: Konrad Rudolph, 2010-02-04 12:26:43
Conheço o Erlang desde a universidade, mas nunca o usei nos meus próprios projectos até agora. Principalmente porque eu estou desenvolvendo principalmente aplicações desktop, e Erlang não é uma boa linguagem para fazer GUIs agradável. Mas em breve vou implementar uma aplicação de servidor, e vou dar ao Erlang uma tentativa, porque é para isso que é bom. Mas preocupa-me que precise de mais bibliotecários, por isso talvez tente com Java.
 6
Author: Jonas, 2010-02-04 12:11:14

Várias razões:

  • Porque parece estranho de qualquer um usado para a família C de línguas

  • Porque eu queria ser capaz de correr na máquina virtual Java para aproveitar as ferramentas que eu conhecia e entendia (como JConsole) e os anos de esforço que foram para JIT e GC.

  • Porque eu não queria ter que reescrever todas as bibliotecas (Java) que eu construí ao longo dos anos.

  • Porque Não tenho ideia sobre o "ecossistema" Erlang (acesso à base de dados, configuração, construção, etc).

Basicamente, estou familiarizado com Java, sua plataforma e ecossistema e investi muito esforço na construção de coisas que funcionam na JVM. Foi muito mais fácil mudar-se para scala.
 6
Author: oxbow_lakes, 2010-02-04 12:57:10
Decidi não usar o Erlang para o meu projecto que ia ser executado com muitos dados partilhados num único sistema de múltiplos processadores e escolhi o Clojure becuase Clojure que realmente fica partilhado-memória-concorrência. Quando eu trabalhei em sistemas de armazenamento de dados distribuídos Erlang foi um grande ajuste porque Erlang realmente brilha em sistemas de transmissão de mensagens distribuídos. comparo o projecto com o melhor recurso da língua e escolho em conformidade
 6
Author: Arthur Ulfeldt, 2010-02-04 18:47:58

Usou - o para um gateway de mensagens para um protocolo binário proprietário, Multicamadas. Padrões OTP para servidores e relações entre serviços, bem como correspondência de padrões binários tornaram o processo de desenvolvimento muito fácil. Para tal caso, eu provavelmente favoreceria Erlang sobre outras línguas novamente.

 5
Author: yawn, 2010-02-04 12:23:58

O JVM não é uma ferramenta, é uma plataforma. Embora eu seja totalmente a favor de escolher a melhor ferramenta para o trabalho, a plataforma já está, na sua maioria, determinada. A menos que eu esteja desenvolvendo algo autônomo, do zero e sem o desejo de reutilizar qualquer código/biblioteca existente (três aspectos que já são improváveis em isolamento) eu posso ser livre para escolher a plataforma.

Uso várias ferramentas e linguagens, mas viso principalmente a plataforma JVM. Isso exclui Erlang para a maioria, se não todos os meus projectos, por mais interessantes que sejam alguns dos conceitos de TI.

Silvio

 4
Author: Silvio Bierman, 2010-02-04 13:53:07
Embora gostasse de muitos aspectos de design do tempo de execução Erlang e da plataforma OTP, achei que era uma linguagem de programa muito irritante para se desenvolver. As vírgulas e os períodos são totalmente coxos, e muitas vezes requerem reescrever o último caractere de muitas linhas de código apenas para mudar uma linha. Além disso, algumas operações que são simples em Ruby ou Clojure são tediosas em Erlang, por exemplo, manipulação de cordas. Para sistemas distribuídos baseados numa base de dados partilhada, o sistema Mnesia é realmente poderosa e provavelmente uma boa opção, mas eu programo em uma linguagem para aprender e se divertir, e o fator irritante de Erlang começou a superar o fator divertido uma vez que eu tinha passado os tutoriais básicos da conta bancária e começou a escrever plugins para um servidor XMPP.
 4
Author: rosejn, 2010-02-09 14:56:47
Adoro o Erlang do ponto de vista da concorrência. Erlang realmente fez a concorrência certa. Eu não acabei usando erlang principalmente por causa da sintaxe. Não sou um programador funcional. Eu geralmente uso C++, então eu estou cobiçado minha capacidade de mudar entre estilos (OOP, imperativo, meta, etc). Parecia que o Erlang me obrigava a adorar a vaca sagrada de dados imutáveis. Adoro a sua abordagem à concorrência, simples, bonita, escalável, poderosa. Mas o tempo todo Estava a programar em Erlang e pensava, meu, preferia um subconjunto de Java que excluísse a partilha de dados entre a thread e o modelo erlangs usado. I though Java would have the best bet of restricting the language the feature set compatible with Erlang's processes and channels.

Recentemente descobri que a linguagem D de programação oferece o estilo Erlang concurrencia com a sintaxe familiar do estilo c e linguagem multi-paradigmática. Não tentei nada. massivamente concorrente com D ainda, então eu não posso dizer se é uma tradução perfeita.

Tão profissionalmente eu uso C++ Mas faço o meu melhor para modelar aplicações massivamente concorrentes como faria em Erlang. A dada altura, gostaria de dar às ferramentas de concorrência do D um verdadeiro test drive.

 3
Author: deft_code, 2010-10-25 01:03:37
Nem sequer vou olhar para o Erlang. Dois posts no blog pregaram para mim:
  1. A máquina Erlang percorre toda a lista para descobrir se tem uma mensagem a processar, e a única maneira de obter a mensagem significa percorrer toda a lista (suspeito que filtrar mensagens por pid também envolve percorrer toda a lista de mensagens) {[[2]}

    Http://www.lshift.net/blog/2010/02/28/memory-matters-even-in-erlang

  2. Não há milagres., de fato, Erlang não fornece muitos serviços para lidar com o inevitável sobrecargas - e.g. ainda é de esquerda para o programador da aplicação para lidar verificar o espaço disponível na fila de mensagem (supostamente por andar a fila para descobrir o tamanho atual e eu suponha que não há mecanismos internos para garantir a equidade entre remetentes).

    Erlang - como limitar a fila de mensagens ou emulá-la?

Ambos (1) e (2) são muito abaixo ingênuos na minha livro, e eu tenho certeza que há mais "pedras" de software de natureza semelhante sentado dentro de máquinas Erlang.

Então, não há Erlang para mim.

Parece que uma vez que você tem que lidar com um grande sistema que requer alto desempenho sob sobrecarga C++ + impulso ainda é o único jogo na cidade.

Vou olhar para o D A seguir.

 2
Author: zzz777, 2017-05-23 11:53:07

Eu queria usar o Erlang para um projecto, por causa da sua incrível escalabilidade com o número de CPU's. (usamos outras línguas e, ocasionalmente, batemos na parede, deixando-nos com a necessidade de ajustar a aplicação)

O problema era que nós devemos entregar nossa aplicação em várias plataformas: Linux, Solaris e AIX, e infelizmente não há instalação Erlang Para AIX no momento.

Ser uma pequena operação impede o esforço de portagem e manutenção de uma versão AIX de Erlang, e pedir aos nossos clientes para usar o Linux em parte da nossa aplicação é um não ir. Ainda espero que chegue um AIX Erlang para podermos usá-lo.
 2
Author: Roger, 2012-03-05 06:41:15