Elixir (linguagem de programação) - Elixir (programming language)

Elixir
linguagem de programação elixir
Paradigma multiparadigma : funcional , concorrente , distribuído , orientado para o processo
Apareceu pela primeira vez 2011 ; 10 anos atrás ( 2011 )
Versão estável
1.12  Edite isso no Wikidata / 19 de maio de 2021 ; 2 meses atrás ( 19 de maio de 2021 )
Disciplina de digitação dinâmico , forte , pato
Plataforma Erlang
Licença Licença Apache 2.0
Extensões de nome de arquivo .ex, .exs
Local na rede Internet elixir-lang .org
Influenciado por
Clojure , Erlang , Ruby
Influenciado
LFE

Elixir é uma linguagem de programação funcional , concorrente e de propósito geral que é executada na máquina virtual BEAM usada para implementar a linguagem de programação Erlang . Elixir constrói em cima de Erlang e compartilha as mesmas abstrações para a construção distribuída , tolerantes a falhas aplicações. Elixir também fornece ferramentas produtivas e um design extensível . O último é suportado por metaprogramação em tempo de compilação com macros e polimorfismo por meio de protocolos.

Elixir é usado por empresas como PagerDuty , Discord , Brex , E-MetroTel, Pinterest , Moz, Bleacher Report , The Outline , Inverse , Divvy, FarmBot e para a construção de sistemas embarcados . A comunidade organiza eventos anuais nos Estados Unidos, Europa e Japão, bem como eventos e conferências locais menores.

História

José Valim é o criador da linguagem de programação Elixir, um projeto de pesquisa e desenvolvimento criado na Plataformatec. Seus objetivos eram permitir maior extensibilidade e produtividade no Erlang VM, mantendo a compatibilidade com o ecossistema de Erlang.

José Valim pretendia criar uma linguagem de programação para sites e aplicativos de grande porte. Sendo um desenvolvedor Ruby, ele usou recursos de Ruby, Erlang e Clojure para desenvolver uma linguagem de alta simultaneidade e baixa latência. Elixir foi projetado para lidar com grandes volumes de dados. Sua velocidade e recursos espalham o Elixir nos setores de telecomunicações, comércio eletrônico e finanças.

Em 12 de julho de 2018, o Honeypot lançou um minidocumentário sobre Elixir.

Controle de versão

Elixir segue principalmente versões semânticas e tem apenas 1 versão principal sem planos para um segundo. Cada uma das versões secundárias suporta um intervalo específico de versões Erlang / OTP .

Recursos

Exemplos

Os exemplos a seguir podem ser executados em um iexshell ou salvos em um arquivo e executados a partir da linha de comando digitando . elixir <filename>

Exemplo clássico de Hello world :

iex> IO.puts("Hello World!")
Hello World!

Compreensões

iex> for n <- [1,2,3,4,5], rem(n, 2) == 1, do: n*n
[1, 9, 25]

Correspondência de padrões (desestruturação)

iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"

Correspondência de padrões (cláusulas múltiplas)

iex> case File.read("path/to/file") do
iex>   {:ok, contents} -> IO.puts("found file: #{contents}")
iex>   {:error, reason} -> IO.puts("missing file: #{reason}")
iex> end

Operador de tubulação

iex> "1" |> String.to_integer() |> Kernel.*(2)
2

Módulos

defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n), do: fib(n-2) + fib(n-1)  
end

Gerando sequencialmente mil processos

for num <- 1..1000, do: spawn fn -> IO.puts("#{num * 2}") end

Executar uma tarefa de maneira assíncrona

task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

Projetos Elixir notáveis

  • Mix é uma ferramenta de automação de construção que fornece tarefas para criar, compilar e testar projetos Elixir, gerenciar suas dependências e muito mais.
  • Phoenix é uma estrutura de desenvolvimento web escrita em Elixir que implementa o padrão Model View Controller ( MVC ) do lado do servidor .

Veja também

Referências

links externos