Rust. Um guia para iniciantes.
Introdução
Não é fácil entrar de cabeça em uma nova linguagem de programação, ainda mais quando ela é intrinsecamente diferente da que você começou a programar. Mas eu me propus a esse desafio, e escolhi Rust como minha segunda linguagem, e para quem interessar, minha primeira é o maravilhoso Javascript.
O choque é grande.
Mas estamos aqui para falar de Rust, então vamos lá!
O primeiro passo é conhecer o site oficial da linguagem.
https://www.rust-lang.org/pt-BR/
Aqui você pode encontrar tudo que precisa para começar, baixar o Rust, conhecer as ferramentas que compõe um ambiente de desenvolvimento e conhecer as principais diferenças que o Rust possui (já falaremos mais sobre isso) e se desejar , testar a linguagem direto no Browser pelo Playground (https://play.rust-lang.org/).
Ainda falando sobre aprender, o site oficial, na aba learn nos sugere três caminhos.
- Leia o livro -> https://doc.rust-lang.org/book/
- Faça o curso Rustlings -> https://github.com/rust-lang/rustlings/
- Rust por exemplos -> https://doc.rust-lang.org/stable/rust-by-example/
Obs: Todas essas formas estão em inglês. Infelizmente.
Posso afirmar que as três formas são muito boas, bem estruturadas para aqueles que não possuem nenhum conhecimento prévio de Rust, mas sinto que não são muito focados em quem não possui nenhum conhecimento prévio sobre as bases da programação. Enfim, começar a programar por aqui não deve ser uma tarefa tão simples.
Para aqueles que ficaram tristes por não existir um guia inicial em português, encontrei uma versão em pt-br do livro https://rust-br.github.io/rust-book-pt-br/ch00-00-introduction.html.
Existem outros livros em português sobre essa linguagem, dois são da Casa do Código, como o Rust: Concorrência e alta performance com segurança dos autores Marcelo Castellani e Willian Molinari, o li e posso dizer que é um bom ponto de partida.
Rust
Enfim, agora vamos falar um pouco mais sobre o que o Rust pode nos oferecer.
Rust nos oferece uma ambição, ser tão rápido quanto C e C++ sem ser tão falho nos pontos em que C e C++ o são.
Toda linguagem de programação possui objetivos que se propõem a resolver, vamos ver os do Rust.
- Prover uso de memória seguro e eficiente
- Oferecer concorrência com baixo risco
- Imutabilidade por padrão
- Prover um compilador inteligente e amigável
- Sistema de tipos seguros
Rust entra em cena para combater inimigos que não são fáceis de vencer sem uma linguagem te dar suporte, vide os problemas que existem em programas escritos em C e C++ que persistem mesmo depois de quase 4 décadas, no caso do C++, e 5 décadas, no caso do C, trabalhar com memória não é algo simples, mas Rust vem para cima desse problema com ideias novas, veremos algumas delas.
- Não existe o famoso Garbage Collector (coletor de lixo), e você se pergunta, como a memória é liberada, aí que vem o truque, existe aqui o conceito de lifetime, ownership e borrow, assim, pode-se lidar com a memória de uma forma segura e performática, pois se exclui a necessidade de um runtime para lidar com ela, ela é resolvida em tempo de execução.
- Não existe null, calma, para isso existe uma alternativa, temos um enum chamado Option que encapsula o conceito de um valor que está presente ou ausente.
enum Option {Some(T), None,}
Desse modo, é comum que todas as implementações que lidem com ausência de valores usem o Option como alternativa para evitar coisas como um NullPointer. - O compilador de Rust realmente é diferenciado, ele é capaz de tornar o ato de escrever código e principalmente o de aprender a escrever código muito menos frustante e estressante, certamente isso deve contar muito para o Rust ser tão amado por sua comunidade. (https://youtu.be/2YfdZJHNXy8)
Isso é apenas o começo, ainda estou no começo da minha jornada nessa linguagem que está cada dia mais consolidada no mercado e me conquistando.
Obrigado pela leitura.
Até a próxima!