Lido Rust por Marcelo Castellani | Livros
9788594188342
Relacionado a Rust
Rust - Marcelo Castellani
2. Começando com o cargo
3. Mergulhando no oceano Rust
4. Traits e estruturas
5. Vetores, strings e tipos genéricos
6. Alocação e gerenciamento de memória
8. Testar, o tempo todo
9. Como Rust compila o seu código
10. O começo de uma jornada
Impresso e PDF: 978-85-94188-33-5
EPUB: 978-85-94188-34-2
MOBI: 978-85-94188-35-9
A arte da capa deste livro faz uso do logo oficial do Rust, sob a licença CC BY 4.0.
Este livro é dedicado a todos que gostam de escrever código e que sentem prazer em ver as coisas funcionando. Que colocam um sorriso honesto e sincero no rosto quando tudo vai bem, como meu filho Nicolas, no dia em que fizemos juntos um estilingue.
Dedico-o a todos que conseguem se divertir aprendendo algo novo, que sabem que o aprendizado de ontem pode não valer mais hoje, e que sintam um orgulho enorme de suas conquistas – assim como o Nicolas, meu filho, que chegou em casa um dia e pediu um papel e uma caneta para me mostrar que havia aprendido a escrever seu nome e o meu.
Este livro é dedicado a todos que ainda estão descobrindo o mundo, não importa sua idade.
Agradeço a todos da Casa do Código; aos envolvidos com a linguagem Rust, aqui e no mundo; a toda minha família, em especial a meus pais, Adelia e Nelson, e à Ana Luz, por me apoiarem e me deixarem concentrado enquanto escrevia aos finais de noite.
Agradeço também meu amigo Willian Molinari, o PotHix, que se dispôs a me ajudar na revisão deste material, além de ter feito um trabalho incrível em outro livro da Casa do Código, o Desconstruindo a web, no qual mostra tudo o que acontece entre sua requisição ao browser e a página bonitinha desenhada na sua tela. Vale a pena dar uma olhada. Para mais informações, visite o site: https://desconstruindoaweb.com.br.
E, claro, agradeço a todos na Mozilla e ao Graydon, que trouxe essa belezinha chamada Rust ao mundo.
Marcelo F. Castellani é desenvolvedor de software há mais de vinte anos. Iniciou sua carreira como estagiário na Companhia Telefônica da Borda do Campo, onde viu o surgimento da internet no país. Trabalhou por 14 anos com o desenvolvimento de software embarcado de alta performance, voltado à automação bancária e comercial (com C, C++, Java e Assembly) na Itautec S/A e, posteriormente, na OKI Brasil. Hoje, é especialista em desenvolvimento de software na TOTVS, uma das maiores empresas de tecnologia do mundo.
Desde 2007, é desenvolvedor Ruby e Rails, tendo participado da fundação do GURU-SP e palestrado em diversos eventos relacionados, como Ruby e Rails no mundo real, Sun Tech Days, RS on Rails e The Developers Conference. Entusiasta de software livre, foi membro do projeto NetBeans, reconhecido pela Sun Microsystems, em 2008, como um dos principais colaboradores do Brasil.
Como escritor, foi colunista fixo da revista Wap & Internet Móvel e publicou artigos em diversas outras, como a Java Magazine e a Internet.BR. Também é autor do livro Certificação SCJA - Guia de Viagem.
Você pode contatá-lo pelo e-mail marcelofc.rock@gmail.com para dúvidas sobre este livro ou outros assuntos relacionados.
Para a maioria dos programadores, a função main é comumente o ponto de entrada de um complexo e fascinante universo: o seu código. Seja ele em Java, C ou Rust, main é a porta de entrada dos bits e bytes ordenados marotamente, capazes de tomar alguma decisão e gerar o resultado esperado, ou um erro qualquer inesperado.
Este é o ponto de partida deste livro. É aqui que eu vou me apresentar e mostrar meus objetivos, dizer quem eu quero atingir e contar meus planos de dominação mundial.
Sim, dominação mundial. E não espero menos dessa nova e poderosa linguagem chamada Rust. Desde o começo, ela não foi feita com objetivos menores do que aqueles dos vilões dos quadrinhos. Ela veio para mudar o jogo e mostrar que C é velha e que C++ é complicada demais para qualquer um.
Por que um livro sobre Rust?
Quando falamos em linguagens de programação voltadas à construção de sistemas que exigem performance e agilidade, Rust tem ganhado muita notoriedade. Ela entra no nicho de Go, a linguagem do Google, que visa aposentar clássicos como C e C++ na construção de aplicativos complexos, como browsers ou sistemas operacionais.
De fato, duas das maiores aplicações hoje feitas puramente em Rust são um motor para browsers multiplataforma, o Servo, e um sistema operacional, o Redox-OS. Não sei qual é a sua experiência como desenvolvedor, mas você deve ter noção de que essas aplicações são bem complexas de serem feitas. Exigem uma performance que não encontramos em queridinhos das comunidades, como linguagens interpretadas em geral ou aquelas baseadas em máquinas virtuais, que dependem de um sistema operacional ou de uma implementação do processador – como o Java e o seu uso em processadores com Jazelle e relacionados.
Rust permite a criação de programas que rodem no metal, criando código de máquina nativo. Entre as suas principais características, a mais importante é a capacidade de criar código seguro de verdade (e vamos falar muito sobre isso ao longo deste livro). Desenvolver um código seguro em C ou C++ não é tão simples, pois sempre acaba sobrando um ponteiro maroto por aí que, na pior hora, vai dar alguma dor de cabeça. É notório o vídeo do Bill Gates tendo de lidar com uma tela azul da morte na apresentação de uma versão do Microsoft Windows (https://youtu.be/IW7Rqwwth84).
Por si só, esse já seria um motivo enorme para termos um livro sobre Rust, mas acho que você precisa de mais para se convencer. Rust é a linguagem mais amada pelos desenvolvedores de software de todo o mundo, de acordo com uma pesquisa anual do Stack Overflow (veja o link disponível no capítulo Primeiros passos). Se amor não for motivo suficiente para lhe convencer, não sei mais o que pode ser.
Brincadeiras à parte, este livro não busca ser uma versão final e definitiva de Rust. Ele serve como um bom ponto de partida, apresentando aplicações simples e autossuficientes, mas satisfatórias, para exemplificar os conceitos apontados. Por ser uma linguagem de propósito geral, o limite para criação com Rust é a sua imaginação. De jogos a sistemas embarcados, ela veio para ser a próxima geração de linguagem que todos devem conhecer, assim como o C é hoje.
Este livro definitivamente não é para iniciantes. Se você nunca escreveu um código em sua vida, provavelmente a leitura deste material será complexa e desinteressante, mesmo com o autor tendo se esforçado muito para ser engraçado em algumas partes.
Se você já conhece C, C++, D, Go, Pascal ou outra linguagem compilada, ele provavelmente será fácil para você. Apesar da sintaxe diferente, Rust é uma linguagem de programação de propósito geral, então ela tem condicionais, variáveis, palavras-chave e tudo mais que outras linguagens também apresentam. Por ser compilada, ela possui todo o fluxo de codificar, compilar e executar, e todas as facilidades e dificuldades que esse modelo de programação suporta.
Se você vem de Java ou .NET, não apresentarei uma IDE bonitona, nem você verá exemplos envolvendo cliques em botões no Eclipse ou no Visual Studio. Este é um livro para programadores do estilo antigo, que usam Vim, Emacs ou um editor de textos desses por aí. O uso do terminal não é opcional.
Se você vem do Ruby ou do Python, acredito que, mesmo com as diferenças entre o processo de lidar com linguagens interpretadas e compiladas, tenha tudo para achar Rust muito divertida. A linguagem faz uso de alguns conceitos parecidos, como crates, que são como as gems ou os pacotes pip. Também faz uso de estruturas bem definidas de namespaces, assim como uma biblioteca padrão completa.
Diria que, como Ruby e Python, Rust já vem com as baterias inclusas. E se você entende o que isso quer dizer, tenha certeza de que este livro é para você.
O que preciso para acompanhar a leitura?
Todo o material aqui apresentado foi escrito no GNU Emacs 24.5.1 e compilado com o Rustc 1.19.0. A não ser que você já seja um usuário de Emacs, recomendo que use o editor de textos de sua preferência, com alguma extensão para destaque da sintaxe do Rust. Aprender Emacs é algo valioso, mas não é simples.
Esse editor, felizmente, já possui uma extensão desse tipo que funciona muito bem. E, repetindo um conselho que ouvi em meados dos anos 90: aprenda Emacs e nunca mais precisará aprender outro editor .
Eu uso Linux há algum tempo, talvez por quase toda a sua existência e, para escrever este livro, usei um laptop bem simples com o Kubuntu instalado. Você não precisará de mais do que isto para rodar seu código: um editor de textos e as ferramentas do Rust em seu sistema. Claro, você vai precisar de um terminal como o bash ou o Zsh.
Rust é multiplataforma, ou seja, você pode utilizá-la no MacOS ou no Microsoft Windows, mas todo o processo de instalação apresentado neste livro é para GNU/Linux. Existem referências para os outros sistemas operacionais, que citarei no momento oportuno.
Aprender uma nova linguagem de programação envolve, entre outras coisas, abrir a mente para novos conceitos, paradigmas e maneiras de fazer algo que já fazemos. É um processo cíclico de repensar, enquanto aplicamos o que já sabemos durante o processo de assimilação.
Rust é um desses casos. A linguagem me chamou atenção quando li em algum lugar que sua performance era comparável à do C++, porém ela é mais segura, concorrente e fácil de usar do que o seu predecessor. Trabalhei por muito tempo com C++ e posso dizer que a clássica frase do Tio Ben não se aplica tanto a nenhuma outra situação do mundo quanto esta: Com grandes poderes vêm grandes responsabilidades .
C++ lhe dá poderes quase infinitos. Entretanto, a capacidade de fazer uma bobagem e ficar por horas investigando até achar o problema é um brinde que você não vai querer.
Claro que em Rust, como em qualquer outra linguagem de programação, é possível fazer bobagens. Mas Rust foi desenvolvida pensando em evitar esse tipo de situação. Ela realmente foi feita para ser segura a ponto de possibilitar uma concorrência limpa sem a famigerada race condition.
Ela faz um gerenciamento de memória manual, que não usa coletor de lixo (garbage collector) e não deixa as amarras soltas. Assim, evita aquelas exceções de ponteiro nulo que nos fazem ligar para casa e avisar que a noite será longa.
De fato, Rust possui um livro mantido pela comunidade, o Rustonomicon (https://doc.rust-lang.org/nomicon/), que ensina as artes ocultas para criar código não seguro. Pode parecer uma piada, mas o objetivo é mostrar que, com Rust, a criação de um código que vai explodir na sua cara talvez seja mais difícil do que escrever um código que não explodirá. E isso, quando comparado ao desenvolvimento com C++, é como acordar em um paraíso em dia de sol.
O Rustonomicon
O nome Rustonomicon é uma piada com o Necronomicon, o livro fictício criado por H. P. Lovecraft e usado em sua literatura de terror fantástico como um documento real banido pelo Papa Gregório IX, em 1232. Citado em diversas obras de ficção, o Necronomicon é personagem central dos filmes Evil Dead, de Sam Raimi, e da série Ash versus Evil Dead.
Comecei a ler sobre Rust e seu ecossistema para ver onde a linguagem é usada, e conheci o projeto Servo (https://servo.org/), autointitulado um browser engine moderno e de alta performance para aplicações e uso em sistemas embarcados. Mantido pela Mozilla Research, o Servo é totalmente escrito em Rust e usa o cargo, o gerenciador de pacotes do Rust, como ponto de partida. O Servo atualmente funciona em Linux, macOS, Windows, Android e no Firefox OS/Gonk.
Isso me chamou muito a atenção. Um browser engine é o responsável por pegar aquele código HTML que vem do servidor e interpretar, transformando-o em algo visualmente agradável e fácil de ler (se o responsável pelo site ajudar, claro). Além de processar o HTML, ele ainda deve baixar os arquivos de estilo, imagens e outras mídias relacionadas, processá-las e desenhá-las na tela no lugar certo, e mantê-las lá quando você mover a barra de rolagem.
Enfim, é um projeto realmente complexo, todo feito em Rust. Não só complexo pelo tamanho da especificação do HTML e CSS recente, mas pela necessidade de ser veloz e ágil, de forma que a navegação seja fluida e constante. E, novamente, todo feito em Rust. Ou o pessoal da Mozilla estava maluco, querendo promover uma nova linguagem de programação, ou haviam desenvolvido algo realmente capaz de ser comparado ao C++, sem seus brindes.
Comecei a desenvolver uma série de pequenos projetos apenas por diversão, usando Rust, e ficava mais animado a cada compilação bem-sucedida. Comecei a frequentar os fóruns e ler freneticamente sobre essa nova linguagem, com uma euforia que eu só havia sentido quando aprendi Ruby.
Neste primeiro capítulo, vou mostrar algumas das características dessa linguagem e contar um pouco de sua história, desde quando era apenas um projeto pessoal de Graydon Hoare até ser celebrada como a tecnologia mais amada de 2016, em uma pesquisa feita pelo