Rust: a linguagem em que todos deveriam estar de olho
Oi, pessoal! Resolvi repostar aqui um artigo que escrevi na Feature Newsletter, uma newsletter que criei com foco em compartilhar artigos interessantes a cada 15 dias sobre carreira em desenvolvimento de software.
O link para ver o artigo na newsletter (e se inscrever) tá no final do post. A news vai ser paga (R$ 10/mês). Meu objetivo é ajudar a custear a Codecon com essas assinaturas, um evento que organizo e também para que eu, um dia, consiga focar em trabalhar só com esse tipo de criação de conteúdo, hehe.
Valeu e espero que curtam! :)
Rust: a linguagem em que todos deveriam estar de olho
Por 6 anos consecutivos, Rust é considerada a linguagem mais querida pelos desenvolvedores segundo a pesquisa anual do Stack Overflow. Tentamos entender o que a sucessora do C++ faz de tão especial, mesmo não sendo a linguagem mais popular, ficando em décimo terceiro lugar na lista da mesma pesquisa, atrás do próprio C++, Go e, obviamente, do PHP.
O caranguejo é o mascote não-oficial do Rust
A linguagem surgiu com o objetivo de ter uma programação de mais baixo nível, porém, com o passar dos anos e o lançamento de novas versões, acabou ganhando popularidade ao se tornar multipropósito. Hoje é possível ver Rust aplicado em praticamente tudo, desde aplicações comerciais, como Discord ou Figma, e microsserviços diversos, como no iFood, até games ou blockchain.. Tudo que você consegue fazer usando uma linguagem de alto nível como Python é possível ser feito com Rust, e tudo que você precisa de uma linguagem de baixo nível, como C ou Go, você também encontrará no Rust. Não existe um nicho específico onde a linguagem é popularmente usada, pois as pessoas que gostam dela tentam aplicá-la em todos os lugares que possuem uma brecha.
“Eu tenho muito interesse em Rust, pois nos gargalos de linguagens dinâmicas que existem, quando existe um locker de interpretador, como no Ruby e no Python, a gente precisa às vezes usar recursos de outras linguagens, como por exemplo o C ou C++. Rust trouxe uma maneira diferente e até mais fácil de desenvolver plugins e módulos para linguagens dinâmicas”, diz Bruno Rocha, um dos principais entusiastas de Rust no Brasil e que está lançando um curso gratuito sobre Rust no seu Youtube.
Talvez essa plasticidade seja o principal fator do Rust ser uma linguagem de programação tão amada. Ela consegue otimizar outras linguagens de uma maneira mais fácil. É possível estender linguagens como Python, JavaScript e até PHP de maneira muito simples. Hoje em dia as empresas costumam adicionar microsserviços ou bibliotecas em Rust para resolver pequenos problemas que encontram e, conforme a equipe vai amadurecendo, a codebase em Rust só tende a aumentar.
A Microsoft, por exemplo, é uma empresa onde Rust é uma das linguagens que as pessoas mais usam para começar novos projetos, principalmente em Cloud, sendo uma ideia fortemente apoiada pelo CTO da Azure, Mark Russinovich.
“É hora de parar de iniciar qualquer novo projeto em C/C++ e usar Rust para aqueles cenários onde uma linguagem sem coletor de lixo é necessária”, publicou Mark em seu Twitter.
Outro grande fator que faz o Rust ser amado é o seu compilador. Ele é escrito na própria linguagem, vem recebendo várias melhorias durante os anos e, por exemplo, tem uma forma muito simples e fácil de apresentar mensagens de erro – algo que também popularizou outros projetos, como o Next.js, um framework JavaScript. É compreensível que as pessoas desenvolvedoras não queiram mais perder tempo tentando decifrar um erro de compilação quando ele poderia ser fácil de entender de cara, afinal uma linguagem de programação é escrita de pessoas para pessoas.
“Eu brinco que o único chefão que eu gosto de matar de vez em quando é o compilador do Rust. Por que você quebra a cabeça pra fazer passar alguma coisa e é prazeroso fazer algo que tem uma garantia a mais que tá correto.” complementa Bruno.
Por que Rust em vez de outra linguagem?
A comunicação aqui acredito que seja o ponto principal. O Rust ganha novos fãs pela forma simples como apresenta mensagens do compilador, focando muito na Developer Experience. Ele também tem uma documentação muito simples e fácil de entender criada pela comunidade. Comunidade esta que trabalha arduamente para ter explicações claras em todos os pontos de contato com a linguagem, sejam em RFCs, blog ou documentação de bibliotecas.
Além disso, “o Rust traz pras linguagens de baixo nível todo o ferramental que a gente vê em linguagens dinâmicas”, diz PotHix, outro entusiasta de Rust e co-autor do livro Rust, concorrência e alta performance com segurança. Essa afirmação se dá pois o Rust possui um ótimo ferramental, incluindo o Cargo, um gerenciador de pacotes, de projetos, de documentação e de testes muito bem desenvolvido que é nativo da linguagem e que te ajuda com todo o extra que você precisa.
Outro grande diferencial, sempre citado, é a ausência de um garbage collector. O Rust se mostra muito mais eficiente na gestão de memória de uma maneira segura, impedindo que aconteçam data races. Dessa forma o Rust consegue um excelente desempenho em sistemas que possuem uma alta performance e precisam de uma gestão de memória mais segura.
Basicamente o que o Rust faz é trabalhar com ownership. De forma inteligente, o compilador rastreia quais variáveis ainda estão “segurando” um objeto, e quando esta variável sai do escopo ela é eliminada da memória.
Como o caso do Figma, citado anteriormente, onde decidiram reescrever em Rust o sistema de multiplayer deles, anteriormente feito em Typescript. O ganho de recursos com uso menor de memória é impressionante. A linguagem já nasceu com a ideia de ter a melhor performance e ainda conta com diversas otimizações em seu compilador, baseado no LLVM. Outra empresa que usou recentemente o Rust foi o Discord, que reescreveu seu serviço de “estado de leitura” de mensagens e também teve ganhos muito bons em performance.
Nem tudo são flores
O Rust ainda é uma linguagem relativamente nova e tem muito a evoluir. Mas, o importante é que existe uma comunidade apaixonada e que recebe muito bem novos participantes. Um dos problemas mais recorrentes trazidos é a dificuldade em trabalhar com códigos assíncronos, porém já existe um grupo de trabalho focado em criar o futuro do Rust para que ele seja mais amigável à assincronicidade (que palavra mais difícil).
Também por ser uma linguagem nova e ter uma comunidade pequena, muitas das bibliotecas também são novas e podem apresentar bugs. Por isso é importante saber como usar alternativas, como às vezes integrar uma biblioteca em C, já que, no fim, é fácil integrá-las ao Rust.
Entender o lifetime no Rust também pode ser complicado para quem está começando, ou até meio chato. Provavelmente esse é o paradigma mais difícil de assimilar, depois que você entender isso, certamente conseguirá programar numa boa. Mas, até para isso, existem algumas alternativas sendo estudadas, como os tempos de vida não lexicais, o que pode melhorar ainda mais a linguagem no futuro.
A ferrugem está corroendo nossos sistemas por dentro, e isso é muito bom
Mudanças nem sempre são fáceis. O Rust surge como uma nova abordagem para resolver problemas que o C/C++ já resolvem, porém de uma forma mais segura. É possível fazer tudo que o Rust faz hoje em dia, mas você precisa ter o trabalho (e o conhecimento) de como fazer da forma certa. O Rust reduz riscos sem comprometer performance, permitindo que mais pessoas façam códigos melhores e de forma mais rápida. Quem não quer isso?
Considere ter o Rust como sua segunda linguagem, você poderá se apaixonar também. Ele te permite conseguir fazer pequenos projetos para resolver problemas que seriam complexos de serem resolvidos e te ajuda a escrever melhor inclusive em outras linguagens de programação. Mas entenda que ele não faz nada mágico, apenas compreende que os dados são vulneráveis e cuida para que isso não se torne um problema para você.
“O Rust me faz sentir um programador melhor e me coloca um desafio a mais do que os que eu estou acostumado. O Rust traz uma maneira de pensar que desafia você a pensar diferente daquilo que você já sabia antes. Quando pela primeira vez na vida você se depara com a necessidade de gerenciar ownership e empréstimo isso te traz um desafio interessante para passar de fase. E te dá um prazer enorme de entender que aquilo ali acarreta em um código mais seguro, com menos bugs e menos problemas.”, diz novamente Bruno Rocha.
Talvez estejamos passando por um momento que vai ficar na história das linguagens de programação. Seria Rust a linguagem que vai dominar o futuro? Ainda que isso não aconteça, o fato é que ela já vem mudando paradigmas e conceitos que podem tornar outras linguagens melhores para quem as programa.
Parte desse texto foi baseado no painel: Rust é a linguagem mais querida: qual o seu real uso? Com Bruno Rocha, Willian Molinari e Pedro Castilho da última Codecon.