[Elixir] Coisas legais sobre Elixir

Um post rápido sobre algumas coisas legais em relação a Elixir, uma linguagem funcional dinâmica implementada em cima da máquina virtual do Erlang, mas com uma sintaxe muito mais agradável/produtiva.

Pattern Matching é lindo

Quem nunca escreveu um método em que precisou fazer uma série de if/elses/switches/dispatching complicado dependendo dos valores dos argumentos? Por exemplo, ao calcular o fatorial de um número em Python:

def factorial(x):
  if (x == 0 or x == 1):
    return 1
  else:
    return x * factorial(x-1)

E se ao invés disso pudesse ser algo assim:

def factorial(0): return 1
def factorial(1): return 1
def factorial(n): return n * factorial(n-1)

Não só para argumentos simples, mas Elixir também suporta para tipos mais complexos como “dicts” ou tuplas. Por exemplo, num projetinho onde implementava (ainda em progresso) o Conway’s Game of Life, eu tinha a seguinte função:

def neighbors(%{:dimensions=>{width, height}}, pos) do ...

Essa função aceitaria mapas – que parecem dicionários de Python – que possuíssem a chave :dimensions (um átomo) apontando para uma tupla com 2 valores e um argumento “pos”. Além de dar match no dicionário, essa definição já faz “unpack” e atribui os valores às variáveis width e height.

Robusta

Chris McCord, criador do Phoenix – “o django/rails de Elixir”, recentemente fez um teste em que um servidor manteve 2 milhões de conexões simultâneas, e só não conseguiu mais por limitação no sistema operacional (ulimit). Fabio Akita postou uma timeline do exercício.

Suporte da comunidade

Tanto o canal #elixir-lang na Freenode, o Slack elixir-lang.slack.com (inclusive o canal brasileiro, com muita gente) e a lista de emails elixir-lang-talk são bastate movimentadas, com bastante gente disposta a tirar dúvidas, etc. Inclusive o criador da linguagem, José Valim (yep, é brasileiro) é bastante ativo.


Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s