SlideShare uma empresa Scribd logo
1 de 153
Baixar para ler offline
O case da Plataformatec
com o Elixir
como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro
2010 Thread-safe hell
2010 Thread-safe hell
2018 Elixir no mundo inteiro
Elixir meetups
Por que fazer uma
linguagem nova?
2010
2018
Thread-safe hell
Elixir no mundo inteiro
Como tomamos essa
decisão?
2010
2018
Thread-safe hell
Elixir no mundo inteiro
Como open source
ajudou?
2010
2018
Thread-safe hell
Elixir no mundo inteiro
“ Personagens”
dessa história
RODA NA ERLANG VM
OPEN SOURCE
FUNCIONAL
Desenvolvimento, consultoria e treinamento
para empresas digitais
Elixir
Especializada em
Ruby Agile
José Valim
Co-fundador da Plataformatec
Criador do Elixir
Vamos lá?
Hugo Baraúna
Co-fundador da Plataformatec
Engenheiro de computação
@hugobarauna
VAMOS LÁ!
POR QUE CRIAR UMA
LINGUAGEM NOVA?
Parte 1
2010 Thread-safe hell
Ruby on Rails 2.2
Por que thread-safe?
Algo maior
por trás
The free lunch is over
“The biggest sea change in software development since the OO revolution is knocking at the door”
http://www.gotw.ca/publications/concurrency-ddj.htm
Lei de Moore
“O número de transistors
em um chip dobra
a cada 2 anos”
E daí?
Performance free lunch
Por muitos anos, o avanço nas CPUs fazia
nosso software ficar mais rápido sem
fazermos nada”
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.
As CPUs pararam de evoluir?
Agora, as CPUs evoluem
de um modo diferente
Passado Presente e futuro
Clock speed Hyperthreading
Execution
optimization
Multicore
Cache Cache
Agora, as CPUs evoluem
de um modo diferente
Passado Presente e futuro
Clock speed Hyperthreading
Execution
optimization
Multicore
Cache Cache
If you want your application to benefit from the
continued exponential throughput advances in new
processors, it will need to be a well-written
concurrent (usually multithreaded) application
- Herb Sutter
“
Concurrency is the next major revolution in how we
write software
- Herb Sutter
“
Lei de Amdahl
Quanto menos concorrente for seu
código, menos velocidade ele
vai ganhar com mais cores
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?
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?
2010 Thread-safe hell
Ruby on Rails 2.2
Probably, the greatest cost of concurrency is that
concurrency really is hard
- Herb Sutter
“
E se concorrência fosse
fácil?
A BUSCA POR OUTRAS
TECNOLOGIAS
Parte 2
Todo mundo fala
Todo mundo faz
Concorrência
deveria ser mais fácil
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: 13 anos atrás
https://news.ycombinator.com/item?id=10096100
2015: 3 anos atrás
https://news.ycombinator.com/item?id=10096100
2015: 3 anos atrás
Quanto do código que você escreve hoje
é concorrente?
2018: hoje
O problema é o modelo de
threads e locks?
Seu código
Runtime da
linguagem
Sistema
operacional
CPU
Thread
Thread é uma
abstração de baixo
nível
Você está aqui
Seu código
Runtime da
linguagem
Sistema
operacional
CPU
Abstração nova
de concorrência
Precisamos de uma
nova abstração
Você está aqui
Vamos pesquisar outras tecnologias
Tecnologias que chamaram atenção
Clojure Haskell
Funcional
Imutabilidade: quando o estado não muda,
pode ser acessado por várias threads sem a
necessidade de locks (concorrência)
ClojureHaskell
Por que chamaram
atenção?
Abordagem moderna
Funcionalidades como polimorfismo 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
Funcional
Imutabilidade: quando o estado não muda,
pode ser acessado por várias threads sem a
necessidade de locks (concorrência)
ClojureHaskell
Por que chamaram
atenção?
Abordagem moderna
Funcionalidades como polimorfismo 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
Funcional
Imutabilidade: quando o estado não muda,
pode ser acessado por várias threads sem a
necessidade de locks (concorrência)
ClojureHaskell
Por que chamaram
atenção?
Abordagem moderna
Funcionalidades como polimorfismo 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
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 polimorfismo e meta-
programação
Distribuição e tolerância
a falha
Suporte nativo a software rodando em
múltiplas falhas e alta disponibilidade
{
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 polimorfismo e meta-
programação
Distribuição e tolerância
a falha
Suporte nativo a software rodando em
múltiplas falhas e alta disponibilidade
{
Por que a Erlang virtual machine?
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
{{
30+ anos de desenvolvimento
A Erlang VM é battle-tested
O DESENVOLVIMENTO
DO ELIXIR
Parte 3
2011
O primeiro protótipo
2011
Explorando o desenvolvimento de uma nova linguagem
Primeirocommit
2011
“Elixir” em abril de 2011
Modelo de “objetos”
Tinha um modelo de objetos baseado em protypes
Lento
Muito lento. Eval em todo lugar
Quebrando compatibilidade com a VM
Quebrou o hot code swapping do Erlang
2011
Explorando o desenvolvimento de uma nova linguagem
Valeda
desilusão
2011
Explorando o desenvolvimento de uma nova linguagem
Euconsigo!
2011
Explorando o desenvolvimento de uma nova linguagem
Nãoconsigo:(
Direcionadores
do Elixir
Repensando para onde o design da
linguagem deveria ir
Produtividade
Extensibilidade
Compatibilidade
2011
Estudando…
Explorando o desenvolvimento de uma nova linguagem
2011
Eureka!
Explorando o desenvolvimento de uma nova linguagem
2012
A decisão de investimento
e o lançamento do Elixir
2011
2012
Estou brincando em fazer
uma nova linguagem
Hum… conte-me mais
sobre isso…
2011
2012
Estava bem difícil ficar
corrigindo problemas de
concorrência no Rails
2011
2012
E existe esse negócio, o
“free lunch is over”
2011
2012
O futuro é programação
concorrente!
2011
2012
Então decidir tentar fazer
uma nova linguagem
2011
2012
Da hora! E aí?
2011
2012
E daí que acho que a
gente deveria investir meu
tempo full time nisso
2011
2012
Oh really? 🤔
2011
2012
E não tem outra
linguagem que faz o que tu
queres?
2011
2012
A que chega mais perto
do que pensei é Clojure. Ela
roda na JVM.
2011
2012
Acho que seria
bom ter uma opção de
linguagem em uma VM
diferente
2011
2012
E a VM do Erlang é
perfeita pro que imagino
para o futuro
2011
2012
Beleza, vamos nessa!
2011
2012
Fevereiro/2012
Criamos o logo e o site da linguagem
2012 - 2013
A incerteza e
o ponto de inflexão
2012 Lançamento do Elixir
2013 Isso vai funcionar?
2012 Lançamento do Elixir
Maio
2013
Dave Thomas anuncia seu livro
sobre Elixir
Ponto de inflexão
Dave Thomas começa a evangelizar Elixir
Signatário do manifesto
ágil
Fundador da Pragmatic
Programmers
Escreveu o primeiro livro
em inglês sobre Ruby
Dave thomas
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)
2013 - 2018
Do ponto de inflexão até hoje
2012 Lançamento do Elixir
Maio
2013
Criador do Erlang publica que
ficou animado com Elixir
Dave Thomas anuncia seu livro
sobre Elixir
Maio
2013
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
2013 Dave Thomas anuncia seu livro
sobre Elixir
Junho
2013
O’Reilly anuncia criação de livro
sobre Elixir
Criador do Erlang publica que
ficou animado com Elixir
2013
2013
Criador do Erlang publica que
ficou animado com Elixir
Primeira ElixirConf
O’Reilly anuncia criação de livro
sobre Elixir
2013
2014
2013 O’Reilly anuncia criação de livro
sobre Elixir
2014 Phoenix
Primeira ElixirConf2014
Phoenix,
web framework
for the new web
Primeira ElixirConf
~2015 Nerves
Phoenix2014
Software embarcado
com Elixir
2014
Phoenix
2016 GenStage e Flow
Nerves
2014
Data ingestion and
data processing with:
2015
Streaming
Concurrency
Back-pressure
Nerves
2016 Nosso primeiro cliente de Elixir!
GenStage e Flow
2015
1º retorno financeiro
para Plataformatec
2016
t2012 2013 2014 2015 2016
$$ $$ $$ $$ $$
$
GenStage e Flow
2016 Elixir sai na Gartner
Nosso primeiro cliente de Elixir!
2016
Elixir sai no mapa de
linguagens da Gartner
2016
IT Market Clock for
Programming Languages, 2016
GenStage e Flow
2018 Hoje
Nosso primeiro cliente de Elixir!
Como está o
ecossistema de Elixir
hoje?
2016
2016
6.400+ bibliotecas
https://hex.pm
25+ livros
https://github.com/sger/ElixirBooks#books
15+ conferências, 190+ meetups
https://www.meetup.com/topics/elixir-programming/https://elixirforum.com/t/elixir-events-conferences-in-2018/11245
ElixirConf USA
ElixirConf Europe
Elixir Brasil
Etc …
Conferências Meetups
Vagas de trabalho no mundo inteiro
http://plataformatec.com.br/elixir-radar/jobs
Empresas usando no mundo inteiro
https://elixir-companies.com
O poder do open source
Bibliotecas Meetups Livros
6400+ 190+ 25+ 15+
Conferências
O ecossistema Elixir em 2018
O Elixir é maior
que a Plataformatec
Começamos a comunidade.
Não somos donos dela.
Plataformatec ⊂ Elixir
POR QUE O ELIXIR
TEM CRESCIDO?
Parte 4
Na opinião do Hugo Baraúna
Por que o Elixir
tem crescido?
O que tem feito os desenvolvedores e
empresas adotarem Elixir
O futuro é concorrente
Te permite pensar diferente
Ferramental para diferentes
domínios
Concurrency is the next
major revolution in how
we write software
- Herb Sutter
The Free lunch is over, 2005
“
”
O “futuro de 2005” é hoje
A VM do Erlang foi projetada
para concorrência
O Elixir roda na VM do Erlang
Switch
Switch
Doing concurrency in Erlang or Elixir versus other
languages is a bit like doing branches
in Git vs Subversion. In subversion it was very
complicated to do - and I never did it. In Git it is a lot
easier and I do it all the time.
- Elixir, The next big language for the web
“
http://www.creativedeletion.com/2015/04/19/elixir_next_language.html
Concurrency is about a
great deal more than just
exploiting parallelism
“
”
RESPONSIVO
DISTRIBUÍDO
RESILIENTE
Usada de modo correto,
concorrência te ajuda a
fazer software:
Concorrência vai além de
paralelismo com multicore
{{
Responsive
Elastic
Message Driven
Resilient
Elastic
The system stays responsive under
varying workload
Message Driven
Reactive Systems rely on asynchronous
message-passing to establish a boundary
between components that ensures loose
coupling, isolation and location
transparency
Responsive
The system responds in a timely manner
if at all possible
Resilient
The system stays responsive in the face
of failure
Reactive manifesto
https://www.reactivemanifesto.org/
O Elixir/OTP suporta
o “reactive manifesto” de
forma nativa
Elastic Message Driven
ResilientResponsive
Elastic Message Driven
Resilient
Responsive
Responsive systems focus on
providing rapid and consistent
response times
“ This is microseconds, a fraction of a
milisecond, which is crazy fast.”
http://www.akitaonrails.com/2015/10/27/how-fast-is-elixir-phoenix
Elastic Message Driven
Resilient
Responsive
Responsive systems focus on
providing rapid and consistent
response times
O preemptive multitasking e o
garbage collection por processo do
Elixir/OTP permitem a entrega de um
response time previsível
Elastic Message Driven
Resilient
ResponsiveThe system stays responsive in the
face of failure. (…). Failures are
contained within each component,
(…) Recovery of each component is
delegated to another (external)
component (…)
Web Stats
Supervisor
• Em Elixir, todo código roda dentro de processos
• Processos são isolados um dos outros
• Processos rodam de modo concorrente
• Supervisor é um processo que supervisiona
outros processos
Elastic
Message Driven
ResilientResponsive
The system stays responsive
under varying workload. 
• Phoenix out of the box
• 2 milhões de conexões websocket simultâneas
• 0 timeouts
• 1 segundo para fazer brodcast
http://phoenixframework.org/blog/the-road-to-2-million-websocket-connections
Elastic
Message Driven
ResilientResponsive
Reactive Systems rely
on asynchronous message-
passing to establish a boundary
between components that ensures
loose coupling, isolation
and location transparency
No Elixir, message-passing é o modelo
padrão de comunicação entre
processos. É o “actor model”.
Elastic
Message Driven
ResilientResponsive
Reactive Systems rely
on asynchronous message-
passing to establish a boundary
between components that ensures
loose coupling, isolation
and location transparency
“When sending a message, it doesn’t
matter if the recipient process is on
the same node or on another node,
the VM will be able to deliver the
message in both cases”
https://elixir-lang.org/getting-started/mix-otp/distributed-tasks-and-configuration.html
Concorrência ajuda em development
não apenas em production
Tudo que você faz na sua máquina deveria usar
todos os cores. Bootar sua aplicação, compilar
código, resolver dependências, rodar os testes etc.
Até o seu relógio tem 2 cores. Concorrência não é
mais a exceção.
“
http://blog.plataformatec.com.br/2017/07/the-fallacies-of-web-application-performance/
Por que o Elixir
tem crescido?
O que tem feito os desenvolvedores e
empresas adotarem Elixir
O futuro é concorrente
Te permite pensar diferente
Ferramental para diferentes
domínios
Real-time web
Aplicações com UI rica e
real-time estão aumentando
a expectativa dos usuários
IoT
traz a necessidade
de monitoramento
real-time de múltiplos
devices
Channels
allow us to easily add soft-realtime features to our applications
https://medium.com/mint-digital/stateful-websockets-with-elixirs-genstage-a29eab420c0d
“Nanoservices” architecture
De “monolito concorrente” a sistema distribuído
Sequential
code
elixir
elixir
elixir
WebDB MailerStats
elixir
WebDB MailerStats
Sup
elixir
WebDB MailerStats
Sup
App
elixir
app2@localapp1@local
elixir
app2@10.0.1.2app1@10.0.1.1
elixir
http://blog.plataformatec.com.br/2015/06/elixir-in-times-of-microservices/
http://tjheeta.github.io/2016/12/16/dawn-of-the-microlith-monoservices-microservices-with-elixir
Por que o Elixir
tem crescido?
O que tem feito os desenvolvedores e
empresas adotarem Elixir
O futuro é concorrente
Te permite pensar diferente
Ferramental para diferentes
domínios
O Elixir tem ferramental
para diferentes
domínios técnicos
Web apps/Services, backend
for mobile and IoT devices
Embedded software
Data ingestion and data
processing (“medium data”)
GenStage
Flow
FINALIZANDO
Concurrency is the next major revolution in how we
write software
- Herb Sutter
“
Entendi, concorrência é bom para fazer software
reativo, com alta performance, escalável, distribuído,
que não cai etc.
- Alguém
“
Mas minha app é muito simples. Não preciso de tudo
isso. Não preciso de concorrência.
- Alguém
“
Sua app de hoje é muito
simples. E a app de amanhã?
Quais serão os requisitos da
app de amanhã?
The free lunch is over
O futuro é concorrente
Quero estar pronto para
construir o software do
futuro
Eu não sei, mas sei que:
{{Quais serão os requisitos do software
de amanhã?
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
O FUTURO É CONCORRENTE
“The free lunch is over”. Para se beneficiar da
evolução das CPUs, você precisa escrever software
concorrente.
CONCORRÊNCIA DEVERIA SER
USUAL
Criar uma ferramenta que permita que fazer
concorrência seja simples. Que nem o Git fez para
branches comparado com SVN.
Como uma empresa
decide criar uma
nova linguagem
ALAVANCAR UMA VM FEITA PARA
CONCORRÊNCIA
A VM do Erlang foi projetada para concorrência e é
uma tecnologia madura. Mais pessoas deveriam usá-
la.
“Connecting the dots”
VISÃO
Construir uma ferramenta que esteja alinhada com
uma tendência mundial: “the free lunch is over”
EXECUÇÃO E PERSISTÊNCIA
Demorou 5 anos até termos algum retorno financeiro
Como sair do nada
para uma
comunidade
mundial?
COMUNIDADE OPEN SOURCE
Não seria possível para Plataformatec sozinha
desenvolver o ecossistema inteiro
Você não precisa ser
grande para causar
um grande impacto
na indústria de
software
134k
180k
10k
55
OBRIGADO!

Mais conteúdo relacionado

Semelhante a O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro

Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisRogerio Fontes
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Fernando Henriques
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serioJaydson Gomes
 
Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Phil Calçado
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerGiovanni Kenji Shiroma
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Javaarmeniocardoso
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o MercadoJulio Monteiro
 
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çasWelington Sampaio
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funcionaRodrigo Serradura
 
Ruby, Rails e Diversão
Ruby, Rails e DiversãoRuby, Rails e Diversão
Ruby, Rails e DiversãoJulio Monteiro
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Luiz Aldabalde
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryLuan Campos
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sériosaspi2
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
 
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 14André Phillip Bertoletti
 

Semelhante a O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro (20)

Clean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everisClean code @rogeriofontes-techfriday-everis
Clean code @rogeriofontes-techfriday-everis
 
Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software Como Rails e DHH revolucionaram a engenharia de software
Como Rails e DHH revolucionaram a engenharia de software
 
Javascript levado a serio
Javascript levado a serioJavascript levado a serio
Javascript levado a serio
 
Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005Além do Java - Maratona4Java 2005
Além do Java - Maratona4Java 2005
 
Criando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & DockerCriando Webservice REST com NodeJS, NoSQL & Docker
Criando Webservice REST com NodeJS, NoSQL & Docker
 
Guia para o Profissional Java
Guia para o Profissional JavaGuia para o Profissional Java
Guia para o Profissional Java
 
Ruby on Rails e o Mercado
Ruby on Rails e o MercadoRuby on Rails e o Mercado
Ruby on Rails e o Mercado
 
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
 
Programação funcional que funciona
Programação funcional que funcionaProgramação funcional que funciona
Programação funcional que funciona
 
Ruby, Rails e Diversão
Ruby, Rails e DiversãoRuby, Rails e Diversão
Ruby, Rails e Diversão
 
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsJava script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.js
 
Ruby
RubyRuby
Ruby
 
Palestra OSCON 2011
Palestra OSCON 2011Palestra OSCON 2011
Palestra OSCON 2011
 
Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011Python Mini Ccurso Consegi2011
Python Mini Ccurso Consegi2011
 
Tutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jqueryTutorial java script orientado à objeto e jquery
Tutorial java script orientado à objeto e jquery
 
Javascript levado a sério
Javascript levado a sérioJavascript levado a sério
Javascript levado a sério
 
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorPorque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhor
 
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
 
Isc aula 7
Isc   aula 7Isc   aula 7
Isc aula 7
 
Imergindo na JVM
Imergindo na JVMImergindo na JVM
Imergindo na JVM
 

O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro