Como muitas vezes é dito por Andrew Hunt, autor do livro The Pragmatic Programmer: From Journeyman to Master (recomendo!) é muito bom para todo programador aprender pelo menos duas novas linguagens por ano. Já a algum tempo tenho flertado com Erlang, e uma das razões é todo o alvoroço na comunidade de desenvolvedores a volta de linguagens funcionais, e outra pelos meus interesses em desenvolvimento de código paralelo e concorrente.
E é justamente nestes pontos em que Erlang mostra a que veio, e é por este motivo todo o alvoroço. Erlang foi desenvolvido nos laboratórios da Ericsson para o desenvolvimento de centrais telefonicas, num ambiente com requisitos de tempo real mais leves e alta disponibilidade. O fato de ser uma linguagem funcional faz ter uma característica muito comum em muitas linguagens funcionais: a ausência de efeitos colaterais em suas funções, não existindo, com isso, a necessidade da existência de mecanismos de sincronização para áreas de memória compartilhada. Existem primitivas na linguagem que permitem o desenvolvimento de software paralelo e concorrente de forma muito mais simples do que no mundo procedural das principais linguagens como Java, Python ou C/C++, usando passagem de mensagens, implementando o modelo de atores (Actor Model). Quem já teve que implementar um programa concorrente usando múltiplas threads sabe que não é uma das tarefas mais triviais. Mas isso tudo é muito bem explicado em qualquer sítio na internet sobre Erlang, o que eu gostaria mesmo é de demonstrar um pouco de como é desenvolver programas usando esta linguagem.
Primeiro, instale uma versão de Erlang na sua plataforma preferida. Eu uso linux/Ubuntu, então meus exemplos vão ter a cara desta plataforma. Ao executar o comando erl na linha de comando, você verá algo como isto:
Erlang (BEAM) emulator version 5.5.5
[/source]
[async-threads:0] [kernel-poll:false]
Eshell V5.5.5 (abort with ^G)
1>
Agora digite o seguinte:
1> 2 + 5.
7
2>
Primeira coisa a perceber é que o shell do Erlang numera as linhas conforme você dá entrada. Todo comando em Erlang deve terminar com ponto "." e um enter. Todo comando devolve alguma coisa, e ao digitar 2 + 5 ele corretamente devolveu 7.
Para terminar com o shell do Erlang, basta um Control-C. Você verá a seguinte saída:
BREAK: (a)bort (c)ontinue (p)roc info (i)nfo (l)oaded
(v)ersion (k)ill (D)b-tables (d)istribution
Digite "a" para deixar o shell.
Outra forma de deixar o sistema, é digitando "halt()":
1> halt().
fbdo@Marvin:~$
Na próxima pílula de Erlang, vou falar um pouco sobre como compilar um programa nesta linguagem.

Olá
Estou aprendendo Erlang. Você leu o livro de Joe Armstrong?
Att.
Sim, li, achei um bom livro introdutório, mas senti muita dificuldade ao tentar fazer algum programa maior. Acho que só o livro não basta, precisa mesmo ler código de programas maiores e reais, para entender como o paradigma funcional funciona. Pelo menos pra mim, tão viciado já no paradigma procedural e orientado a objetos.