O documento descreve a história da criação da linguagem de programação Elixir pela empresa brasileira Plataformatec. Resume as principais ideias em 3 frases:
1) A Plataformatec criou o Elixir em 2011 para facilitar a programação concorrente em resposta aos desafios de escalabilidade do Ruby on Rails e da evolução das CPUs multicore.
2) O Elixir cresceu rapidamente após seu lançamento em 2012, impulsionado pelo apoio de figuras como o criador da linguagem Erlang e o autor Dave Thomas, e pela
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!André Espeiorin
O documento discute como o open source e o proprietário podem coexistir de forma positiva. Ele explora mitos sobre open source no mundo empresarial e entre desenvolvedores, e como a era pós-PC criou novas oportunidades. Áreas comuns de open source incluem desenvolvimento web e mobile, além de frameworks e soluções de problemas. Empresas que adotam e contribuem para o open source podem ter sucesso.
Este documento discute as linguagens funcionais Erlang e Elixir. Erlang foi criada para atender requisitos como alta concorrência, tolerância a falhas e alta disponibilidade. Elixir oferece a mesma máquina virtual de Erlang com uma sintaxe mais amigável. Ambas as linguagens usam passagem de mensagens em vez de estado compartilhado para lidar com concorrência, tornando-as adequadas para sistemas que precisam atender milhares de usuários simultâneos.
Além da programação funcional com Elixir e ErlangElaine Naomi
Elaine Naomi Watanabe compartilha sua jornada de aprendizado de novas linguagens de programação ao longo dos anos, com foco recente em Elixir. Ela descreve brevemente suas experiências com linguagens como Python, Java, C++ e PHP, e atualmente tem se dedicado a Elixir e Ruby. O documento então detalha os principais pontos sobre Elixir, incluindo sua herança de Erlang, processos, concorrência, tolerância a falhas e produtividade.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
1. O documento discute como trabalhar com sistemas legados desenvolvidos em linguagens não mainstream como Perl, abordando conceitos como o que é legado e como melhorar a manutenção de códigos antigos.
2. É explicado que legado não significa necessariamente código ruim e que linguagens mais antigas podem ter boas práticas e comunidades ativas de desenvolvedores.
3. São dados conselhos como documentar tudo, escrever testes, usar frameworks existentes em vez de reinventar a roda, e manter uma mente aberta.
O documento discute a linguagem de programação Elixir. Apresenta o palestrante Adolfo Neto e seu trabalho com Elixir, incluindo ensinar lógica para computação usando Elixir. Também discute como aprender mais sobre Elixir, projetos com a linguagem e empregos em Elixir.
O documento discute o ecossistema .NET e a linguagem C# de programação. Ele descreve as vantagens da tipagem estática, inferência de tipos, LINQ e outras funcionalidades do C#. Também aborda os custos, oportunidades de mercado e desafios em torno da comunidade e código aberto. O autor argumenta que vale a pena apostar no .NET/C# devido à sua constante evolução e capacidade de atender às demandas atuais e futuras do mercado.
O documento discute Ruby e Ruby on Rails. Apresenta Ruby como uma linguagem de programação orientada a objetos, interpretada e livre. Destaca que Ruby on Rails é um framework MVC para desenvolvimento web que permite construir aplicações com poucas linhas de código. O autor ensina Ruby on Rails através de um exemplo prático de construção de um sistema de cadastro de CDs e categorias.
O documento discute as principais linguagens de programação, incluindo Python, JavaScript, Java, C++, C#, Swift, TypeScript, Kotlin, Go e Rust. Cada linguagem é descrita brevemente com seus usos, paradigmas, mercado e frameworks populares. O documento conclui que escolher a linguagem certa para cada projeto é importante e deve ser baseado nas necessidades do projeto e preferências da equipe.
Quebrando o Orgulho! Open Source e Proprietário dão certo juntos sim!!André Espeiorin
O documento discute como o open source e o proprietário podem coexistir de forma positiva. Ele explora mitos sobre open source no mundo empresarial e entre desenvolvedores, e como a era pós-PC criou novas oportunidades. Áreas comuns de open source incluem desenvolvimento web e mobile, além de frameworks e soluções de problemas. Empresas que adotam e contribuem para o open source podem ter sucesso.
Este documento discute as linguagens funcionais Erlang e Elixir. Erlang foi criada para atender requisitos como alta concorrência, tolerância a falhas e alta disponibilidade. Elixir oferece a mesma máquina virtual de Erlang com uma sintaxe mais amigável. Ambas as linguagens usam passagem de mensagens em vez de estado compartilhado para lidar com concorrência, tornando-as adequadas para sistemas que precisam atender milhares de usuários simultâneos.
Além da programação funcional com Elixir e ErlangElaine Naomi
Elaine Naomi Watanabe compartilha sua jornada de aprendizado de novas linguagens de programação ao longo dos anos, com foco recente em Elixir. Ela descreve brevemente suas experiências com linguagens como Python, Java, C++ e PHP, e atualmente tem se dedicado a Elixir e Ruby. O documento então detalha os principais pontos sobre Elixir, incluindo sua herança de Erlang, processos, concorrência, tolerância a falhas e produtividade.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
1. O documento discute como trabalhar com sistemas legados desenvolvidos em linguagens não mainstream como Perl, abordando conceitos como o que é legado e como melhorar a manutenção de códigos antigos.
2. É explicado que legado não significa necessariamente código ruim e que linguagens mais antigas podem ter boas práticas e comunidades ativas de desenvolvedores.
3. São dados conselhos como documentar tudo, escrever testes, usar frameworks existentes em vez de reinventar a roda, e manter uma mente aberta.
O documento discute a linguagem de programação Elixir. Apresenta o palestrante Adolfo Neto e seu trabalho com Elixir, incluindo ensinar lógica para computação usando Elixir. Também discute como aprender mais sobre Elixir, projetos com a linguagem e empregos em Elixir.
O documento discute o ecossistema .NET e a linguagem C# de programação. Ele descreve as vantagens da tipagem estática, inferência de tipos, LINQ e outras funcionalidades do C#. Também aborda os custos, oportunidades de mercado e desafios em torno da comunidade e código aberto. O autor argumenta que vale a pena apostar no .NET/C# devido à sua constante evolução e capacidade de atender às demandas atuais e futuras do mercado.
O documento discute Ruby e Ruby on Rails. Apresenta Ruby como uma linguagem de programação orientada a objetos, interpretada e livre. Destaca que Ruby on Rails é um framework MVC para desenvolvimento web que permite construir aplicações com poucas linhas de código. O autor ensina Ruby on Rails através de um exemplo prático de construção de um sistema de cadastro de CDs e categorias.
O documento discute as principais linguagens de programação, incluindo Python, JavaScript, Java, C++, C#, Swift, TypeScript, Kotlin, Go e Rust. Cada linguagem é descrita brevemente com seus usos, paradigmas, mercado e frameworks populares. O documento conclui que escolher a linguagem certa para cada projeto é importante e deve ser baseado nas necessidades do projeto e preferências da equipe.
O documento discute os princípios de código limpo, incluindo: (1) código limpo deve ser eficiente e ter lógica direta para minimizar bugs, (2) deve ter poucas dependências, e (3) deve ser legível para facilitar manutenção. Ele também fornece dicas como usar nomes significativos e formatar código claramente.
Como Rails e DHH revolucionaram a engenharia de software Fernando Henriques
O documento discute como o framework Ruby on Rails, criado por David Heinemeier Hansson em 2003, revolucionou a engenharia de software ao popularizar principios como "convention over configuration" e "scaffolding", tornando o desenvolvimento web mais rápido e produtivo. O Rails também ajudou a popularizar a linguagem Ruby e influenciou muitos outros frameworks.
Palestra sobre Javascript que ministrei na III Mostra Científica do Senac-RS.
A palestra conta um pouco da história do Javascript e o porque da imcompreensão da linguagem. Também mostra o que é possível fazer e como desenvolver um código um profissional e levado a sério com Javascript.
Palestra polêmica sobre o futuro da plataforma Java, com ênfase em novas linguagens para a JVM. Apresentada no Maratona4Java de Brasília.
http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Alem_do_Java%E2%84%A2:_Novos_Horizontes_para_o_Desenvolvedor
O documento discute a criação de uma API RESTful para uma lista de tarefas (todo list) utilizando Node.js, MongoDB e Docker. Ele apresenta os conceitos de front-end, back-end e REST, além de definir os objetivos da API e os passos para desenvolvê-la.
Este documento é um guia para profissionais Java que resume a agenda de uma palestra sobre o contexto atual e futuro da plataforma Java. Apresenta as principais versões da Java, IDEs, tópicos importantes para profissionais conhecerem e uma atualização sobre certificações Java.
Palestra "Ruby on Rails e o Mercado", apresentado no auditório do SENAC de Joinville/SC (Brasil) no dia 11 de novembro de 2007 (2007-12-11) para, aproximadamente, 100 pessoas.
Do alto para o baixo nível - Entendendo as DiferençasWelington Sampaio
O documento discute as diferenças entre linguagens de alto e baixo nível, usando GoLang, Node.js e PHP 5.5 como exemplos. Realiza testes de performance desses três scripts em loops de ordenação para comparar seus tempos de resposta.
O documento descreve a jornada do autor com programação funcional ao longo de 2017, desde seus primeiros passos com Elm até adotar cada vez mais uma abordagem funcional em Ruby. Ele experimentou diferentes tecnologias, leu livros, organizou e participou de eventos e contribuiu com projetos open source, aprofundando seu entendimento sobre programação funcional.
Palestra ministrada dia 25 de novembro de 2008 (2008-11-25) para a turma de Bacharel em Sistemas de Informação da Faculdade Cenecista de Joinville (FCJ), em Joinville/SC.
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
O documento discute a complexidade do ecossistema JavaScript e como Vue.js pode ajudar a simplificar o desenvolvimento front-end. Ele explica conceitos como EcmaScript, Node, pacotes, task runners, transpilers, bundlers e testes. Em seguida, apresenta o framework Vue.js como uma forma progressiva de construir interfaces com componentes de único arquivo que oferecem renderização do lado do servidor e do cliente.
O documento resume a linguagem de programação Ruby, incluindo sua criação, influências, versões, exemplos de uso e características principais como tipagem dinâmica, classes, métodos e variáveis.
Este documento apresenta uma introdução à linguagem de programação Python, abordando sua origem, propósito, sintaxe básica, tipos de dados, controle de fluxo, funções, módulos, documentação e tratamento de erros. O objetivo é fornecer os conceitos fundamentais para iniciar o desenvolvimento de códigos em Python.
Tutorial java script orientado à objeto e jqueryLuan Campos
Este documento apresenta um tutorial de JavaScript orientado a objetos e jQuery. Aborda tópicos como declaração de variáveis, tipos de dados, arrays, expressões regulares, funções, objetos, escopo de variáveis e manipulação do DOM com jQuery.
Jaydson Gomes apresentou sobre Javascript. Ele discutiu que Javascript é uma linguagem de script orientada a objetos usada para criar interfaces web ricas. Também explicou brevemente a história e origem da linguagem e suas aplicações, como Ajax e frameworks como jQuery.
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
Este documento discute como aprender várias linguagens de programação pode tornar alguém um melhor DBA (administrador de banco de dados) e desenvolvedor. Aprender novas linguagens ajuda a conectar pontos entre diferentes tecnologias e abordagens, melhorando a comunicação, percepção e pensamento crítico. É importante considerar por que cada linguagem surgiu para escolher aquelas que agregam mais valor.
Este documento resume uma aula sobre programação orientada a objetos. A aula discute os principais conceitos da programação orientada a objetos como abstração, encapsulamento, herança e polimorfismo. O professor também mostra exemplos de código para ilustrar como declarar classes, instanciar objetos e usar herança para reutilizar código.
O documento discute as principais linguagens de programação, como surgiram e onde são utilizadas atualmente. Aborda os paradigmas de programação, a diferença entre interpretador e compilador e como funciona um compilador. Apresenta exemplos de linguagens como Assembly, Fortran, Pascal, COBOL, C, C++, Java, PHP e Shell Script.
Certamente o Java é atualmente uma das linguagens mais usadas e uma das mais populares no mundo, sendo que os seus maiores diferenciais não estão na linguagem e sim na JVM (Máquina virtual Java). Conheça um pouco mais sobre esse motor, seu funcionamento e sua arquitetura para tirar melhor proveito dela em suas aplicações, além de conhecer um pouco sobre a implementação de referência e open source da JVM, o OpenJDK. O conteúdo desse E-book falará sobre:
* os registradores da JVM
* A interface do Java com código nativo, JNI, presente em diversos pontos do JVM, dentre eles, o NIO e Gargabe Collector,
* O funcionamento básico do Garbage Collector
* Como compilar o OpenJDK
* ByteCode e o seu funcionamento
* E muito mais!
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
O documento discute os princípios de código limpo, incluindo: (1) código limpo deve ser eficiente e ter lógica direta para minimizar bugs, (2) deve ter poucas dependências, e (3) deve ser legível para facilitar manutenção. Ele também fornece dicas como usar nomes significativos e formatar código claramente.
Como Rails e DHH revolucionaram a engenharia de software Fernando Henriques
O documento discute como o framework Ruby on Rails, criado por David Heinemeier Hansson em 2003, revolucionou a engenharia de software ao popularizar principios como "convention over configuration" e "scaffolding", tornando o desenvolvimento web mais rápido e produtivo. O Rails também ajudou a popularizar a linguagem Ruby e influenciou muitos outros frameworks.
Palestra sobre Javascript que ministrei na III Mostra Científica do Senac-RS.
A palestra conta um pouco da história do Javascript e o porque da imcompreensão da linguagem. Também mostra o que é possível fazer e como desenvolver um código um profissional e levado a sério com Javascript.
Palestra polêmica sobre o futuro da plataforma Java, com ênfase em novas linguagens para a JVM. Apresentada no Maratona4Java de Brasília.
http://blog.fragmental.com.br/wiki/index.php/Maratona4Java2005:_Alem_do_Java%E2%84%A2:_Novos_Horizontes_para_o_Desenvolvedor
O documento discute a criação de uma API RESTful para uma lista de tarefas (todo list) utilizando Node.js, MongoDB e Docker. Ele apresenta os conceitos de front-end, back-end e REST, além de definir os objetivos da API e os passos para desenvolvê-la.
Este documento é um guia para profissionais Java que resume a agenda de uma palestra sobre o contexto atual e futuro da plataforma Java. Apresenta as principais versões da Java, IDEs, tópicos importantes para profissionais conhecerem e uma atualização sobre certificações Java.
Palestra "Ruby on Rails e o Mercado", apresentado no auditório do SENAC de Joinville/SC (Brasil) no dia 11 de novembro de 2007 (2007-12-11) para, aproximadamente, 100 pessoas.
Do alto para o baixo nível - Entendendo as DiferençasWelington Sampaio
O documento discute as diferenças entre linguagens de alto e baixo nível, usando GoLang, Node.js e PHP 5.5 como exemplos. Realiza testes de performance desses três scripts em loops de ordenação para comparar seus tempos de resposta.
O documento descreve a jornada do autor com programação funcional ao longo de 2017, desde seus primeiros passos com Elm até adotar cada vez mais uma abordagem funcional em Ruby. Ele experimentou diferentes tecnologias, leu livros, organizou e participou de eventos e contribuiu com projetos open source, aprofundando seu entendimento sobre programação funcional.
Palestra ministrada dia 25 de novembro de 2008 (2008-11-25) para a turma de Bacharel em Sistemas de Informação da Faculdade Cenecista de Joinville (FCJ), em Joinville/SC.
Java script em 2016 - Como sobreviver a essa sopa de letrinhas com vue.jsVinicius Reis
O documento discute a complexidade do ecossistema JavaScript e como Vue.js pode ajudar a simplificar o desenvolvimento front-end. Ele explica conceitos como EcmaScript, Node, pacotes, task runners, transpilers, bundlers e testes. Em seguida, apresenta o framework Vue.js como uma forma progressiva de construir interfaces com componentes de único arquivo que oferecem renderização do lado do servidor e do cliente.
O documento resume a linguagem de programação Ruby, incluindo sua criação, influências, versões, exemplos de uso e características principais como tipagem dinâmica, classes, métodos e variáveis.
Este documento apresenta uma introdução à linguagem de programação Python, abordando sua origem, propósito, sintaxe básica, tipos de dados, controle de fluxo, funções, módulos, documentação e tratamento de erros. O objetivo é fornecer os conceitos fundamentais para iniciar o desenvolvimento de códigos em Python.
Tutorial java script orientado à objeto e jqueryLuan Campos
Este documento apresenta um tutorial de JavaScript orientado a objetos e jQuery. Aborda tópicos como declaração de variáveis, tipos de dados, arrays, expressões regulares, funções, objetos, escopo de variáveis e manipulação do DOM com jQuery.
Jaydson Gomes apresentou sobre Javascript. Ele discutiu que Javascript é uma linguagem de script orientada a objetos usada para criar interfaces web ricas. Também explicou brevemente a história e origem da linguagem e suas aplicações, como Ajax e frameworks como jQuery.
Porque aprender várias linguagens me tornou um DBA (e desenvolvedor) melhorDickson S. Guedes
Este documento discute como aprender várias linguagens de programação pode tornar alguém um melhor DBA (administrador de banco de dados) e desenvolvedor. Aprender novas linguagens ajuda a conectar pontos entre diferentes tecnologias e abordagens, melhorando a comunicação, percepção e pensamento crítico. É importante considerar por que cada linguagem surgiu para escolher aquelas que agregam mais valor.
Este documento resume uma aula sobre programação orientada a objetos. A aula discute os principais conceitos da programação orientada a objetos como abstração, encapsulamento, herança e polimorfismo. O professor também mostra exemplos de código para ilustrar como declarar classes, instanciar objetos e usar herança para reutilizar código.
O documento discute as principais linguagens de programação, como surgiram e onde são utilizadas atualmente. Aborda os paradigmas de programação, a diferença entre interpretador e compilador e como funciona um compilador. Apresenta exemplos de linguagens como Assembly, Fortran, Pascal, COBOL, C, C++, Java, PHP e Shell Script.
Certamente o Java é atualmente uma das linguagens mais usadas e uma das mais populares no mundo, sendo que os seus maiores diferenciais não estão na linguagem e sim na JVM (Máquina virtual Java). Conheça um pouco mais sobre esse motor, seu funcionamento e sua arquitetura para tirar melhor proveito dela em suas aplicações, além de conhecer um pouco sobre a implementação de referência e open source da JVM, o OpenJDK. O conteúdo desse E-book falará sobre:
* os registradores da JVM
* A interface do Java com código nativo, JNI, presente em diversos pontos do JVM, dentre eles, o NIO e Gargabe Collector,
* O funcionamento básico do Garbage Collector
* Como compilar o OpenJDK
* ByteCode e o seu funcionamento
* E muito mais!
Semelhante a O case da Plataformatec com o Elixir - Como uma empresa brasileira criou uma linguagem que é usada no mundo inteiro (20)
25. Agora, as CPUs evoluem
de um modo diferente
Passado Presente e futuro
Clock speed Hyperthreading
Execution
optimization
Multicore
Cache Cache
26. Agora, as CPUs evoluem
de um modo diferente
Passado Presente e futuro
Clock speed Hyperthreading
Execution
optimization
Multicore
Cache Cache
27. 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
“
28. Concurrency is the next major revolution in how we
write software
- Herb Sutter
“
29. Lei de Amdahl
Quanto menos concorrente for seu
código, menos velocidade ele
vai ganhar com mais cores
30. 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?
31. 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?
37. 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
47. 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
48. 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
49. 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
50. 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
{
51. 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
{
53. 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
{{
54. 30+ anos de desenvolvimento
A Erlang VM é battle-tested
58. 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
89. 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
90. 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
91. 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
92. 2013
Criador do Erlang publica que
ficou animado com Elixir
Primeira ElixirConf
O’Reilly anuncia criação de livro
sobre Elixir
2013
2014
93. 2013 O’Reilly anuncia criação de livro
sobre Elixir
2014 Phoenix
Primeira ElixirConf2014
Phoenix,
web framework
for the new web
95. Phoenix
2016 GenStage e Flow
Nerves
2014
Data ingestion and
data processing with:
2015
Streaming
Concurrency
Back-pressure
96. Nerves
2016 Nosso primeiro cliente de Elixir!
GenStage e Flow
2015
1º retorno financeiro
para Plataformatec
2016
t2012 2013 2014 2015 2016
$$ $$ $$ $$ $$
$
97. 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
98. GenStage e Flow
2018 Hoje
Nosso primeiro cliente de Elixir!
Como está o
ecossistema de Elixir
hoje?
2016
2016
104. O poder do open source
Bibliotecas Meetups Livros
6400+ 190+ 25+ 15+
Conferências
O ecossistema Elixir em 2018
105. O Elixir é maior
que a Plataformatec
Começamos a comunidade.
Não somos donos dela.
Plataformatec ⊂ Elixir
106. POR QUE O ELIXIR
TEM CRESCIDO?
Parte 4
Na opinião do Hugo Baraúna
107. 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
108. 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
110. 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
113. 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/
114. O Elixir/OTP suporta
o “reactive manifesto” de
forma nativa
Elastic Message Driven
ResilientResponsive
115. 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
116. 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
117. 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
118. 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
119. 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”.
120. 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
122. 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/
123. 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
140. 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
141. 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
148. 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ã?
149. 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
150. 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”
151. 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
152. Você não precisa ser
grande para causar
um grande impacto
na indústria de
software
134k
180k
10k
55