Índice

Segunda parte do aprendizado em conjunto sobre a linguagem de programação funcional Erlang. Caso não tenha visto a primeira parte, você pode conferir através deste link.

Na postagem anterior fiz uma abordagem bem introdutória, os tópicos foram: O que é Erlang?, Por que Erlang?, O que é uma linguagem funcional? e Programação Distribuída e Orientação a Concorrência.

Se você leu a primeira postagem e esta lendo essa, há duas possibilidades: ou você gosta muito de programação, ou gostou do material. Espero sinceramente que sejam as duas! :)

Àqueles que estão sendo obrigados a aprender Erlang (faculdade por exemplo), ou simplesmente “cairam de paraquedas” por aqui, sejam bem-vindos também. E não se esqueçam de olhar a primeira parte.

Continuação… Capítulo I

Bom, antes de mais nada, gostaria de explicar que devido aos “insights” (entenda-se: percepção, estalo) que tenho durante o meu estudo, a ordem de cada postagem pode mudar.

Na postagem anterior, eu tinha dito que escreveria sobre a estrutura e os tipos de dados da Erlang. Porém encontrei algumas coisas muito interessantes, e resolvi apresentar à vocês também, antes mesmo de começar a prática. Vamos lá.

III. De onde vem o nome Erlang?

Agner Krarup Erlang foi um matemático dinamarquês e a primeira pessoa a estudar o problema de redes de telêfonia.

Estudando a troca de ligações de um pequeno vilarejo ele criou uma fórmula, agora conhecida como a fórmula de Erlang, para calcular a fração de ligações que tentavam chamar alguém fora do vilarejo e que tinham que esperar porque todas as linhas estavam em uso.

Fonte: Wikipédia

Como é de costume dar nome de matemáticos à linguagens de programação (como Pascal, Euclid e Occam) o nome Erlang se encaixou perfeitamente no perfil da linguagem.

IV. Onde, como e pra quê a Erlang é utilizada?

Ericsson

A Ericsson usa Erlang em seus equipamentos de telecomunicação, ambientes onde são realizadas muitas operações concorrentes, e que não pode ocorrer nenhuma parada no sistema durante anos.

Antes de desenvolver a Erlang, os pesquisadores da Ericsson fizeram vários experimentos, com diversas linguagens. Segue abaixo um trecho que fala sobre os experimentos e demonstra que a Ericsson, antes de desenvolver o Erlang, tentou adicionar as suas necessidades à linguagem Prolog, mas sem sucesso. Eis o por quê Erlang lembra um pouco de Prolog.

The language experiments had given many “insights”, but had not reached a conclusion that one specific language was “the best”.Of all the languages tried only Prolog could handle updating of software in running systems.

Fonte: www.erlang.se/publications/bjarnelic.ps

CouchDB

Outro projeto interessante é o CouchDB, que é um banco de dados não relacional, orientado a documentos, acessível via REST e que usa JSON. Sim, isso é inovador!

E porque ele usa Erlang? É simples. Todos os softwares nessa área tem em mente performance e escalabilidade, o que Erlang oferece de sobra. E em uma das palestras recentes, Damien Katz, o criador do CouchDB fala um pouco sobre isso: http://www.infoq.com/presentations/katz-couchdb-and-me

Disco Project

O Disco Project, é um framework para o algoritmo Map-Reduce criado pelo Google. Li um pouco sobre isso, e pelo que entendi, o algoritmo Map-Reduce trabalha da seguinte forma:

O Map trabalha coletando arquivos para o Reduce trabalhar, enquanto isso o Reduce trabalha lendo os arquivos e procurando por um determinado texto. A hora que o Reduce termina de ler um arquivo, ele pede outro arquivo para o Map, e assim vai…

Basicamente é isso, não vou entrar em detalhes pois não é o foco do texto.

E porque eles utilizam Erlang? É óbvio, pois o Map e o Reduce trabalham juntos, de forma paralela. Isso faz com que a velocidade na busca seja extrema. Acredito até que possam haver centenas de Reduce’s rodando ao mesmo tempo, dependendo da necessidade.

Facebook

Erlang também é utilizada em grandes projetos web, como por exemplo o Facebook. Ele utiliza Erlang em seu chat, que eu desconheço, mas o motivo é muito óbvio: o suporte a concorrência e comunicação entre os processos que Erlang oferece, isso é ótimo para chats!

ejabberd e Meebo

Falando em chat, outro projeto de grande sucesso desenvolvido em Erlang é o ejabberd, que se não me engano é utilizado pelo Meebo.

V. CEAN (Comprehensive Erlang Archive) – “O CPAN da Erlang”.

Existe um projeto de repositório para pacotes Erlang chamado CEAN. Assim como o CPAN (do Perl) nele é possível encontrar pacotes contendo módulos prontos para que você possa utilizar em seus projetos, e estão todos separados em categorias.

Portanto, se você estiver precisando de algo, pode pesquisar por lá primeiro, e caso desenvolva algo que não há, é legal que se contribua, assim fortalecendo a base de pacotes disponíveis à todos. :)

VI. Posso usar Erlang em meus pequenos projetos?

Resposta rápida: Yes we can!

Você não precisa ser dono ou funcionário de uma grande empresa de telecomunicação, ou de um serviço de micro-blogging muito utilizado, para pode usar Erlang. É claro que o propósito de Erlang é escalabilidade, portanto, se você tiver um projeto que em mente poderá ser muito utilizado, é melhor prevenir do que remediar. A escalabilidade é possivel em linguagens imperativas como Python, Ruby e outras, porém o seu preço é muito mais alto em relação à Erlang.

Mas mesmo assim você pode usar Erlang em qualquer projeto, pois é uma linguagem simples e intuitiva. É claro que quem não esta acostumado com programação funcional terá que acostumar.

Conclusão

Espero que tenham gostado do material e obrigado pela paciência. Prometo que na próxima parte vamos ver a linguagem em si! :)

Este documento esta sob licença GFDL – GNU Free Documentation License. Saiba mais.