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

A história por trás da criação do Elixir

A história por trás da criação do Elixir

Apresentei esta palestra na GambiConf 2024.

Nesta palestra vamos aprender sobre a história da criação do Elixir, uma linguagem de programação brasileira usada no mundo inteiro.

Hugo Baraúna

November 04, 2024
Tweet

More Decks by Hugo Baraúna

Other Decks in Programming

Transcript

  1. A história por trás da criação do Elixir como um

    brasileiro criou uma linguagem que é usada no mundo inteiro
  2. The free lunch is over “The biggest sea change in

    software development since the OO revolution is knocking at the door”
  3. E daí? Performance free lunch Por muitos anos, o avanço

    nas CPUs fazia nosso software fi car mais rápido sem fazermos nada”
  4. Free lunch is over A partir de ~2003, o clock

    speed parou de crescer como antes. Se não fosse assim, hoje seria normal termos CPUs de 10 GHz.
  5. As CPUs começaram a evoluir de um modo diferente Antes

    Depois Clock speed Hyperthreading Execution optimization Multicore Cache Cache
  6. If you want your application to bene fi t from

    the continued exponential throughput advances in new processors, it will need to be a well-written concurrent (usually multithreaded) application - Herb Sutter “
  7. Lei de Amdahl Quanto menos paralelizável for seu código, menos

    velocidade ele vai ganhar com mais cores
  8. Tirar mais benefício da evolução de multicore usando mais concorrência?

    Tirar menos benefício da evolução de multicore usando menos concorrência?
  9. Tirar mais benefício da evolução de multicore usando mais concorrência!

    Tirar menos benefício da evolução de multicore usando menos concorrência?
  10. The vast majority of programmers today don’t grok concurrency, just

    as the vast majority of programmers 15 years ago didn’t yet grok objects - Herb Sutter “ 2005: 19 anos atrás
  11. Seu código Runtime da linguagem Sistema operacional CPU Thread Thread

    é uma abstração de baixo nível Você está aqui
  12. Seu código Runtime da linguagem Sistema operacional CPU Abstração nova

    de concorrência Precisamos de uma nova abstração Você está aqui
  13. Funcional Imutabilidade: quando o estado não muda, pode ser acessado

    por várias threads sem a necessidade de locks (concorrência) Clojure Haskell Por que chamaram atenção? Abordagem moderna Funcionalidades como polimor f i Distribuição e tolerância a falha Suporte nativo a software rodando em múltiplas máquinas e com alta disponibilidade
  14. Funcional Imutabilidade: quando o estado não muda, pode ser acessado

    por várias threads sem a necessidade de locks (concorrência) Clojure Haskell Por que chamaram atenção? Abordagem moderna Funcionalidades como polimor f i Distribuição e tolerância a falha Suporte nativo a software rodando em múltiplas máquinas e com alta disponibilidade
  15. Funcional Imutabilidade: quando o estado não muda, pode ser acessado

    por várias threads sem a necessidade de locks (concorrência) Clojure Haskell Por que chamaram atenção? Abordagem moderna Funcionalidades como polimor fi smo e meta- programação Distribuição e tolerância a falha Suporte nativo a software rodando em múltiplas máquinas e com alta disponibilidade
  16. Funcional Imutabilidade: quando o estado não muda, pode ser acessado

    por várias threads sem a necessidade de locks (concorrência) Abordagem moderna Funcionalidades como polimor fi smo e meta- programação Distribuição e tolerância a falha Suporte nativo a software rodando em múltiplas falhas e alta disponibilidade {
  17. Funcional Imutabilidade: quando o estado não muda, pode ser acessado

    por várias threads sem a necessidade de locks (concorrência) Abordagem moderna Funcionalidades como polimor fi smo e meta- programação Distribuição e tolerância a falha Suporte nativo a software rodando em múltiplas falhas e alta disponibilidade {
  18. CONCORRÊNCIA DISTRIBUIÇÃO TOLERÂNCIA A FALHA A Erlang VM foi construída

    pensando em: Concorrência, distribuição e tolerância a falhas são nativas, baseados em primitivas da VM, ao invés de em bibliotecas externas. { {
  19. 2011 “Elixir” em abril de 2011 Modelo de “objetos” Tinha

    um modelo de objetos baseado em prototypes Lento Muito lento. Eval em todo lugar Quebrando compatibilidade com a VM Quebrou o hot code swapping do Erlang
  20. Direcionadores do Elixir Repensando para onde o design da linguagem

    deveria ir Produtividade Extensibilidade Compatibilidade
  21. E daí que acho que a gente deveria investir meu

    tempo full time nisso 2011 2012
  22. Signatário do manifesto ágil Fundador da Pragmatic Programmers Escreveu o

    primeiro livro em inglês sobre Ruby Dave thomas
  23. Jan/12 Feb/12 M ar/12 Apr/12 M ay/12 Jun/12 Jul/12 Aug/12

    Sep/12 O ct/12 N ov/12 Dec/12 Jan/13 Feb/13 M ar/13 Apr/13 M ay/13 Jun/13 Jul/13 Aug/13 Pageviews do elixir-lang.org (efeito Dave Thomas)
  24. 2012 Lançamento do Elixir Maio 2013 Criador do Erlang publica

    que fi cou animado com Elixir Dave Thomas anuncia seu livro sobre Elixir Maio 2013
  25. It didn’t take long, but pretty soon my gut feeling

    kicked in. This is good shit. - Joe Armstrong, creator of Erlang A week with Elixir “ ” https://joearms.github.io/published/2013-05-31-a-week-with-elixir.html
  26. 2013 Dave Thomas anuncia seu livro sobre Elixir Junho 2013

    O’Reilly anuncia criação de livro sobre Elixir Criador do Erlang publica que fi cou animado com Elixir 2013
  27. 2013 Criador do Erlang publica que fi cou animado com

    Elixir Primeira ElixirConf O’Reilly anuncia criação de livro sobre Elixir 2013 2014
  28. Phoenix 2016 GenStage e Flow Nerves 2014 Ingestão e processamento

    de dados 2015 Streaming Concurrency Back-pressure
  29. Nerves 2016 Nosso primeiro cliente de Elixir! GenStage e Flow

    2015 1º retorno fi nanceiro para Plataformatec 2016 t 2012 2013 2014 2015 2016 $$ $$ $$ $$ $$ $
  30. Utilizado em múltiplos domínios técnicos Web Embarcado Processamento de dados

    Processamento Multimedia Machine Learning Data Science
  31. Pontos-chave Como uma empresa decide criar uma nova linguagem? Como

    sair do nada para uma comunidade mundial? Você não precisa ser grande para causar um grande impacto
  32. Você não precisa ser grande para causar um grande impacto

    na indústria de software 134k 180k 10k 70