Observação: esta edição do livro é igual a The Rust Programming Language, disponível em formato impresso e e-book na No Starch Press.
Bem-vindo ao The Rust Programming Language, um livro introdutório sobre o Rust. A linguagem de programação Rust ajuda a escrever software mais rápido e confiável. Ergonomia de alto nível e controle de baixo nível estão freqüentemente em desacordo no projeto de linguagem de programação; Rust desafia esse conflito. Ao equilibrar uma capacidade técnica poderosa e uma ótima experiência de desenvolvedor, o Rust oferece a opção de controlar detalhes de baixo nível (como o uso de memória) sem todo o incômodo tradicionalmente associado a esse controle.
Para quem é a linguagem de programação Rust
Rust é ideal para muitas pessoas por diversos motivos. Vejamos alguns dos grupos mais importantes.
Equipes de desenvolvedores
Rust está provando ser uma ferramenta produtiva para colaboração entre grandes equipes de desenvolvedores com vários níveis de conhecimento de programação de sistemas. O código de baixo nível está sujeito a uma variedade de bugs sutis, que na maioria das outras linguagens podem ser detectados apenas por meio de testes extensivos e revisão cuidadosa do código por desenvolvedores experientes. No Rust, o compilador desempenha um papel de guardião, recusando-se a compilar o código com esses bugs elusivos, incluindo bugs de simultaneidade. Trabalhando junto com o compilador, a equipe pode gastar seu tempo focando na lógica do programa ao invés de perseguir bugs.
Rust também traz ferramentas de desenvolvedor contemporâneas para o mundo da programação de sistemas:
- Cargo, o gerenciador de dependências incluído e a ferramenta de construção, torna a adição, compilação e gerenciamento de dependências fácil e consistente em todo o ecossistema Rust.
- Rustfmt garante um estilo de codificação consistente entre os desenvolvedores.
- O Rust Language Server capacita a integração com as IDEs (Integrated Development Environment) para conclusão de código e mensagens de erro em linha.
Ao usar essas e outras ferramentas no ecossistema Rust, os desenvolvedores podem ser produtivos ao escrever código em nível de sistema.
Alunos
Rust é para estudantes e interessados em aprender sobre conceitos de sistemas. Usando o Rust, muitas pessoas aprenderam sobre tópicos como desenvolvimento de sistemas operacionais. A comunidade é muito acolhedora e fica feliz em responder às perguntas dos alunos. Por meio de esforços como este livro, as equipes de Rust desejam tornar os conceitos de sistema mais acessíveis a mais pessoas, especialmente as novas em programação.
Empresas
Centenas de empresas, grandes e pequenas, usam Rust na produção para uma variedade de tarefas. Essas tarefas incluem ferramentas de linha de comando, serviços da web, ferramentas DevOps, dispositivos incorporados, análise e transcodificação de áudio e vídeo, criptomoedas, bioinformática, mecanismos de pesquisa, aplicativos da Internet das coisas, aprendizado de máquina e até mesmo partes importantes do navegador Firefox.
Desenvolvedores de código aberto
Rust é para pessoas que desejam construir a linguagem de programação, comunidade, ferramentas de desenvolvedor e bibliotecas Rust. Adoraríamos que você contribuísse com a linguagem Rust.
Pessoas que valorizam velocidade e estabilidade
Rust é para pessoas que desejam velocidade e estabilidade em um idioma. Por velocidade, queremos dizer a velocidade dos programas que você pode criar com o Rust e a velocidade com que o Rust permite que você os escreva. As verificações do compilador Rust garantem a estabilidade por meio de adições de recursos e refatoração. Isso contrasta com o código legado frágil em linguagens sem essas verificações, que os desenvolvedores geralmente têm medo de modificar. Buscando abstrações de custo zero, recursos de nível superior que compilam para código de nível inferior tão rápido quanto o código escrito manualmente, Rust se empenha em fazer com que o código seguro seja um código rápido também.
A linguagem Rust espera oferecer suporte a muitos outros usuários também; aqueles mencionados aqui são apenas alguns dos maiores interessados. No geral, a maior ambição de Rust é eliminar os trade-offs que os programadores aceitaram por décadas, fornecendo segurança e produtividade, velocidade e ergonomia. Experimente o Rust e veja se as escolhas funcionam para você.
Para quem é este livro
Este livro pressupõe que você escreveu código em outra linguagem de programação, mas não faz suposições sobre qual. Tentamos tornar o material amplamente acessível para aqueles com uma ampla variedade de experiências de programação. Não gastamos muito tempo falando sobre o que é programação ou como pensar sobre isso. Se você é totalmente novo em programação, seria melhor ler um livro que fornece especificamente uma introdução à programação.
Como usar este livro
Em geral, este livro presume que você o está lendo em sequência, do início ao fim. Os capítulos posteriores baseiam-se nos conceitos dos capítulos anteriores, e os capítulos anteriores podem não se aprofundar nos detalhes de um tópico; normalmente revisitamos o tópico em um capítulo posterior.
Você encontrará dois tipos de capítulos neste livro: capítulos de conceitos e capítulos de projetos. Nos capítulos conceituais, você aprenderá sobre um aspecto do Rust. Nos capítulos do projeto, construiremos pequenos programas juntos, aplicando o que você aprendeu até agora. Os capítulos 2, 12 e 20 são capítulos de projeto; o resto são capítulos de conceitos.
O Capítulo 1 explica como instalar o Rust, como escrever um programa Hello, world!
e como usar o Cargo, o gerenciador de pacotes e ferramenta de compilação do Rust. O Capítulo 2 é uma introdução prática à linguagem Rust. Aqui, cobrimos os conceitos em alto nível e os capítulos posteriores fornecerão detalhes adicionais. Se você quiser sujar as mãos imediatamente, o Capítulo 2 é o lugar para isso. A princípio, você pode até querer pular o Capítulo 3, que cobre os recursos do Rust semelhantes aos de outras linguagens de programação, e ir direto para o Capítulo 4 para aprender sobre o sistema de propriedade do Rust. No entanto, se você for um aluno particularmente meticuloso que prefere aprender todos os detalhes antes de passar para o próximo, você pode querer pular o Capítulo 2 e ir direto para o Capítulo 3, voltando ao Capítulo 2 quando quiser trabalhar em um projeto aplicando os detalhes que você aprendeu.
O Capítulo 5 discute estruturas e métodos, e o Capítulo 6 cobre enums, expressões match
e a construção de fluxo de controle if let
. Você usará structs e enums para criar tipos personalizados em Rust.
No Capítulo 7, você aprenderá sobre o sistema de módulo de Rust e sobre as regras de privacidade para organizar seu código e sua API (Interface de Programação de Aplicativo) pública. O Capítulo 8 discute algumas estruturas de coleta de dados comuns que a biblioteca padrão fornece, como vetores, strings e mapas hash. O Capítulo 9 explora a filosofia e as técnicas de tratamento de erros de Rust.
O Capítulo 10 investiga genéricos, características e tempos de vida, que lhe dão o poder de definir o código que se aplica a vários tipos. O Capítulo 11 trata de testes, que mesmo com as garantias de segurança de Rust são necessários para garantir que a lógica de seu programa está correta. No Capítulo 12, construiremos nossa própria implementação de um subconjunto de funcionalidades da ferramenta de linha de comando grep
que pesquisa texto em arquivos. Para isso, usaremos muitos dos conceitos que discutimos nos capítulos anteriores.
O Capítulo 13 explora fechamentos e iteradores: recursos do Rust que vêm de linguagens de programação funcionais.
No Capítulo 14, examinaremos o Cargo com mais detalhes e falaremos sobre as melhores práticas para compartilhar suas bibliotecas com outras pessoas.
O Capítulo 15 discute ponteiros inteligentes que a biblioteca padrão fornece e as características que permitem sua funcionalidade.
No Capítulo 16, examinaremos diferentes modelos de programação simultânea e falaremos sobre como o Rust o ajuda a programar em vários threads sem medo. O Capítulo 17 examina como os idiomas do Rust se comparam aos princípios de programação orientada a objetos com os quais você pode estar familiarizado.
O Capítulo 18 é uma referência sobre padrões e correspondência de padrões, que são maneiras poderosas de expressar ideias em programas Rust. O Capítulo 19 contém uma miscelânea de tópicos avançados de interesse, incluindo Rust inseguro, macros e muito mais sobre vidas, características, tipos, funções e encerramentos.
No Capítulo 20, concluiremos um projeto no qual implementaremos um servidor da web multithread de baixo nível!
Finalmente, alguns apêndices contêm informações úteis sobre a linguagem Rust em um formato mais parecido com uma referência. O Apêndice A cobre as palavras-chave do Rust, o Apêndice B cobre os operadores e símbolos do Rust, o Apêndice C cobre as características deriváveis fornecidas pela biblioteca padrão, o Apêndice D cobre algumas ferramentas de desenvolvimento úteis e o Apêndice E explica as edições do Rust.
Não há maneira errada de ler este livro: se você quiser pular, vá em frente! Você pode ter que voltar aos capítulos anteriores se sentir alguma confusão. Mas faça o que funcionar para você.
Uma parte importante do processo de aprendizagem do Rust é aprender a ler as mensagens de erro que o compilador exibe: elas o guiarão para o código de trabalho. Como tal, forneceremos muitos exemplos que não compilam junto com a mensagem de erro que o compilador mostrará a você em cada situação. Saiba que se você inserir e executar um exemplo aleatório, ele pode não ser compilado! Certifique-se de ler o texto ao redor para ver se o exemplo que você está tentando executar está destinado a erro. Ferris também o ajudará a distinguir o código que não foi feito para funcionar:
Ferris | Significado |
---|---|
Este código não compila! | |
Este código entra em pânico! | |
Este bloco de código contém código não seguro. | |
Este código não produz o comportamento desejado. |
Na maioria das situações, levaremos você à versão correta de qualquer código que não compila.
Código fonte
Os arquivos de origem a partir dos quais este livro é gerado podem ser encontrados no GitHub.
Traduzido por Acervo Lima. O original pode ser acessado aqui.
0 comentários:
Postar um comentário