Use o código e tenha 10% de desconto!

Rust Concorrência e alta performance com segurança

Marcelo Castellani

A FUNÇÃO MAIN

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. 

 

Para quem é este livro?

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, palavraschave 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.

 

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?
    • 1.6 Conclusão
  • 2 Começando com o 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 Conclusão
  • 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
    • 3.11 Conclusão
  • 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
    • 4.5 Conclusão
  • 5 Vetores, strings e tipos genéricos
    • 5.1 Vetores
    • 5.2 Strings
    • 5.3 Tipos de dados genéricos
    • 5.4 Conclusão
  • 6 Alocação e gerenciamento de memória
    • 6.1 Gerenciamento de memória
    • 6.2 Escopo de variáveis
    • 6.3 Casting
    • 6.4 Ponteiros, box e drop
    • 6.5 Outros tipos de ponteiros
    • 6.6 Processamento paralelo e threads
    • 6.7 Criando uma thread
    • 6.8 Movendo o contexto
    • 6.9 Entendendo channels
    • 6.10 Conclusão
  • 7 Macros
    • 7.1 Por que macros?
    • 7.2 Recursividade
    • 7.3 Árvores de tokens
    • 7.4 Por que usamos macros?
    • 7.5 As duas Rusts
    • 7.6 Conclusão
  • 8 Testar, o tempo todo
    • 8.1 A macro panic!
    • 8.2 Macros de asserção
    • 8.3 Desempacotamento e a macro try!
    • 8.4 Escrevendo testes
    • 8.5 Conclusão
  • 9 Como Rust compila o seu código
    • 9.1 O passo a passo da compilação
    • 9.2 O MIR e a melhoria no processo de compilação
  • 10 O começo de uma jornada
    • 10.1 Material online
    • 10.2 Conclusão

Dados do produto

Número de páginas:
322
ISBN:
978-85-94188-33-5
Data publicação:
12/2017

Compartilhe!

Compartilhe no Facebook Compartilhe no Twitter