elixir - o que existe atrás do mistério

79
elixir O que existe atrás do mistério

Upload: alex-ferreira

Post on 15-Apr-2017

321 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Elixir - o que existe atrás do mistério

elixirO que existe atrás do mistério

Page 2: Elixir - o que existe atrás do mistério

Email:[email protected]:/alexferreira

FullStack developer,NodeJs,Elixir,Ruby,EmberJs,Sass,Stylus,Fotografonashorasvagas.

Quem sou eu

Page 3: Elixir - o que existe atrás do mistério
Page 4: Elixir - o que existe atrás do mistério

Linguagem de programação criada em 1986 e ja está no mercado a 30 anos.

Page 5: Elixir - o que existe atrás do mistério

Usado por

Page 6: Elixir - o que existe atrás do mistério

AXD-301

Page 7: Elixir - o que existe atrás do mistério

AXD-301

Disponibilidade 99.9999999%

Offline 0.6 segundos em 20 anos

Page 8: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

Sistemas Distribuídos

Page 9: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

Sistemas Distribuídos

Page 10: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

Sistemas Distribuídos

Page 11: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

Page 12: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

Page 13: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

Page 14: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

Page 15: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

Page 16: Elixir - o que existe atrás do mistério

Guerra dos mundos

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos

• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Sistemas Distribuídos Aplicações Web

?

Page 17: Elixir - o que existe atrás do mistério

Que faça-se a luz

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Page 18: Elixir - o que existe atrás do mistério

Que faça-se a luz

• Eficiência e confiabilidade• Programação Concorrente• Tolerante a falhas• Suporte à programação de sistemas distribuídos• Fácil Prototipação• Fácil Manutenção• Fácil Evolução

Page 19: Elixir - o que existe atrás do mistério

Porque ELIXIR?

Page 20: Elixir - o que existe atrás do mistério

Porque ELIXIR?”Eu gostei de tudo que vi em Erlang, mas eu odiava as coisas que eu não vi” José Valim

Page 21: Elixir - o que existe atrás do mistério

Porque ELIXIR?

Semântica, Eficiência, Confiabilidade

”Eu gostei de tudo que vi em Erlang, mas eu odiava as coisas que eu não vi” José Valim

Page 22: Elixir - o que existe atrás do mistério

Porque ELIXIR?

Semântica, Eficiência, Confiabilidade

Facilidade do Ruby e Experiência

”Eu gostei de tudo que vi em Erlang, mas eu odiava as coisas que eu não vi” José Valim

Page 23: Elixir - o que existe atrás do mistério

Porque ELIXIR?

Semântica, Eficiência, Confiabilidade

Ferramentas eModularidade

Facilidade do Ruby e Experiência

”Eu gostei de tudo que vi em Erlang, mas eu odiava as coisas que eu não vi” José Valim

Page 24: Elixir - o que existe atrás do mistério

Porque ELIXIR?

Semântica, Eficiência, Confiabilidade

Ferramentas eModularidade

Facilidade do Ruby e Experiência

”Eu gostei de tudo que vi em Erlang, mas eu odiava as coisas que eu não vi” José Valim

Macros

Page 25: Elixir - o que existe atrás do mistério

Elixir é uma linguagem dinâmica e funcional projetada para construir aplicações escaláveis e de fácil manutenção.

Page 26: Elixir - o que existe atrás do mistério

Comparativo

12345

-module(hello_world).-compile(export_all).

say_hello(Name) →io:print(“Hello ~p~n”, [Name]).

Há quem diga que o problema é a linguagem ser funcional, outros que reclamam do suporte a testes, outros da nomenclatura utilizada, outros da falta de ferramentas e etc.

Page 27: Elixir - o que existe atrás do mistério

Comparativo

12345

defmodule HelloWorld dodef say_hello(name) do

IO.puts “Hello #{name}”end

end

A estrutura é simples e muito familiar para quem já lê código Ruby.

Page 28: Elixir - o que existe atrás do mistério

Tipos Básicos

Page 29: Elixir - o que existe atrás do mistério

Tipos BásicosOs tipos básicos do elixir são: integer, floats, booleans, atoms, strings, lists e tuples1 #inteiro0x1f #inteiro1.0 #floatTrue #boolean:atom #atom/symbol”elixir” #string[9,8,7,6] #list{5,6,7,8} #tuple

Page 30: Elixir - o que existe atrás do mistério

Tipos Básicos - InteirosElixir também suporta a conversão de números binários, octais e hexadecimais para inteiros:

Page 31: Elixir - o que existe atrás do mistério

Tipos Básicos - FloatO pontos flutuantes necessitam de um ponto, seguindo por, pelo menosum dígito; estes possuem uma precisão de 64 bits e suportam e para números exponenciais.

Page 32: Elixir - o que existe atrás do mistério

Tipos Básicos - FloatVocê pode chamar a função round para obter o número inteiro mais próximo, ou a função trunc para obter a parte inteira de um float.

Page 33: Elixir - o que existe atrás do mistério

Tipos Básicos – BooleansElixir suporta true e false como valores booleanos; todo valor éverdadeiro com excessão de false e nil:

Page 34: Elixir - o que existe atrás do mistério

Tipos Básicos – AtomsÁtomos são constantes, onde seu nome é o seu próprio valor. Algumasoutras linguagens chamam estes símbolos:

Page 35: Elixir - o que existe atrás do mistério

Tipos Básicos – AtomsValores booleanos true e false, são de fato atoms:

Page 36: Elixir - o que existe atrás do mistério

Tipos Básicos - StringAs strings em Elixir são codificadas em utf-8 e são representadas com aspas duplas, suporta quebras de linhas, caracteres de escape e interpolação.

Page 37: Elixir - o que existe atrás do mistério

Tipos Básicos - ListsAs listas são simples coleções de valores, elas podem incluir múltiplos tipos; listas podem incluir valores não-exclusivos:

Elixir implementa listas como listas encadeadas. Isso significa que acessar a profundidade da lista é uma operação O(n).

Page 38: Elixir - o que existe atrás do mistério

Tipos Básicos – Lists - Concatenando e Subtraindo

A concatenação de listas usa o operador ++/2

O suportare para subtração é provido pelo operador --/2.

É seguro subtrair um valor que não existe, isso não retorna um erro.

Page 39: Elixir - o que existe atrás do mistério

Tipos Básicos – Lists – Cabeça e Cauda

Quando usamos listas é comum trabalhar com a cabeça e a caudada lista.

O Elixir provê funções úteis para trabalhar com essas partes, são elas hd e tl

A cabeça é o primeiro elemento da lista e a cauda são os elementosrestantes.

Page 40: Elixir - o que existe atrás do mistério

Tipos Básicos – Lists – Cabeça e Cauda

Vamos atribuir uma lista para uma variável e recuperar a sua cabeçae a cauda:

Page 41: Elixir - o que existe atrás do mistério

Tipos Básicos – Lists – Cabeça e Cauda

Além das funções citadas, podemos utilizar o o operador pipe |;

Page 42: Elixir - o que existe atrás do mistério

Tipos Básicos – Tuples

O Elixir usa chaves para definir tuples, assim como as listas as tuples podem conter qualquer valor.

Page 43: Elixir - o que existe atrás do mistério

Tipos Básicos – Tuples

As tuples são armazenadas de forma contígua na memória. Permitindo o acesso a sua profundidade de forma rápida.

Page 44: Elixir - o que existe atrás do mistério

Tipos Básicos – Tuples

Também é possível modificar um elemento em um índice especifico usando a função put_elem

Page 45: Elixir - o que existe atrás do mistério

Operações Básicas

Page 46: Elixir - o que existe atrás do mistério

Operações Básicas - AritméticaElixir suporta os operadores básicos +, -, * e / como era de se esperar.

Page 47: Elixir - o que existe atrás do mistério

Operações Básicas – Aritmética

Page 48: Elixir - o que existe atrás do mistério

Estruturas de Controle de fluxo

Page 49: Elixir - o que existe atrás do mistério

Controle de Fluxo – caseO case nos permite comparar um valor contra muitos padrões até encontrarmos um que corresponda

Page 50: Elixir - o que existe atrás do mistério

Controle de Fluxo – caseO uso da variável _ é uma importante inclusão na declaração do case.

Page 51: Elixir - o que existe atrás do mistério

Controle de Fluxo – caseConsidere o _ como o else que irá igualar com todo o resto

Page 52: Elixir - o que existe atrás do mistério

Controle de Fluxo – caseSe você pretende encontrar correspondência em variáveis existentes, você precisará do operador ^

Page 53: Elixir - o que existe atrás do mistério

Controle de Fluxo – caseOutra característica interessante do case é o seu suporte a cláusulasde guarda

Page 54: Elixir - o que existe atrás do mistério

Controle de Fluxo – condEm muitas circunstâncias, queremos verificar condições diferentes e encontrar o primeiro resultado correspondente. Em tais casos recorremos ao cond

Page 55: Elixir - o que existe atrás do mistério

Controle de Fluxo – condSe nenhuma das condições corresponder será gerado um erro assim como no case. Por esta razão, pode ser necessário adicionar uma condição final

Page 56: Elixir - o que existe atrás do mistério

Controle de Fluxo – if e unlessNo Elixir o if e unless são definidos como macros, não construtores de linguagem.

Page 57: Elixir - o que existe atrás do mistério

Controle de Fluxo – if e unlessO unless é bem parecido ao uso do if porém trabalhando de forma negativa

Page 58: Elixir - o que existe atrás do mistério

Modulo

Page 59: Elixir - o que existe atrás do mistério

Módulos – Funções NomeadasDentro de um módulo, podemos definir funcões com def e funções privadas com defp.

Page 60: Elixir - o que existe atrás do mistério

Módulos – Funções NomeadasFunção reduzida

Page 61: Elixir - o que existe atrás do mistério

Módulos – Funções NomeadasFunção privada

Page 62: Elixir - o que existe atrás do mistério

Módulos – Funções NomeadasUsando cláusulas de guarda

Page 63: Elixir - o que existe atrás do mistério

Módulos – Funções NomeadasArgumentos padrões

Page 64: Elixir - o que existe atrás do mistério

Funcões anonimas e abreviadas

Page 65: Elixir - o que existe atrás do mistério

Funções anônimas e abreviadas

Page 66: Elixir - o que existe atrás do mistério

Conhecendo o MIX

Page 67: Elixir - o que existe atrás do mistério

Conhecendo o MIX

Se você estiver familiarizado com Ryby, o mix é o Bundler, RubyGems e o Rake juntos.

Page 68: Elixir - o que existe atrás do mistério

Conhecendo o MIX – Criando novos projetosO mix faz com que a crianção do projeto seja facil utilizando o comando mix new

Page 69: Elixir - o que existe atrás do mistério

Conhecendo o MIX – Criando novos projetos

Page 70: Elixir - o que existe atrás do mistério

Conhecendo o MIX – Gegenciando Dependencias

Uma vez que definimos nossas dependencias

Usaremos o comando abaixo para instalar as dependencias.

Page 71: Elixir - o que existe atrás do mistério

Exercícios

Page 72: Elixir - o que existe atrás do mistério

Exercicio – FatorialCriar modulo Factorial, contendo o método of

Page 73: Elixir - o que existe atrás do mistério

Exercicio – Somando ListaCriar modulo MyList, com métodos sum

• Deverá passar uma lista para o método do modulo retornando o valor total

Page 74: Elixir - o que existe atrás do mistério

Exercício – Sequencia de FibonacciCriar módulo Fibonacci, com métodos fib

Page 75: Elixir - o que existe atrás do mistério

Exercicio – CalculadoraCriar modulo Calculator, com método result.

A calculadora deve executar as seguintes operações• Somar• Subtrair• Multiplicar• Dividir• Checar se a opração é valida• Deve-se utilizar o tuple para calcular, ex: {:soma,1,2}

Page 76: Elixir - o que existe atrás do mistério

Exercicio – FizzBuzzCriar modulo FizzBuzz, com métodos parse e create

• Números divisíveis por 3 devem ser substituidos por Fizz• Números divisíveis por 5 devem ser substituidos por Buzz• Números divisíveis por 3 e 5 devem ser substituidos por FizzBuzz

Page 77: Elixir - o que existe atrás do mistério

Aprendendo mais

Page 78: Elixir - o que existe atrás do mistério

Sintaxe agora não é mais desculpa! Nem o ferramental, nem a comunidade, nem a disponibilidade de bibliotecas e etc, etc, etc.

Sejam Bem-vindos ao mundo dos alquimistas!

Page 79: Elixir - o que existe atrás do mistério

Obrigado

Email:[email protected]:/alexferreira