Slide 1

Slide 1 text

A história por trás da criação do Elixir como um brasileiro criou uma linguagem que é usada no mundo inteiro

Slide 2

Slide 2 text

2010 Thread-safe hell

Slide 3

Slide 3 text

2010 Thread-safe hell 2024 Elixir no mundo inteiro

Slide 4

Slide 4 text

Por que fazer uma linguagem nova? 2010 2024 Thread-safe hell Elixir no mundo inteiro

Slide 5

Slide 5 text

Como tomamos essa decisão? 2010 2024 Thread-safe hell Elixir no mundo inteiro

Slide 6

Slide 6 text

Como open source ajudou? 2010 2024 Thread-safe hell Elixir no mundo inteiro

Slide 7

Slide 7 text

“ Personagens” dessa história

Slide 8

Slide 8 text

RODA NA ERLANG VM OPEN SOURCE FUNCIONAL

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

José Valim • Co-fundador da Plataformatec • Criador do Elixir • Chief Adoption of fi cer da Dashbit

Slide 11

Slide 11 text

Hugo Baraúna • Co-fundador Plataformatec • Engenheiro de computação • Dev advocate do Livebook @hugobarauna

Slide 12

Slide 12 text

Vamos lá?

Slide 13

Slide 13 text

POR QUE CRIAR UMA LINGUAGEM NOVA? Parte 1

Slide 14

Slide 14 text

2010 Thread-safe hell Ruby on Rails 2.2

Slide 15

Slide 15 text

Por que thread-safe? Algo maior por trás

Slide 16

Slide 16 text

The free lunch is over “The biggest sea change in software development since the OO revolution is knocking at the door”

Slide 17

Slide 17 text

http://www.gotw.ca/publications/concurrency-ddj.htm

Slide 18

Slide 18 text

Lei de Moore “O número de transistors em um chip dobra a cada 2 anos”

Slide 19

Slide 19 text

E daí? Performance free lunch Por muitos anos, o avanço nas CPUs fazia nosso software fi car mais rápido sem fazermos nada”

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

As CPUs pararam de evoluir?

Slide 22

Slide 22 text

As CPUs começaram a evoluir de um modo diferente Antes Depois Clock speed Hyperthreading Execution optimization Multicore Cache Cache

Slide 23

Slide 23 text

Antes Depois Clock speed Hyperthreading Execution optimization Multicore Cache Cache As CPUs começaram a evoluir de um modo diferente

Slide 24

Slide 24 text

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 “

Slide 25

Slide 25 text

Concurrency is the next major revolution in how we write software - Herb Sutter “

Slide 26

Slide 26 text

Lei de Amdahl Quanto menos paralelizável for seu código, menos velocidade ele vai ganhar com mais cores

Slide 27

Slide 27 text

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?

Slide 28

Slide 28 text

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?

Slide 29

Slide 29 text

Probably, the greatest cost of concurrency is that concurrency really is hard - Herb Sutter “

Slide 30

Slide 30 text

E se concorrência fosse fácil?

Slide 31

Slide 31 text

A BUSCA POR OUTRAS TECNOLOGIAS Parte 2

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

https://news.ycombinator.com/item?id=10096100 2015: 9 anos atrás

Slide 34

Slide 34 text

https://news.ycombinator.com/item?id=10096100 2015: 9 anos atrás

Slide 35

Slide 35 text

Quanto do código que você escreve hoje é concorrente? 2024: hoje

Slide 36

Slide 36 text

O problema é a primitiva de concorrência que estamos usando?

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

Seu código Runtime da linguagem Sistema operacional CPU Abstração nova de concorrência Precisamos de uma nova abstração Você está aqui

Slide 39

Slide 39 text

Vamos pesquisar outras tecnologias

Slide 40

Slide 40 text

No content

Slide 41

Slide 41 text

Tecnologias que chamaram atenção Clojure Haskell

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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 {

Slide 46

Slide 46 text

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 {

Slide 47

Slide 47 text

Por que a Erlang virtual machine?

Slide 48

Slide 48 text

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. { {

Slide 49

Slide 49 text

30+ anos de desenvolvimento A Erlang VM é battle-tested

Slide 50

Slide 50 text

O DESENVOLVIMENTO DO ELIXIR Parte 3

Slide 51

Slide 51 text

2011 O primeiro protótipo

Slide 52

Slide 52 text

2011 Explorando o desenvolvimento de uma nova linguagem Primeiro

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

2011 Explorando o desenvolvimento de uma nova linguagem Vale da desilusão

Slide 55

Slide 55 text

2011 Explorando o desenvolvimento de uma nova linguagem Eu consigo!

Slide 56

Slide 56 text

2011 Explorando o desenvolvimento de uma nova linguagem Não consigo :(

Slide 57

Slide 57 text

No content

Slide 58

Slide 58 text

Direcionadores do Elixir Repensando para onde o design da linguagem deveria ir Produtividade Extensibilidade Compatibilidade

Slide 59

Slide 59 text

2011 Estudando… Explorando o desenvolvimento de uma nova linguagem

Slide 60

Slide 60 text

2011 Eureka! Explorando o desenvolvimento de uma nova linguagem

Slide 61

Slide 61 text

2012 A decisão de investimento e o lançamento do Elixir

Slide 62

Slide 62 text

2011 2012 Estou brincando em fazer uma nova linguagem

Slide 63

Slide 63 text

Hum… conte-me mais sobre isso… 2011 2012

Slide 64

Slide 64 text

Estava bem difícil fi car corrigindo problemas de concorrência no Rails 2011 2012

Slide 65

Slide 65 text

E existe esse negócio, o “free lunch is over” 2011 2012

Slide 66

Slide 66 text

O futuro é programação concorrente! 2011 2012

Slide 67

Slide 67 text

Então decidir tentar fazer uma nova linguagem 2011 2012

Slide 68

Slide 68 text

Da hora! E aí? 2011 2012

Slide 69

Slide 69 text

E daí que acho que a gente deveria investir meu tempo full time nisso 2011 2012

Slide 70

Slide 70 text

Oh really? 🤔 2011 2012

Slide 71

Slide 71 text

E não tem outra linguagem que faz o que tu queres? 2011 2012

Slide 72

Slide 72 text

A que chega mais perto do que pensei é Clojure. Ela roda na JVM. 2011 2012

Slide 73

Slide 73 text

Acho que seria bom ter uma opção de linguagem em uma VM diferente 2011 2012

Slide 74

Slide 74 text

E a VM do Erlang é perfeita pro que imagino para o futuro 2011 2012

Slide 75

Slide 75 text

Beleza, vamos nessa! 2011 2012

Slide 76

Slide 76 text

Fevereiro/2012 Criamos o logo e o site da linguagem

Slide 77

Slide 77 text

2012 - 2013 A incerteza e o ponto de in fl exão

Slide 78

Slide 78 text

2012 Lançamento do Elixir 2013 Isso vai funcionar?

Slide 79

Slide 79 text

2012 Lançamento do Elixir Maio 2013 Dave Thomas anuncia seu livro sobre Elixir

Slide 80

Slide 80 text

Ponto de in fl exão Dave Thomas começa a evangelizar Elixir

Slide 81

Slide 81 text

Signatário do manifesto ágil Fundador da Pragmatic Programmers Escreveu o primeiro livro em inglês sobre Ruby Dave thomas

Slide 82

Slide 82 text

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)

Slide 83

Slide 83 text

2013 - 2024 Do ponto de in fl exão até hoje

Slide 84

Slide 84 text

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

Slide 85

Slide 85 text

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

Slide 86

Slide 86 text

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

Slide 87

Slide 87 text

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

Slide 88

Slide 88 text

2013 O’Reilly anuncia criação de livro sobre Elixir 2014 Phoenix Primeira ElixirConf 2014 Web framework

Slide 89

Slide 89 text

Primeira ElixirConf ~2015 Nerves Phoenix 2014 Software embarcado 2014 Nerves

Slide 90

Slide 90 text

Phoenix 2016 GenStage e Flow Nerves 2014 Ingestão e processamento de dados 2015 Streaming Concurrency Back-pressure

Slide 91

Slide 91 text

Nerves 2016 Nosso primeiro cliente de Elixir! GenStage e Flow 2015 1º retorno fi nanceiro para Plataformatec 2016 t 2012 2013 2014 2015 2016 $$ $$ $$ $$ $$ $

Slide 92

Slide 92 text

Nerves 2018 Membrane GenStage e Flow 2015 Processamento multimedia 2016

Slide 93

Slide 93 text

GenStage e Flow 2019 Broadway Membrane 2016 Pipeline de dados 2018

Slide 94

Slide 94 text

Membrane 2019 LiveView Broadway 2018 Simple Rich & Realtime Web 2019 LiveView

Slide 95

Slide 95 text

Broadway 2021 Nx LiveView 2019 Elixir compilando para GPU 2019

Slide 96

Slide 96 text

LiveView 2021 Livebook Nx 2019 Code notebooks 2021

Slide 97

Slide 97 text

Nx 2022 Axon Livebook 2021 Deep Learning 2021

Slide 98

Slide 98 text

Livebook 2022 Explorer Axon 2021 DataFrames 2022

Slide 99

Slide 99 text

Axon 2022 Bumblebee Explorer 2022 Modelos pre-treinados 2022

Slide 100

Slide 100 text

Import Tidy Transform Visualize Model Communicate Bumblebe Elixir stack para Data Science e Machine Learning

Slide 101

Slide 101 text

2024 Hoje Como está o ecossistema de Elixir hoje?

Slide 102

Slide 102 text

19.900+ bibliotecas https://hex.pm

Slide 103

Slide 103 text

40+ livros https://github.com/sger/ElixirBooks#books

Slide 104

Slide 104 text

Conferências e meetups no mundo inteiro ElixirConf USA ElixirConf Europe Etc … Conferências Meetups

Slide 105

Slide 105 text

Utilizado em múltiplos domínios técnicos Web Embarcado Processamento de dados Processamento Multimedia Machine Learning Data Science

Slide 106

Slide 106 text

O poder do open source Bibliotecas 19.900+ Meetups 140+ Livros 40+ O ecossistema Elixir em 2024

Slide 107

Slide 107 text

FINALIZANDO

Slide 108

Slide 108 text

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

Slide 109

Slide 109 text

Você não precisa ser grande para causar um grande impacto na indústria de software 134k 180k 10k 70

Slide 110

Slide 110 text

OBRIGADO! @hugobarauna