O que é Erlang?
Erlang é uma linguagem de programação funcional, com aspectos da programação concorrente e lógica.
Apresenta algumas características como a construção de alto nível, sendo considerada também como uma linguagem declarativa por tentar descrever o que deve ser calculado em vez de dizer como o valor é calculado, os processos são criados e executados de forma concorrente, sendo que não são criadas threads de sistema operacional.
Dessa forma, cada processo é executado em seu próprio espaço de memória, não havendo compartilhamento de memória, portanto, não interferindo com os outros processos e não existindo condições de corrida.
Funcionalidade:
Erlang cria, escalona e gerencia os processos independente do sistema operacional e esse procedimento permite que os processos sejam criados de forma extremamente rápida.
A comunicação entre processos ocorre por troca de mensagens, com qualquer tipo de dado sendo passado dessa forma. Cada processo possui uma caixa de mensagens que armazena as mensagens recebidas.
Da mesma forma que a criação de processos, a troca de mensagens acontece de forma muito rápida e o conjunto destes tem o tempo de execução bastante reduzido comparado a linguagens que utilizam memória compartilhada, semáforos e threads.
Erlang permite a atualização do código fonte com o sistema em execução. Para isso, o sistema mantém uma tabela com o endereço de todos os módulos carregados.
Os novos processos são criados com uma versão atualizada dos módulos enquanto os processos em execução utilizam os módulos antigos até terminarem de executar.
Isso possibilita a realização de correções e melhorias sem que o sistema precise ser interrompido.
Erlang possui um ambiente distribuído, ou seja, diferentes instâncias das aplicações podem ser executadas em diferentes máquinas, comunicando-se pela troca de mensagens.
Outra característica bastante relevante é a tolerância a falhas. Os processos criados são monitorados por um processo supervisor que recebe mensagens sobre o estado de cada um.
Caso uma mensagem informe que algum processo falhou, o processo supervisor pode reiniciar o processo com falha para que este possa executar novamente de forma a concluir com êxito seu objetivo.
Erlang foi desenvolvida no laboratório de computação da Ericsson, uma grande empresa do ramo de telecomunicações, por uma equipe de três desenvolvedores, sendo eles Joe Armstrong, Robert Virding e Mike Williams.
Surgiu da necessidade de construção da próxima geração de telecomunicações nos anos 90, sendo que o sistema precisaria ser escalável, tolerante a falhas, previsível e sustentável.
Nenhuma das linguagens de programação existentes na época forneciam todos os recursos necessários para isso.
Nesse contexto que Erlang surge. Sua primeira versão foi lançada em 1986. Em 1998, juntamente com o Framework OTP (Open Telecom Platform) que fornece um conjunto de estruturas, princípios e padrões que dão suporte à estrutura, design e implementação de sistemas para Erlang, esta tornou-se open source, ou seja, de código aberto.
Com o advento da internet e a evolução das tecnologias, Erlang passou por um processo de transição e adaptação para atender não apenas sistemas de telecomunicações, mas qualquer sistema em que ocorra troca de mensagens e que seja necessário escalabilidade, confiabilidade e consistências dos dados.
Desenvolvimento:
Para o desenvolvimento de aplicações em Erlang, é necessário um ambiente próprio para isso. Este pode ser encontrado no próprio site do Erlang e feito o download de forma gratuita.
Essa linguagem de programação possui definição dinâmica de tipos e semântica funcional. Quando um valor é atribuído a uma variável, este não se altera mais. Isso faz com que as aplicações sejam tolerantes a falha.
Tipos de dados:
Os principais tipos de dados em Erlang são:
Inteiros: que podem ser positivos ou negativos e serem representados em bases diferentes de 10.
Floats: são utilizados para representar números com ponto flutuante.
Átomos: são constantes literais utilizadas para indicar valores distintos.
Binários: são sequências de 8 bits. Podem ser utilizados como entrada e saída de dados.
Pid: é identificação de um processo.
Portas: permitem a comunicação entre processos. Estes podem ser de outras linguagens de programação.
Funs: são funções anônimas que podem receber várias funções como parâmetro e retornar uma única função como resultado.
Tuplas: são um conjunto fixo de tipos de dados.
Listas: são um conjunto variável de tipos de dados.
Exemplo de "Hello, World!" em Erlang:
-module(hello). -export([hello_world/0]). hello_world() -> io:format("Hello, World!\n").
Comentários
Postar um comentário
Obrigado pelo seu feedback!