Rust Concorrência e alta performance com segurança
Marcelo Castellani, Willian MolinariPrefácio: A função main
Para a maioria dos programadores e programadoras, a função main é comumente o ponto de entrada para um complexo e fascinante universo: o seu código. Seja ela 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 vamos nos apresentar e mostrar nossos objetivos, dizer quem queremos atingir e contar nossos planos de dominação mundial.
Sim, dominação mundial. Não esperamos menos dessa 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 visa aposentar clássicos como C e C++ na construção de aplicativos complexos, como browsers ou sistemas operacionais. Ao mesmo tempo, a linguagem também bate de frente com outras linguagens como Go para desenvolvimento de CLIs (Command Line Interfaces, ou interfaces de linha de comando), APIs, frameworks de cryptomoedas e muito mais.
Rust permite a criação de programas que rodem no metal, criando código de máquina nativo, mas isso não quer dizer que ele serve apenas para resolver problemas de baixo nível. Rust é uma linguagem muito versátil e atende bem muitos tipos de demandas.
O motivo de a linguagem fazer muito sucesso para tarefas de baixo nível é a sua 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.
Tudo isso somado com a escassez de material completo em português já são ótimos motivos para termos um livro sobre Rust, mas acho que você precisa de mais para se convencer. Por vários anos, Rust foi considerada a linguagem mais amada pelos desenvolvedores de software de todo o mundo na 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 sabemos 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.
Para quem é este livro?
Este livro definitivamente não é para iniciantes. Se você nunca escreveu um código em sua vida, você provavelmente vai encontrar na leitura deste material algo demasiadamente complexo. O foco deste livro é mostrar como a linguagem Rust ajuda você a criar um bom software e, para isso, você precisa ter ao menos experiência básica fazendo isso.
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-chaves 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, saiba que não há o conceito de IDE principal (ou mais conhecidas, no caso de Java) para Rust, e várias pessoas ainda usam apenas um editor de texto bem customizado. Com isso, você não verá exemplos envolvendo coisas específicas de IDEs como acontece no Eclipse ou no Visual Studio. Este livro não se baseia em nenhum editor de texto ou IDE, a forma de programar deve funcionar em qualquer editor, então cabe a você escolher a sua ferramenta preferida para o trabalho.
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, você tenha tudo para achar Rust uma linguagem muito divertida. A linguagem faz uso de alguns conceitos parecidos, como crates, que são como as gems ou os pacotes pip, e também faz uso de estruturas bem definidas de namespaces.
Apesar da linguagem não vir "com baterias inclusas", podemos dizer que as ferramentas inclusas na linguagem conseguem prover essa sensação de uma forma bem simples e configurável. Diria que, assim como Ruby e Python, você consegue ter essa sensação de um ecossistema completo (ou "linguagem com 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 compilado com o Rustc 1.48.0, portanto você precisará das ferramentas da linguagem instaladas, preferencialmente nessa versão, mas versões mais novas também são bem-vindas. Recomendamos que você use o editor de textos de sua preferência, com alguma extensão para destaque da sintaxe do Rust ou até mesmo alguma IDE, se assim se sentir mais confortável.
Rust é uma linguagem 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 serão citadas em um momento mais oportuno.
Sobre os autores
Marcelo F. Castellani
é desenvolvedor de software há mais de 25 anos. Iniciou 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.
Desde 2007, é desenvolvedor Ruby e Rails, tendo participado da fundação do GURU-SP e palestrado em diversos eventos relacionados. 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.
Trabalhou profissionalmente com Rust entre os anos de 2018 e 2019 numa bolsa de criptomoedas em Oakland, na Califórnia. Participa eventualmente da organização do grupo de usuários de Rust de São Paulo.
No tempo livre toca bateria, guitarra e canta na banda Vingança Vil.
Willian Molinari
mais conhecido como PotHix, é formado em Sistemas de Informação e trabalha com desenvolvimento de software há mais de 14 anos. Durante sua carreira, passou por diversas linguagens de programação: começou com ASP, investindo boa parte da carreira em Ruby e Python, brincou com outras linguagens, como Golang e Elixir, e é entusiasta de Rust. Ele trabalhou tanto em pequenas empresas e startups com cerca de 5 pessoas, dentro e fora do Brasil, quanto em grandes empresas com mais de 1.200 funcionários.
É o autor do livro Desconstruindo a web que mostra tudo o que um desenvolvedor web precisa saber sobre uma requisição web. O livro explora o que acontece desde o primeiro "enter" no navegador, passando por sistema operacional, internet, servidor de aplicação e web, framework e retorno até a página estar completamente carregada.
Willian é um dos fundadores do grupo de usuários Ruby de São Paulo (Guru-SP), um dos principais organizadores do meetup de Rust em São Paulo (Rust-SP), organizador da Rust LATAM Montevideo 2019 e Rust LATAM México (2020, cancelada devido à pandemia). Além de organizar meetups e conferências, é palestrante e já fez mais de 70 palestras pelo Brasil e exterior.
Sumário
- 1 Primeiros passos
- 1.1 Por que uma nova linguagem de programação?
- 1.2 Um pouco de história
- 1.3 O que é Rust?
- 1.4 O que preciso instalar em meu computador?
- 1.5 Pronto para o Alô Mundo?
- 2 Começando no Cargo
- 2.1 Preludes
- 2.2 Crates, cargo e outras ferramentas
- 2.3 Criando um projeto com o Cargo
- 2.4 Utilizando extensões
- 2.5 Outros utilitários do Cargo
- 3 Mergulhando no oceano Rust
- 3.1 Atribuição e vinculação de variáveis
- 3.2 Funções
- 3.3 Tipos de dados em Rust
- 3.4 Agrupando em módulos
- 3.5 Comentários
- 3.6 O bom e velho if
- 3.7 Busca de padrões com match
- 3.8 While
- 3.9 Loop
- 3.10 For e ranges
- 4 Traits e estruturas
- 4.1 Derivando
- 4.2 PartialEq e Eq
- 4.3 PartialOrd e Ord
- 4.4 Operações aritméticas e de bit
- 5 Vetores e iteradores
- 6 Strings e Slices
- 7 Tipos de dados genéricos
- 8 Alocação e gerenciamento de memória
- 8.1 Gerenciamento de memória
- 8.2 Escopo de variáveis
- 8.3 Casting
- 8.4 Ponteiros, box e drop
- 8.5 Ownership
- 8.6 Borrowing
- 9 Processamento paralelo e assíncrono
- 9.1 Processamento paralelo e threads
- 9.2 Criando uma thread
- 9.3 Movendo o contexto
- 9.4 Entendendo channels
- 9.5 Processamento assíncrono e o padrão async/await
- 10 Macros
- 10.1 Por que macros?
- 10.2 Macros declarativas
- 10.3 Recursividade
- 10.4 Exemplo usando uma árvores de tokens
- 10.5 Macros procedurais
- 10.6 Por que usamos macros?
- 11 Testar, o tempo todo
- 11.1 A macro panic!
- 11.2 Macros de asserção
- 11.3 Desempacotamento e o operador ?
- 11.4 Escrevendo testes
- 12 Alguns ponteiros para Rust
- 12.1 Rust para a web
- 12.2 Rust vs. Go
- 12.3 Rust e Webassembly
- 12.4 Rust para software embarcado
- 13 O começo de uma jornada
- 13.1 Material online
Dados do produto
- Número de páginas:
- 268
- ISBN:
- 978-85-5519-302-6
- Data publicação:
- 12/2017. Atualizado em 04/2022