From d141a17e8bd21bb9d2252871e4801f891bcf0070 Mon Sep 17 00:00:00 2001 From: Julio Biason Date: Tue, 10 Sep 2019 13:27:49 -0300 Subject: [PATCH] Presentation companion posts --- content/presentations/_index.md | 4 + .../index.md | 120 ++++++++++++++++++ 2 files changed, 124 insertions(+) create mode 100644 content/presentations/_index.md create mode 100644 content/presentations/porque-voce-deve-aprender-rust.md/index.md diff --git a/content/presentations/_index.md b/content/presentations/_index.md new file mode 100644 index 0000000..8fd8769 --- /dev/null +++ b/content/presentations/_index.md @@ -0,0 +1,4 @@ ++++ +transparent = true +title = "Presentation Companion Posts" ++++ diff --git a/content/presentations/porque-voce-deve-aprender-rust.md/index.md b/content/presentations/porque-voce-deve-aprender-rust.md/index.md new file mode 100644 index 0000000..14e718a --- /dev/null +++ b/content/presentations/porque-voce-deve-aprender-rust.md/index.md @@ -0,0 +1,120 @@ ++++ +title = "Porque Você Deve Aprender Rust" +date = 2019-09-10 + +[taxonomies] +tags = ["pt-br", "rust", "companion post"] ++++ + +Rust é uma nova linguagem de programação que eu acredito que deveria ser vista +por desenvolvedores, mesmo que eles não venham programar em Rust. + + + +{% note() %} +Esse post acompanha a minha apresentação [Porque Você Deve Aprender +Rust](https://presentations.juliobiason.net/porque-rust.html#/). +{% end %} + +Quando eu comecei a apresentação, eu pensei em chamar a mesma de "Porque Você +Deveria Aprender Rust"; mas eu pensei bem sobre isso e como a linguagem tem +vários conceitos interessantes, eu acho que o título correto deve ser "Porque +Você DEVE Aprender Rust". + +Mas antes de começar a falar sobre Rust, é interessante que vocês conheçam +quem está falando sobre aprender Rust: + +Eu comecei a programar a mais de 30 anos. Em todos esses anos, eu já programei +em Basic (usando número de linhas e Basic estruturado, também conhecido como +QBasic), dBase III Plus, Clipper (que foi a primeira linguagem que eu usei +profissionalmente), Pascal, Cobol (sim, Cobol, façam suas brincadeiras agora), +Delphi (cujo nome científico é "ObjectPascal" e possui algumas diferenças para +o Pascal original), C, C++, ActionScript (que é a linguagem para geração de +applets Flash sem usar o editor da Adobe), PHP (quem nunca?), JavaScript (quem +nunca?), Python, Objective-C, Clojure, Java, Scala (que eu não desejo que nem +meu pior inimigo tenha que programar nela) e Rust. E essas são as linguagens +que eu já escrevi código e que rodou. Fora essas, eu ainda conheço Haskell, +Perl e Swift, mas nessas eu não programei nada ainda. + +Mas por que eu comentei sobre isso? Porque o que eu vou comentar aqui é, +basicamente, _minha opinião_, depois de conhecer essas linguagens todas. +Então, obviamente, existe um _viés_ para os motivos que eu vou citar daqui pra +frente. + +Mas existe uma frase do Alan Perlis, criador do ALGOL, que diz "A language +that doesn't affect the way you think about programming, is not worth knowing" +(uma linguagem que não afeta o modo que você pensa sobre programação, não vale +a pena ser aprendida). E mesmo depois de todas essas linguagens citadas acima, +Rust ainda me fez repensar coisas que eu sempre pensei quando estava +programando. + +## A Parte Burocrática + +Antes de sair falando da linguagem, eu tenho que falar sobre a parte +burocrática da linguagem. Coisas como, por exemplo: + +* Rust foi criada em 2006 por Graydon Hoare. +* Rust começou a ser patrocinada em 2009 pela Mozilla Foundation. +* A versão 1.0 saiu em 2015. +* A versão atual é a 1.37. + +Rust tem uma história engraçada: Hoare começou a desenvolver a linguagem de +forma independente, em seu tempo livre. Quando ele começou a pegar gosto pela +coisa, ele veio falar com seu gerente dizendo que iria deixar a Mozilla +Foundation para poder trabalhar na sua linguagem de programação. "Que +linguagem é essa?", perguntou o gerente; Hoare afirmou que era uma linguagem +com foco em proteção de memória mas que ainda fosse uma linguagem rápida. Ao +ouvir isso, o gerente pediu para Hoare segurar o pedido de demissão e +conversou com seus superiores. E, por ter vários problemas com a estrutura em +C++ do Firefox, a Mozilla resolveu patrocinar Hoare para que ele pudesse +trabalhar na linguagem. + +Uma coisa a cuidar: Aqui eu comento que a versão atual é a 1.37. Isso pode não +ser verdade no momento que você lê esse post (ou viu a apresentação) porque a +cada 6 semanas uma nova versão do Rust é liberada. Essas versões trazem +correções de bugs e novas features. + +{% note() %} +Uma outra anedota é que o primeiro projeto em Rust foi um browser -- +normalmente a gente pensa que para primeiro projeto, as linguagens querem algo +mais simples, como um microserviço ou algo parecido, mas a equipe do Rust +partiu direto para um browser. + +O resultado, chamado [Servo](https://servo.org/), hoje faz parte do [Firefox +Quantum](https://www.mozilla.org/en-US/firefox/?gclsrc=aw.ds), o que diminui o +uso de memória e diminuiu o número de "crashes" da aplicação. + +Ainda, num certo ponto, um desenvolvedor do Chrome resolveu fazer alguns +testes, utilizando SVG animados, colocando 1 elemento animado 300 vezes numa +página. Para animar todos os elementos, o Chrome conseguia manter 30 FPS; +Firefox, 20; Servo, 300 (sim, 10 vezes mais que o Chrome!). + +Outro exemplo de Rust no Firefox é um bug que estava em aberto por 8 anos. O +bug em questão, [631527](https://bugzilla.mozilla.org/show_bug.cgi?id=631527) +-- que, na verdade, é uma feature -- seria permitir que dois elementos possam +ter os estilos definidos no CSS aplicados em mais de um elemento ao mesmo +tempo; o browser lê primeiro o HTML, constrói o DOM e depois sai aplicando o +estilo em cada um dos elementos; com dois elementos um depois do outro, seria, +teoricamente, possível aplicar o estilo no primeiro ao mesmo tempo em que +aplica no segundo. O bug ficou aberto por 8 anos e duas re-escritas foram +feitas pra tentar resolver o problema. Nenhuma conseguiu prover um resultado +funcional, por vários motivos, mas principalmente por causa da forma com a +memória era compartilhada nas threads em C++. Quando o Firefox mudou para o +Quantum (de novo, em Rust, usando a base do Servo), a correção foi (conforme +descrito por Niko Matsakis na abertura do Rust Latam 2019) "trivial". +{% end %} + +## Motivo 1 + +Em 2019, O [StackOverflow](https://stackoverflow.com/) fez uma enquete com os +visitantes, perguntando, entre várias outras perguntas, qual linguagem eles +usavam e se eles gostavam de programar nessa linguagem. No resultado dessa +enquente, [Rust aparece como a linguagem mais +amada](https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages)... +pelo 4o ano seguido. + +"Ah, mais isso é fácil! Os quatro caras que programam em Rust dizem que gostam +dela todo ano!", você deve estar dizendo. Na verdade, o percentual tem subido +desde a primeira vez, saindo de 76% em 2016 e indo a 83% em 2019. + +## Motivo 2: "Uma Linguagem de Baixo Nível Com Abstrações de Alto Nível"