Índice
- Parte I – Introdução
- Parte II – Introdução (continuação)
- Parte III – Estrutura: Tipos de Dados
- Parte IV – Shell
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.
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.
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.
Ae rapah! Tá muito interessante este teu trabalho sobre Erlang, estou só esperando as próximas postagens. Parabéns pelo esforço.
[...] Parte II – Introdução (continuação) [...]
[...] Aprendendo Erlang – Parte II [...]
[...] Parte II – Introdução (continuação) [...]