freeCodeCamp/guide/portuguese/erlang/index.md

80 lines
3.0 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

---
title: Erlang
localeTitle: Erlang
---
## Erlang
Erlang é uma linguagem de programação funcional, desenvolvida pela Ericsson para uso em aplicações de telecomunicações. Por acharem que é inaceitável que um sistema de telecomunicações tenha algum tempo de inatividade significativo, o Erlang foi construído para ser (entre outras coisas):
* distribuído e tolerante a falhas _(um software ou hardware com falha não deve desativar o sistema)_
* concorrente _(pode gerar muitos processos, cada um executando um trabalho pequeno e bem definido, e isolados uns dos outros, mas capazes de se comunicar via mensagens)_
* hot-swappable _(o código pode ser trocado no sistema durante a execução, levando a alta disponibilidade e tempo de inatividade mínimo do sistema)_
### Sintaxe
Erlang faz uso pesado de **recursão** . Como os dados são imutáveis em Erlang, o uso de loops `while` e `for` (onde uma variável precisa continuar mudando seu valor) não é permitido.
Aqui está um exemplo de recursão, mostrando como uma função tira repetidamente a primeira letra da frente de um nome e a imprime, parando apenas quando a última letra é encontrada.
```erlang
-module(name).
-export([print_name/1]).
print_name([RemainingLetter | []]) ->
io:format("~c~n", [RemainingLetter]);
print_name([FirstLetter | RestOfName]) ->
io:format("~c~n", [FirstLetter]),
print_name(RestOfName).
```
Saída:
```
> name:print_name("Mike").
M
i
k
e
ok
```
Há também uma forte ênfase na **correspondência de padrões** , que freqüentemente elimina a necessidade de uma estrutura `if` ou declaração de `case` . No exemplo a seguir, há duas correspondências para nomes específicos, seguidas por um pega-tudo para quaisquer outros nomes.
```erlang
-module(greeting).
-export([say_hello/1]).
say_hello("Mary") ->
"Welcome back Mary!";
say_hello("Tom") ->
"Howdy Tom.";
say_hello(Name) ->
"Hello " ++ Name ++ ".".
```
Saída:
```
> greeting:say_hello("Mary").
"Welcome back Mary!"
> greeting:say_hello("Tom").
"Howdy Tom."
> greeting:say_hello("Beth").
"Hello Beth."
```
### Experimente
Existem sites onde você pode tentar executar comandos Erlang sem ter que instalar nada localmente, como estes:
* [De uma chance! (um tutorial prático)](http://www.tryerlang.org/)
* [Tutoriais](https://www.tutorialspoint.com/compile_erlang_online.php)
Se você gostaria de instalá-lo em sua máquina (ou virtual), você pode encontrar arquivos de instalação em [Erlang.org](https://www.erlang.org/downloads) ou em [Erlang Solutions](https://www.erlang-solutions.com/resources/download.html) .
#### Mais Informações:
* [Sobre o Erlang](https://www.erlang.org/about)
* [Aprenda-lhe alguns Erlang para o bem grande!](http://learnyousomeerlang.com/)
* [Abrigo Desovado!](http://spawnedshelter.com/) _(uma coleção de artigos, vídeos e livros para aprender Erlang)_
* [Erlang (linguagem de programação)](https://en.wikipedia.org/wiki/Erlang_(programming_language))