SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
Programando em
Adolfo Neto (PPGCA-DAINF-UTFPR)
@adolfont
bit.ly/adolfontEn
Sobre mim
● Professor DAINF desde 2008
● Orientador no Mestrado em Computação
Aplicada (PPGCA)
● Disciplinas:
− Lógica para Computação
− Métodos Ágeis
− Metodologia da Pesquisa
− Tópicos Avançados em Engenharia de Software 2
Temas de Pesquisa
● Métodos Ágeis para o Desenvolvimento
de Software (TDD, PP)
● Provadores de Teoremas (Tableaux e
SAT)
● Ensino de Lógica
● Encontros de Desenvolvedores (Coding
Dojos, Coderetreats, Meetups)
Roteiro
● Em quais linguagens…
● Linguagens mais usadas
● FizzBuzz
● José Valim
● Linguagens brasileiras
● Dave Thomas
● Características de Elixir
Roteiro
● Erlang
● Interactive Elixir
● Livro que inspirou a criação de Elixir
● Como aprender mais?
● O que tenho feito com Elixir?
● Empregos e Futuro em Elixir
Em quais linguagens de
programação você já
programou?
No mínimo um programa de umas 50
linhas
Em quais linguagens de
programação você já programou
50+ linhas?
● Java
● JavaScript
● C, C++ ou C#
● Python
● PHP
● Ruby
● Scala
● Lisp
● Clojure
● Prolog
● Erlang
● Lua
● Elixir
● Outra?
Linguagens mais
usadas
Como cheguei ao Elixir
● Histórico:
− 80’s: BASIC, Assembler
− 90-93: Algoritmos, Pascal, C, C++, LISP
− 94: Java (beta)
− 2003: Java (OO, Patterns GoF), AspectJ
− 2008-2010: Prolog, Ruby
− 2010: Clojure (Lisp e Java)
− 2014: Clojure *Meetup Durham, NC
− 2014-5: Elixir *Mentioned in several meetups at the
Research Triangle (Raleigh, Durham, Chapell Hill - NC)
Mais sobre como cheguei a Elixir
● Escutava falar de Elixir nos Meetups dos
EUA (04/2014-04/2015)
● Interessei-me pois o criador é brasileiro
● Elixir é funcional
● Elixir tem características de Clojure
Fizz Buzz
https://www.forbes.com/sites/kevinknudson/2016/08/25/fizzbuzz-party-games-meet
-coding/#1a1b73dd59c2
Fizz Buzz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Múltiplos de 3:
Fizz
Múltiplos de 5:
Buzz
Múltiplos de 3 e
de 5: FizzBuzz
Demais: o
próprio número
FizzBuzz em Java e
em Elixir
Estética
Fizz Buzz em Java
public class FizzBuzz {
public static void main(String[] args) {
for (int i = 1; i <= 100; i++) {
if (i % 15 == 0) {
System.out.println("FizzBuzz")
} else if (i % 3 == 0) {
System.out.println("Fizz");
} else if (i % 5 == 0) {
System.out.println("Buzz");
} else {
System.out.println(String.valueOf(i));}}}}
https://codereview.stackexchange.com/questions/11489/fizzbuzz-implementation
Fizz Buzz em Elixir
https://www.leighhalliday.com/fizzbuzz-in-elixi
r
Criador do Elixir
José Valim
José Valim
José Valim
Co-founder
Linguagens Brasileiras
Como uma linguagem
de um país de terceiro
mundo fica famosa?
Dave Thomas
Dave Thomas
Dave Thomas
Testes
Dave Thomas é o criador de Elixir.
José Valim escreveu o primeiro livro sobre
Elixir.
Dave Thomas é um dos signatários do
Manifesto Ágil.
Elixir já está entre as 20 linguagens de
programação mais usadas no mundo,
segundo o Tiobe Index.
Características de Elixir
“Elixir é uma linguagem de programação
funcional, concorrente, de propósito geral
que executa na máquina virtual Erlang
(BEAM).”
“Elixir is a functional, concurrent,
general-purpose programming language that
runs on the Erlang virtual machine (BEAM).”
Características de Elixir
“Elixir is a functional, concurrent,
general-purpose programming language that
runs on the Erlang virtual machine (BEAM).”
(WIKIPEDIA)
Funcional: Fizz Buzz em Elixir
whichfizz = fn
(0, 0, _) -> "FizzBuzz"
(0, _, _) -> "Fizz"
(_, 0, _) -> "Buzz"
(_, _, n) -> n
end
fizzbuzz = fn (n) ->
whichfizz.(rem(n, 3), rem(n, 5),
https://www.leighhalliday.com/fizzbuzz-in-elixi
r
Casamento de Padrões
Erlang
● Criada na Ericsson
● Erlang VM:
− Pequenos processos concorrentes
− Processos trocam mensagens
− Tolerante a falhas
− Joe Armstrong, Robert Virding, and Mike
Williams
● WhatsApp
FizzBuzz com processos
Testes
Elixir pode ser usada em IoT.
Elixir roda na máquina virtual de Java.
Por ser uma linguagem voltada à
concorrência, Elixir deve ser boa para
computadores com múltiplos núcleos.
Em Elixir, funções são “cidadãos de segunda
classe”.
iex – Interactive Elixir
Livro que inspirou a criação de
Elixir
Seven Languages in Seven Weeks
2010
Seven Languages in Seven Weeks
● Prolog
● Clojure
● Haskell
● Scala
● Erlang
● Ruby
● Io
Seven Languages in Seven Weeks
● Erlang é uma linguagem funcional
● A sintaxe de Erlang é inspirada no do
Prolog, que usa Paradigma Lógico
● “Foi desenvolvida pela Ericsson para
suportar aplicações distribuídas e
tolerantes a falhas a serem executadas
em um ambiente de tempo real e
ininterrupto” (Wikipédia)
Erlang
Erlang
Erlang
Por que criar Elixir?
Elixir
Seven More Languages...
Seven More Languages...
● Elixir
● Lua
● ...
Testes
O livro que inspirou a criação de Elixir tinha
um capítulo sobre Prolog.
O segundo livro da série tem um capítulo
sobre Elixir e outro sobre Lua.
Uma das vantagens apontadas de Elixir sobre
Erlang é a sintaxe.
Como Aprender Mais?
Palestras
Meetups
Coding Dojos
Eventos (ex.: ElixirConf)
Livros
De preferência, em papel
Podcasts
● Elixir Fountain
● Elixir, a linguagem hipster - Hipsters #48 -
Hipsters Ponto Tech
● Grok Podcast: Série sobre Elixir (2015):
http://www.grokpodcast.com/series/elixir/
● Grok Podcast: Série sobre Erlan g (2011):
http://www.grokpodcast.com/series/erlang/
Screencasts
Elixir Sips, LearnElixir.tv
Palestras Gravadas
Youtube
MOOCs
Cursos em Vídeo
Sites
● Site da linguagem
● Elixir Forum
● Try Elixir http://tryelixir.online/
● Stack Overflow
● Reddit
● … Outros
Esqueci de algo?
Qual meio você gosta de usar para
aprender programação?
- Palestras presenciais
- Meetups
- Coding Dojos
- Eventos
- Livros
- Podcasts
- Screencasts
- Palestras gravadas
- MOOCs
- Sites
- Outros
O que tenho feito?
Investindo tempo
Usando com alunos de Lógica
https://gist.github.com/adolfont/521de03e09c8fac65b192302521f3b5
b
Testes
Valorações Lógicas
(Naive) SAT Solver - DPLL
Antifragilidade
● Desenvolvedores de software não podem
se acomodar (na verdade, ninguém deve)
● Forma de me manter em contato com o
mercado
● Problemas Reais para pesquisa
● Plano B
Projetos
● Mais Ensino de Lógica
● Ecossistema de Elixir (Meetups, Fóruns,
Livros, Podcasts etc.)
● DPLL (SAT Solver) em Elixir
Elixir Jobs
FIM
Adolfo Neto
adolfo@utfpr.edu.br
Formulário para interessados em cursos
mais longos de Elixir:
http://bit.ly/AdolfoElixir

Contenu connexe

Tendances

Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
Janderson Campêlo
 

Tendances (20)

Python Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem PythonPython Módulo Básico - Introdução a linguagem Python
Python Módulo Básico - Introdução a linguagem Python
 
AulaPython.pdf
AulaPython.pdfAulaPython.pdf
AulaPython.pdf
 
Python WTFAQ?
Python WTFAQ?Python WTFAQ?
Python WTFAQ?
 
Python para iniciantes
Python para iniciantesPython para iniciantes
Python para iniciantes
 
prolog
prologprolog
prolog
 
A Linguagem Ruby
A Linguagem RubyA Linguagem Ruby
A Linguagem Ruby
 
Ruby
RubyRuby
Ruby
 
Trabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - PythonTrabalho de Paradigmas Da Linguagem De Programação - Python
Trabalho de Paradigmas Da Linguagem De Programação - Python
 
Paradigmas do Ruby
Paradigmas do RubyParadigmas do Ruby
Paradigmas do Ruby
 
Extreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe DelphiExtreme Experience 2018 | Python para quem sabe Delphi
Extreme Experience 2018 | Python para quem sabe Delphi
 
Ruby, Simples e Expressivo
Ruby, Simples e ExpressivoRuby, Simples e Expressivo
Ruby, Simples e Expressivo
 
Palestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas AplicaçõesPalestra Apresentando Python e Suas Aplicações
Palestra Apresentando Python e Suas Aplicações
 
Palestra BrOffice.org
Palestra BrOffice.orgPalestra BrOffice.org
Palestra BrOffice.org
 
Seminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem PythonSeminário - Guido van Rossum: Breve história da linguagem Python
Seminário - Guido van Rossum: Breve história da linguagem Python
 
Django Básico
Django BásicoDjango Básico
Django Básico
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.Paradigmas De Linguagem De Programação.
Paradigmas De Linguagem De Programação.
 
Ruby
RubyRuby
Ruby
 
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
Processo de Desenvolvimento de Software - Linguagens Imperativas x DeclarativasProcesso de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
 
Introdução a linguagem Python
Introdução a linguagem PythonIntrodução a linguagem Python
Introdução a linguagem Python
 

Similaire à Programando em Elixir

Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6
William Colen
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
AmlieOGalaxias
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
essa
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
essa
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
essa
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlang
elliando dias
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
Rafael Martins
 

Similaire à Programando em Elixir (20)

#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams#DNAD15  - Diminuindo sofrimento com código legado de linguagens não mainstreams
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreams
 
Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6Processamento Automático da Língua Portuguesa - Campus Party Br 6
Processamento Automático da Língua Portuguesa - Campus Party Br 6
 
Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14Engenharia de Software - Unimep/Pronatec - Aula 14
Engenharia de Software - Unimep/Pronatec - Aula 14
 
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
Uma linguagem para chamar de minha: Criando DSLs no dia a dia - QConRio2015
 
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdfsilo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
silo.tips_paradigmas-e-linguagens-de-programaao-prof-josino-rodrigues-neto.pdf
 
O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma ...
O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma ...O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma ...
O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma ...
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Linguagens de programação 03-12-09
Linguagens de programação   03-12-09Linguagens de programação   03-12-09
Linguagens de programação 03-12-09
 
Python for kids
Python for kidsPython for kids
Python for kids
 
Linguagen..
Linguagen..Linguagen..
Linguagen..
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 
Do alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as DiferençasDo alto para o baixo nível - Entendendo as Diferenças
Do alto para o baixo nível - Entendendo as Diferenças
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011Processamento Automático da Língua Portuguesa: DevInSampa 2011
Processamento Automático da Língua Portuguesa: DevInSampa 2011
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Sistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na PráticaSistemas de Processamento de Linguagem Natural na Prática
Sistemas de Processamento de Linguagem Natural na Prática
 
A linguagem de programação Erlang
A linguagem de programação ErlangA linguagem de programação Erlang
A linguagem de programação Erlang
 
Senid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan VilarimSenid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
Senid2014 - Oficina de LibreLogo - Prof. Gilvan Vilarim
 
LIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de AlgoritmosLIA - Linguagem Interpretada de Algoritmos
LIA - Linguagem Interpretada de Algoritmos
 
SFD - C# para a comunidade
SFD - C# para a comunidadeSFD - C# para a comunidade
SFD - C# para a comunidade
 

Plus de Adolfo Neto

Plus de Adolfo Neto (20)

How to clear out your unwanted books
How to clear out your unwanted booksHow to clear out your unwanted books
How to clear out your unwanted books
 
The Elixir programming language community
The Elixir programming language communityThe Elixir programming language community
The Elixir programming language community
 
Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no BrasilEncontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
Encontros de Usuários e Entusiastas de Métodos Ágeis no Brasil
 
Coding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre UnrealCoding Dojo - Unreal Engine - Sobre Unreal
Coding Dojo - Unreal Engine - Sobre Unreal
 
Coding Dojo - Unreal Engine
Coding Dojo - Unreal EngineCoding Dojo - Unreal Engine
Coding Dojo - Unreal Engine
 
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...Preocupações e Limitações no Desenvolvimento  Ágil de Software:  Um Levantame...
Preocupações e Limitações no Desenvolvimento Ágil de Software: Um Levantame...
 
Kanban
KanbanKanban
Kanban
 
Agile Methods, Week 4: Test-Driven Development
Agile Methods, Week 4: Test-Driven DevelopmentAgile Methods, Week 4: Test-Driven Development
Agile Methods, Week 4: Test-Driven Development
 
How do software developers learn new tricks
How do software developers learn new tricksHow do software developers learn new tricks
How do software developers learn new tricks
 
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
Applications of Probabilistic Logic to Materials Discovery: Solving problems ...
 
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
Coding Dojos para Aprendizagem de TDD - Há Evidências Científicas? - Ignite T...
 
Business intelligence
Business intelligenceBusiness intelligence
Business intelligence
 
Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...Cholesterol is not an important risk factor for heart disease and current die...
Cholesterol is not an important risk factor for heart disease and current die...
 
Quem foi Alan Turing?
Quem foi Alan Turing?Quem foi Alan Turing?
Quem foi Alan Turing?
 
Verificação de Programas
Verificação de ProgramasVerificação de Programas
Verificação de Programas
 
Especificação e Verificação de Programas
Especificação e Verificação de ProgramasEspecificação e Verificação de Programas
Especificação e Verificação de Programas
 
O método maffetone
O método maffetoneO método maffetone
O método maffetone
 
Métodos Ágeis
Métodos ÁgeisMétodos Ágeis
Métodos Ágeis
 
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de SoftwarePesquisa em Métodos Ágeis para o Desenvolvimento de Software
Pesquisa em Métodos Ágeis para o Desenvolvimento de Software
 
Introdução à Lógica
Introdução à LógicaIntrodução à Lógica
Introdução à Lógica
 

Programando em Elixir