Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Programando em Elixir

325 views

Published on

Palestra para a Semana Technológica 2017 na UTFPR Curitiba

Published in: Software
  • Be the first to comment

Programando em Elixir

  1. 1. Programando em Adolfo Neto (PPGCA-DAINF-UTFPR) @adolfont bit.ly/adolfontEn
  2. 2. 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
  3. 3. 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)
  4. 4. Roteiro ● Em quais linguagens… ● Linguagens mais usadas ● FizzBuzz ● José Valim ● Linguagens brasileiras ● Dave Thomas ● Características de Elixir
  5. 5. 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
  6. 6. Em quais linguagens de programação você já programou? No mínimo um programa de umas 50 linhas
  7. 7. 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?
  8. 8. Linguagens mais usadas
  9. 9. 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)
  10. 10. 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
  11. 11. Fizz Buzz https://www.forbes.com/sites/kevinknudson/2016/08/25/fizzbuzz-party-games-meet -coding/#1a1b73dd59c2
  12. 12. 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
  13. 13. FizzBuzz em Java e em Elixir Estética
  14. 14. 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
  15. 15. Fizz Buzz em Elixir https://www.leighhalliday.com/fizzbuzz-in-elixi r
  16. 16. Criador do Elixir
  17. 17. José Valim
  18. 18. José Valim
  19. 19. José Valim Co-founder
  20. 20. Linguagens Brasileiras
  21. 21. Como uma linguagem de um país de terceiro mundo fica famosa?
  22. 22. Dave Thomas
  23. 23. Dave Thomas
  24. 24. Dave Thomas
  25. 25. 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.
  26. 26. 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).”
  27. 27. Características de Elixir “Elixir is a functional, concurrent, general-purpose programming language that runs on the Erlang virtual machine (BEAM).” (WIKIPEDIA)
  28. 28. 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
  29. 29. Casamento de Padrões
  30. 30. Erlang ● Criada na Ericsson ● Erlang VM: − Pequenos processos concorrentes − Processos trocam mensagens − Tolerante a falhas − Joe Armstrong, Robert Virding, and Mike Williams ● WhatsApp
  31. 31. FizzBuzz com processos
  32. 32. 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”.
  33. 33. iex – Interactive Elixir
  34. 34. Livro que inspirou a criação de Elixir
  35. 35. Seven Languages in Seven Weeks 2010
  36. 36. Seven Languages in Seven Weeks ● Prolog ● Clojure ● Haskell ● Scala ● Erlang ● Ruby ● Io
  37. 37. 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)
  38. 38. Erlang
  39. 39. Erlang
  40. 40. Erlang
  41. 41. Por que criar Elixir?
  42. 42. Elixir
  43. 43. Seven More Languages...
  44. 44. Seven More Languages... ● Elixir ● Lua ● ...
  45. 45. 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.
  46. 46. Como Aprender Mais?
  47. 47. Palestras Meetups Coding Dojos Eventos (ex.: ElixirConf)
  48. 48. Livros De preferência, em papel
  49. 49. 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/
  50. 50. Screencasts Elixir Sips, LearnElixir.tv Palestras Gravadas Youtube
  51. 51. MOOCs
  52. 52. Cursos em Vídeo
  53. 53. Sites ● Site da linguagem ● Elixir Forum ● Try Elixir http://tryelixir.online/ ● Stack Overflow ● Reddit ● … Outros
  54. 54. Esqueci de algo?
  55. 55. Qual meio você gosta de usar para aprender programação? - Palestras presenciais - Meetups - Coding Dojos - Eventos - Livros - Podcasts - Screencasts - Palestras gravadas - MOOCs - Sites - Outros
  56. 56. O que tenho feito?
  57. 57. Investindo tempo
  58. 58. Usando com alunos de Lógica https://gist.github.com/adolfont/521de03e09c8fac65b192302521f3b5 b
  59. 59. Testes
  60. 60. Valorações Lógicas
  61. 61. (Naive) SAT Solver - DPLL
  62. 62. 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
  63. 63. Projetos ● Mais Ensino de Lógica ● Ecossistema de Elixir (Meetups, Fóruns, Livros, Podcasts etc.) ● DPLL (SAT Solver) em Elixir
  64. 64. Elixir Jobs
  65. 65. FIM Adolfo Neto adolfo@utfpr.edu.br Formulário para interessados em cursos mais longos de Elixir: http://bit.ly/AdolfoElixir

×