English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Introdução ao Erlang

Erlang é uma linguagem de programação funcional que também possui um ambiente de execução. Sua construção o torna suportado integrado para funções de concorrência, distribuição e tolerância a falhas. O Erlang foi originalmente desenvolvido para ser usado em vários grandes sistemas de telecomunicações da Ericsson.

A primeira versão do Erlang foi lançada por Joe Armstrong, Robert Virding e Mike Williams no ano.1986Foi desenvolvido no ano. Ele inicialmente era uma linguagem proprietária interna da Ericsson. Ele foi随后于1998Foi lançado como uma linguagem de código aberto no ano. O Erlang e o OTP (conjunto de middleware e bibliotecas no Erlang) são agora suportados e mantidos pela equipe de produtos OTP da Ericsson e são amplamente conhecidos comoErlang/OTP.

Por que escolher Erlang?

Se você tiver os seguintes requisitos, deve usar Erlang para desenvolver aplicativos-

  • O aplicativo precisa lidar com uma grande quantidade de atividades concorrentes.

  • Ele deve ser distribuído facilmente na rede de computadores.

  • Deve haver uma ferramenta que faça o aplicativo tolerante a falhas de software e hardware.

  • O aplicativo deve ser escalável. Isso significa que ele deve ser capaz de跨越多个服务器, praticamente sem alterações.

  • Ele deve ser fácil de atualizar e reconfigurar, sem a necessidade de parar e reiniciar o aplicativo em si.

  • O aplicativo deve responder aos usuários dentro de um tempo estritamente determinado.

O site oficial do Erlang éhttps://www.erlang.org/.

Introdução

Erlang é uma linguagem de programação orientada a concorrência genérica, desenvolvida pela CS da Ericsson, um fabricante de equipamentos de telecomunicações sueco.-Desenvolvimento de Laboratório, o objetivo é criar um linguagem de programação e ambiente de execução que possa lidar com atividades concorrentes em larga escala.1987Após dez anos de desenvolvimento,1998Foi lançada a versão open source. O Erlang é um idioma interpretativo executado em uma máquina virtual, mas agora também inclui um compilador de código nativo desenvolvido pelo projeto de alta performance Erlang da Universidade de Uppsala (HiPE), desde a versão R11B-4A partir da versão, o Erlang também começou a suportar interpretadores de scripts. Em termos de paradigmas de programação, o Erlang é um idioma de programação multifacetado, cobrindo funcional, concorrente e distribuído. O Erlang de execução sequencial é um idioma de programação funcional de avaliação prévia, atribuição única e dinâmico.

O Erlang é um idioma de programação estruturado, dinâmico e de tipo, com suporte integrado para cálculo paralelo. Originalmente, foi projetado especificamente pela Ericsson para aplicações de comunicação, como controladores de troca ou transformação de protocolos, então é muito adequado para construir sistemas de software distribuídos e em tempo real, com suporte a cálculo paralelo. As aplicações escritas em Erlang geralmente consistem em milhares de processos leves, que comunicam-se por meio de mensagens. A troca de contexto entre processos para o Erlang é apenas uma questão de um ou dois passos, muito mais eficiente do que a troca de threads em programas C.

É muito mais fácil usar Erlang para escrever aplicações distribuídas, porque seu mecanismo de distribuição é transparente: para o programa, não se sabe que está executando em um ambiente distribuído. O ambiente de tempo de execução do Erlang é uma máquina virtual, semelhante à máquina virtual do Java, então, uma vez compilado, o código pode ser executado em qualquer lugar. Seu sistema de tempo de execução até permite que o código seja atualizado sem interrupção. Além disso, se precisar de maior eficiência, o código bytecode também pode ser compilado para código nativo para execução.

História de desenvolvimento

O nome Erlang é inspirado no matemático e estatístico dinamarquês Agner Krarup Erlang, e também pode representar Ericsson Language.

O Erlang não é um novo idioma, ele surgiu1987Ano, mas naquela época, a necessidade de concorrência e distribuição não era tão comum quanto hoje, e então, os heróis não tinham onde usar suas habilidades. O fundador do idioma Erlang, Joe Armstrong, estava trabalhando em desenvolvimento de redes telefônicas na Ericsson naquela época, usando Smalltalk. Infelizmente, naquela época, o Smalltalk era muito lento e não conseguia atender aos requisitos de alta performance das redes telefônicas. Mas Joe realmente gostava do Smalltalk e encomendou uma máquina Tektronix Smalltalk. Mas a máquina levou dois meses para chegar, e enquanto Joe esperava, ficou entediado e começou a usar Prolog. Quando a Tektronix finalmente chegou, ele já estava mais interessado no Prolog. Joe não se contentou em ser apenas um especialista em Prolog e, após um período de experimentação, adicionou processamento concorrente e recuperação de erros ao Prolog, resultando na criação do Erlang. Isso também explica por que a sintaxe do Erlang tem muitas semelhanças com a do Prolog, como suas expressões de lista [Head | Tail].

1987O ano, foi lançada a versão de teste do Erlang, e foi不断完善于1991O ano, foi lançada a primeira versão para os usuários, com mais funcionalidades como compilador e interface gráfica.1992O ano, o Erlang recebeu mais usuários, como o projeto RACE, etc. No mesmo período, o Erlang foi portado para várias plataformas, como VxWorks, PC e Macintosh, e dois projetos de produtos usando Erlang também começaram.1993A organização independente da Ericsson começou a manter e suportar a implementação e as ferramentas do Erlang.

características do idioma

Diferente dos idiomas orientados a objetos tradicionais, ele possui suas próprias vantagens: primeiramente, ele é baseado em concorrência de processo, esses processos são leves e tratam de transações de maneira colaborativa e organizada, os usuários não precisam se preocupar com operações PV específicas, esses processos são transparentes para o sistema operacional, para o sistema operacional há apenas um processo em execução. Em segundo lugar, cada processo possui sua própria memória independente, na comunicação entre processos depende completamente da troca de mensagens, cada processo possui sua própria caixa de entrada e usa a maneira de correspondência de padrão para encontrar mensagens a serem processadas, e então realiza o processamento assíncrono. Isso reduz a耦合 entre processos, aumentando a independência. O Erlang também possui um mecanismo de tolerância a falhas confiável, devido à independência relativa entre processos, então no Erlang pode-se usar alguns processos para ligar ou monitorar outros processos, quando esses processos monitorados saem abruptamente devido a erros, o programa responsável pelo monitoramento receberá as mensagens de saída desses processos e os tratará de maneira apropriada. No OTP, o Erlang pode usar a árvore de monitoramento para monitorar de forma unidirecional ou bidirecional. O mais importante é o suporte a múltiplos núcleos de CPU, no Erlang, a operação de múltiplos núcleos não requer a gestão do desenvolvedor, para o desenvolvedor é completamente transparente, precisamos apenas escrever programas como de costume. Finalmente, o Erlang suporta atualizações de código quente, no Erlang é possível realizar atualizações de código sem interrupção da execução, para implementar atualizações de software em tempo real. No gerenciamento de versões do Erlang, é possível manter um módulo de2Diferentes versões, suportando o rollback de versões.

A linguagem Erlang se concentra em necessidades específicas e não é completamente adequada para todas as situações. Ao mesmo tempo em que possui muitas características atraentes, também tem algumas desvantagens: a capacidade de abstração da linguagem não é forte, Erlang é uma linguagem de tipo fraco, e é mais fácil ajustar o conteúdo da mensagem ou os requisitos do padrão na hora da correspondência, mas quando ocorrem erros, a ocultação desses erros é forte. Além disso, quando o tamanho do projeto é grande, observa-se que devido às características da linguagem, os componentes aparecem como planos, com muitos tuplas e registros na estrutura do programa, o que resulta em uma estrutura confusa. Em segundo lugar, a programação funcional difere das linguagens tradicionais, e atualmente as linguagens de programação populares são do sistema C e orientadas a objetos. A programação funcional falta teorias de programação maduras, e há poucos talentos e materiais relacionados, o que aumenta a dificuldade de aprendizado. Além disso, a ideia de orientação a objetos já está profundamente enraizada, o que torna difícil a mudança de pensamento ao aprender programação funcional. O mais importante é que o Erlang é uma linguagem intensiva em IO, adequada para projetos com características distribuídas claras. Para requisitos intensivos em cálculo, pode ser difícil, mas ainda há espaço para otimização e melhoria.

Perspectiva de desenvolvimento

O desenvolvimento do Erlang no país nos últimos anos foi muito rápido, principalmente usado para o desenvolvimento de sistemas de servidores de jogos. O Erlang é fácil de aprender, tem alta taxa de tolerância a falhas e iterações rápidas, o que é muito adequado para o desenvolvimento de jogos de página e jogos móveis. Especialmente as empresas de jogos de pequeno e médio porte em Guangzhou, Shenzhen e outras cidades quase usam Erlang. Com c++A necessidade de acumulação técnica prolongada para sistemas de servidores de jogos de linguagem básica, e c++A eficiência de desenvolvimento do desenvolvimento não é tão boa quanto Erlang, e o custo de recrutamento alto representa um grande desafio para as empresas emergentes. Mas as empresas de pequeno e médio porte dão mais importância ao produto do que à tecnologia, o que é desfavorável para o desenvolvimento do Erlang no país. A maioria das empresas usa o mesmo conjunto de frameworks de Erlang já estabelecidos, focando na lógica de negócios específica e ignorando a otimização de baixo nível. Isso é extremamente desfavorável para o desenvolvimento do Erlang.

O desenvolvimento do Erlang no exterior tem um tempo mais longo e como um idioma maduro já foi comprovado, atualmente aplicado em centenas de projetos de desenvolvimento importantes, incluindo soluções de sistemas de troca de largura de banda da Ericsson, GPRS e ATM, com uma rica experiência em projetos, a estrutura de programação (OTP) fornece uma série de ferramentas e bibliotecas para a robustez e tolerância a falhas do sistema Erlang e uma estrutura de framework completa. Mas em comparação com o uso doméstico para desenvolvimento de jogos, o uso no exterior é principalmente para web services, telefonia computacional, sistemas de mensagens e bancos comerciais e outras áreas. No início do século, o site Erlang.org tinha36000 de páginas, dez anos depois, esse número subiu para280 mil, isso mostra que a comunidade Erlang está crescendo constantemente, incluindo negócios, pesquisa e projetos de código aberto, marketing viral, combinação de livros e blogs, claro, tudo isso provém do design original do Erlang-A necessidade e a promoção de soluções para problemas específicos.