Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Além da programação funcional com Elixir e Erlang

Além da programação funcional com Elixir e Erlang

Elaine Naomi

August 29, 2019
Tweet

More Decks by Elaine Naomi

Other Decks in Programming

Transcript

  1. num passado não tão distante Python ~ 6 meses Java

    ~ 1 ano C++ ~ 1 ano PHP ~ 3 anos
  2. ...

  3. ...

  4. ...

  5. ElixirConf 2018 - Erlang OTP What's in the Box -

    João Britto youtube.com/watch?v=CozSfI-Zepw
  6. ...

  7. web

  8. ...

  9. Free lunch O software ficava mais rápido com o avanço

    das CPUs Não era necessário fazer nada além de atualizar o hardware
  10. Free lunch is over A partir de ~2003, o clock

    speed parou de crescer como antes. Se continuasse, seria comum ter CPUs com 10GHz, por ex. Em 2005, surgiu o primeiro processador dual-core
  11. $ erl Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]

    [hipe] Eshell V10.4.3 (abort with ^G) 1> c(hello). {ok,hello} 2> hello:world(). Hello, world ok ERLANG
  12. $ iex Erlang/OTP 22 [erts-10.4.3] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:1]

    [hipe] Interactive Elixir (1.8.2) - press Ctrl+C to exit (type h() ENTER for help) iex(1)> # copia e cola o código iex(2)> Hello.world Hello, world :ok ELIXIR
  13. Até seu relógio tem mais de um processador. concorrência não

    é mais a exceção, é regra. blog.plataformatec.com.br/2017/07/the-fallacies-of-web-application-performance/ 2017
  14. Até seu relógio tem mais de um processador. Concorrência não

    é mais a exceção, é regra. blog.plataformatec.com.br/2017/07/the-fallacies-of-web-application-performance/ 2017
  15. class Counter def initialize @count = 0 end def increment

    @count = @count + 1 end end c = Counter.new c.increment # @count = 1 c.increment # @count = 2 c.increment # @count = 3 OOP
  16. defmodule Counter do def increment(count) do count + 1 end

    end Counter.increment(1) # 2 Counter.increment(1) # 2 Counter.increment(1) # 2 Pure FP
  17. case {:error, "Invalid credit card"} do {:ok, result} -> result

    {:error} -> "Oh no!" _ -> "Catch all" end
  18. case {:error, "Invalid credit card"} do {:ok, result} -> result

    {:error} -> "Oh no!" _ -> "Catch all" end
  19. case {:error, "Invalid credit card"} do {:ok, result} -> result

    {:error} -> "Oh no!" _ -> "Catch all" end
  20. GOTO 2018 - Functional Programming in 40 Minutes - Russ

    Olsen youtube.com/watch?v=0if71HOyVjY
  21. ...

  22. ...

  23. ...

  24. ...

  25. ...

  26. ...

  27. Como uma empresa brasileira criou uma linguagem que é usada

    no mundo inteiro. O case da Plataformatec com o Elixir - Hugo Baraúna infoq.com/br/presentations/como-uma-empresa-brasileira-criou-uma-linguagem-que-e-usada- no-mundo-inteiro/ RubyElixirConfTaiwan 2018: Idioms for building distributed fault-tolerant applications with Elixir- José Valim youtube.com/watch?v=01UB1DaX1Uc Como concorrência funciona em Elixir? - Amanda Sposito en.eventials.com/locaweb/como-concorrencia-funciona-em-elixir-com-amanda-sposito/
  28. Software Verification - José Valim en.eventials.com/locaweb/software-verification-com-jose-valim/ GOTO 2018 - SOLID

    Elixir - Georgina McFadyen youtube.com/watch?v=rmftOs2BzgU GOTO 2018 - The Do's and Don'ts of Error Handling - Joe Armstrong youtube.com/watch?v=TTM_b7EJg5E RailsConf 2014 - All the Little Things by Sandi Metz youtube.com/watch?v=8bZh5LMaSmE
  29. Mocks and explicit contracts - José Valim blog.plataformatec.com.br/2015/10/mocks-and-explicit-contracts/ Elixir, processos

    e esse tal de OTP - Amanda Sposito blog.plataformatec.com.br/2018/04/elixir-processos-e-esse-tal-de-otp/ Starting with Elixir, the Study Guide - Rafael Rocha blog.plataformatec.com.br/2018/11/starting-with-elixir-the-study-guide/ Tail Call Optimization: The Musical!! - Anjana Vakil & Natalia Margolis youtube.com/watch?v=-PX0BV9hGZY
  30. ...