Hello World em Elixir
Tags: elixir
Published: 2024-06-20 20:06:46

Elixir é uma linguagem de programação dinâmica, funcional e construída sobre a máquina virtual Erlang (BEAM). Foi criada para ser escalável e manter sistemas de alta disponibilidade, tornando-se uma escolha popular para aplicações web, sistemas distribuídos e telecomunicações.

## O que é Elixir?

Elixir é uma linguagem projetada para ser produtiva, com uma sintaxe elegante e moderna, enquanto aproveita a robustez e as capacidades de concorrência da máquina virtual Erlang. Criada por [José Valim](https://x.com/josevalim), um dos principais contribuidores do framework Ruby on Rails, Elixir combina o melhor de dois mundos: a simplicidade de Ruby e a potência de Erlang.

## Por que usar Elixir?

- **Concorrência**: Elixir facilita a escrita de código concorrente, aproveitando os processos leves da BEAM.
- **Escalabilidade**: Ideal para aplicações que precisam lidar com um grande número de conexões simultâneas.
- **Alta Disponibilidade**: Projetado para sistemas que precisam estar em operação constante, com tolerância a falhas.
- **Performance**: Aproveita a eficiência da VM do Erlang, conhecida por sua baixa latência e alta taxa de transferência.
- **Comunidade Ativa**: Uma comunidade crescente e acolhedora, com muitos recursos e bibliotecas.

Para instalar Elixir, recomendo a leitura deste procedimento na página da linguagem: [Install](https://elixir-lang.org/install.html). Caso deseje instalar no Fedora/Linux, escrevi um artigo explicando como instalar neste ambiente: [Guia Completo: Instalando Elixir no Fedora/Linux](https://dev.to/jpstudioweb/guia-completo-instalando-elixir-no-fedoralinux-40-100f).

## Executando o IEx (Interactive Elixir)

Depois de instalar Elixir, podemos usar o IEx (Interactive Elixir), um REPL (Read-Eval-Print Loop) interativo que permite executar comandos Elixir em tempo real.

Para iniciar o IEx, abra seu terminal e digite:

```bash
iex
```

Você verá um prompt interativo onde pode começar a escrever comandos Elixir.

### Saindo do IEx

Para sair do IEx, você pode:
- Pressionar `Ctrl + C` duas vezes.
- Digitar `Ctrl + G`, seguido de `q` e pressionar `Enter`.

## Exemplos

Vamos explorar alguns exemplos para familiarizar-se com a sintaxe do Elixir.

### Operações Básicas

#### Soma

Elixir permite realizar operações aritméticas básicas de forma direta. Aqui está um exemplo de soma:

```elixir
IO.puts(1 + 2)
```

Saída esperada:
```
3
```

#### Subtração, Multiplicação e Divisão

Da mesma forma, você pode realizar outras operações aritméticas:

```elixir
IO.puts(5 - 3)   # Subtração
IO.puts(4 * 2)   # Multiplicação
IO.puts(8 / 2)   # Divisão
```

Saída esperada:
```
2
8
4.0
```

#### Concatenar Strings

Em Elixir, você pode concatenar strings usando o operador `<>`:

```elixir
IO.puts("Elixir " <> "é divertido!")
```

Saída esperada:
```
Elixir é divertido!
```

#### Pattern Matching

Pattern matching é uma característica poderosa do Elixir que permite extrair valores de estruturas de dados. Aqui está um exemplo simples:

```elixir
{a, b, c} = {1, 2, 3}
IO.puts(a) # 1
IO.puts(b) # 2
IO.puts(c) # 3
```

Pattern matching pode ser usado em listas, tuplas e outras estruturas:

```elixir
# Listas
[head | tail] = [1, 2, 3, 4]
IO.puts(head)  # 1
IO.inspect(tail) # [2, 3, 4]

# Tuplas
{:ok, result} = {:ok, 42}
IO.puts(result) # 42
```

Saída esperada:
```
1
2
3
1
[2, 3, 4]
42
```

## Seu Primeiro Programa Elixir

Vamos criar um programa simples que imprime "Hello, World!" no console.

Crie um arquivo chamado `hello.exs` com o seguinte conteúdo:

```elixir
IO.puts("Hello, World!")
```

Para executar o programa, use o comando:

```bash
elixir hello.exs
```

Você deve ver a mensagem "Hello, World!" impressa no console.

## Principais Características do Elixir

- **Imutabilidade**: Valores em Elixir são imutáveis, o que significa que não podem ser alterados depois de criados. Isso ajuda a evitar erros e facilita a concorrência.
- **Pattern Matching**: Permite extrair valores de estruturas de dados de forma concisa e poderosa.
- **Funções de Primeira Classe**: Funções são cidadãos de primeira classe em Elixir, permitindo passá-las como argumentos, retorná-las de outras funções, e armazená-las em variáveis.
- **Processos Leves**: O modelo de concorrência baseado em processos leves permite criar milhões de processos simultâneos sem sobrecarregar o sistema.
- **Supervisores**: Estruturas que monitoram e gerenciam processos, reiniciando-os em caso de falha, garantindo a alta disponibilidade do sistema.

Elixir é uma linguagem poderosa e moderna que oferece uma combinação única de simplicidade, produtividade e robustez. Com sua sintaxe elegante e capacidades de concorrência, é uma excelente escolha para uma variedade de aplicações. Neste artigo, cobrimos os primeiros passos com Elixir, desde a instalação até a execução de um programa simples.

Nos próximos artigos, vamos explorar mais a fundo os conceitos e funcionalidades do Elixir, ajudando você a se tornar um desenvolvedor proficiente nesta incrível linguagem.