Código Erlang bonito [fechado]

15

Estou tentando aprender mais sobre Erlang do que os projetos de brinquedos com os quais estou jogando. Para esse fim, estou lendo Programming Erlang e alguns arquivos da Armstrong on Software .

Também gostaria de ler sobre um exemplo de código (de preferência produção) que mostra o tipo de coisas que você pode criar com o Erlang que seriam desproporcionalmente difíceis em outros idiomas. Além de (eu suponho) Yaws , existem exemplos publicamente disponíveis do belo código Erlang que eu poderia ler para obter uma melhor compreensão do idioma e / ou ver os usos idiomáticos de várias construções de idioma?

Eu especificamente estou não olhando para o código que "começa o trabalho feito", mas usa práticas questionáveis, ou exemplos ao longo das linhas de "é aqui como você escreve factorialem Erlang".

Na mesma linha, alguém pode recomendar alguma boa literatura para aprender esse idioma (além do mencionado "Programming Erlang")? De preferência, algo que você mesmo aprendeu, mas se houver alguns livros padrão da comunidade para ele, jogue-os também.

Inaimathi
fonte
O Erlang foi criado por Ericcson para projetar e construir switches massivamente paralelos para o tráfego telefônico. Foi desenvolvido pela Ericsson para oferecer suporte a aplicativos distribuídos, tolerantes a falhas, em tempo real suave e sem interrupção. Esse é o domínio do problema em que se destaca. Para todos os outros domínios problemáticos ... Sua milhagem pode variar.
Robert Harvey

Respostas:

-4

Desde que você adicionou a tag programação-funcional, que tal escrever um compilador ou intérprete Erlang em Haskell? Erlang não é mais o estado da arte mais, como é. Eu recomendo aprender Erlang em um ou dois dias, como alguns outros idiomas (LISP, Prolog), e depois esquecê-los; eles são apenas um passo para desaprender linguagens imperativas de OOP.

Para tarefas menores do que implementar um compilador, consulte Project Euler .

[EDIT] Para responder ao comentário:

Do ponto de vista técnico: Erlang era bom nos velhos tempos, quando não havia processadores multicore. Mas agora - dados os compiladores / intérpretes existentes dos quais tenho conhecimento -, ele não aumenta mais como deveria. Um intérprete escrito em Haskell escalaria, compilado em Haskell tornaria mais rápido, mas removeria o recurso de substituição de código em tempo real.

Do ponto de vista dos programadores: Haskell não é a melhor opção para todas as tarefas aplicáveis, mas, atm, as linguagens provavelmente mais avançadas são muito experimentais e essas tarefas não aplicáveis ​​geralmente têm a ver com sistemas embarcados (como microcontroladores e GPUs) ou numbercrunching, onde C e Assembler ainda são a melhor escolha.

O que exatamente é algo que você poderia fazer com Erlang melhor do que em outros idiomas?

comonad
fonte
4
Não afirmei que estava aprendendo porque era o estado da arte; Eu apenas acho que parece interessante, e pode haver coisas que você pode construir com ela que você não pode facilmente com outras línguas. Se sua resposta for "Haskell é uma escolha melhor para todas as tarefas aplicáveis", que tal me dizer por que especificamente (em vez de apenas afirmá-la vagamente) e responder à pergunta inicial de Haskell em vez de Erlang?
Inaimathi 07/11
1
Eu não sei que esta resposta é que ruim, embora ele não saia direita em torno da pergunta original. Se você quiser ver um adorável Haskell no sentido em que a comanad está falando, consulte en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours É um tutorial que ensina o haskell, a biblioteca de análise de parsec e o esquema, escrevendo um analisador de esquema . Os combinadores de analisadores são, em minha opinião, uma das coisas mais bonitas para brincar nas linguagens funcionais. Eles também são um pouco práticos; Depois que você souber escrever parsers, poderá criar seus próprios idiomas para resolver problemas específicos.
CodexArcanum
1
"O que exatamente é algo que você poderia fazer com Erlang melhor do que em outros idiomas?" Eu não sei; é por isso que estou tentando aprender. Meu instinto me diz que uma linguagem cuja construção principal é o processo (em oposição ao fechamento como em CL, o lambda como em Scheme ou o dicionário como em python) teria algo interessante a oferecer. Haskell também é funcional e possui construções semelhantes de correspondência de padrões, mas não há um foco implacável na simultaneidade. De fato, a principal construção em Haskell parece ser do tipo, o que me faz pensar que são animais muito diferentes.
Inaimathi 08/11
2
@CodexArcanum - AFAIK, Erlang e OTP estão disponíveis sob um derivado da Licença Pública Mozilla e é gratuito como cerveja nos repositórios Debian. O que você quis dizer com "o sistema é proprietário"?
Inaimathi 8/11
1
@comonad - O que eu quis dizer com "Haskell é uma escolha melhor para todas as tarefas aplicáveis" foi "Para todas as tarefas que eu poderia concluir de forma aceitável com Erlang, a Haskell pode fazê-lo melhor". Eu não quis dizer que você poderia fazer todo o trabalho de programação com uma única linguagem ou que eu estava procurando usar apenas uma linguagem para todos os meus projetos. Você parecia estar perguntando "Por que usar Erlang quando você pode usar Haskell?", O que implica que você acha que Haskell é diretamente superior. Eu queria que você esclarecesse e talvez apoiasse essa afirmação.
Inaimathi