🦀 Rust: Escrever código perfeito é possível!
O que é Rust? 🦀
Rust é uma linguagem de programação multiparadigma de alto-nível desenvolvida pela Mozilla. É compilada e estáticamente tipada. A linguagem foi criada com alguns objetivos em mente:
- Segurança 👮
- Performance ⚡
- Simplicidade 📝
É uma linguagem de programação que conquistou meu coração nos últimos meses, e quero mostrar aqui de forma resumida e rápida o porquê do design da linguagem ser tão único e viciante de usar!
Como Rust torna meu programa seguro?
O design do Rust foi planejado de forma com que praticamente nenhum erro aconteça durante a execução do seu programa, já que a grande maioria dos erros são descobertos em tempo de compilação!
E o que isso quer dizer?
Resumindo: os problemas do seu código não vão crashar seu app às 3 da manhã devido a um bug imprevisível e indefinido causado por um undefined
!
Aqui vai um exemplo de uma das várias coisas que somente Rust pode nos proporcionar:
Em JavaScript, coisas assim podem e vão acontecer!
Rust não tem undefined
nem null
, o que torna impossível coisas assim de acontecerem. O compilador nem chega à compilar o código caso detecte algum erro, além de prover ao programador mensagens de erro amigáveis e fáceis de entender.
Mas se Rust não tem undefined/null, como podemos representar o "nada"?
Em Rust, existe uma coisa chamado Option! Options são muito convenientes quando você pode ou não ter algum valor. E sua sintaxe é ainda mais simples. Options são enums, e podem ser definidas como:
Observe também que Option é genérica: Podendo conter (ou não) qualquer tipo de variável que você desejar!
Some(T)
contém o valor da variável caso exista. Mas nem sempre é possível obter um valor, então Option também possui a variante None
! None não é undefined, nem null, é simplesmente nada.
Perceba também que não existe uma keyword extra como null
ou undefined
na sintaxe de Rust para incluir valores nulos! Option é uma enum padrão de Rust, mas mesmo caso ela não existisse, você mesmo poderia ter criado ela com pouquíssimas linhas de código! Você mesmo pode criar sua forma segura de programar. Você não acha isso incrível? 🦀
Agora vamos para um exemplo de Options na prática:
Nesse exemplo, eu omiti o tipo das variáveis para simplificar, mas o compilador coloca o tipo automaticamente se você deixar o tipo implícito. Mas você pode também explicitar o tipo de uma option assim:
let algum_numero: Option<i32> = Some(30);
// i32 em Rust é o tipo para números inteiros em 32-bits
Options estão em todo canto! Ao invés de ficar em dúvida se uma função pode ou não retornar null
ou undefined
, se você ver que ela retorna Option
, você já sabe que nem sempre ela pode ter algum valor!
Rust é tão rápido quanto C/C++!
Rust é uma linguagem com "Zero-Cost-Abstraction". Isso significa que o seu código Rust super-seguro com Options (e outras funções da linguagem) consegue ser simples, fácil de entender e ao mesmo tempo super rápido!
Quando você executa seu código, o compilador verifica seu código inteiro e faz grande parte do trabalho pra você. Se algo der errado, ele para de compilar e mostra onde está o erro e como você pode resolvê-lo. Caso tudo esteja funcionando perfeitamente e de forma segura, o compilador simplesmente deleta as Options e abstrações do seu código e converte pra puro código de máquina otimizado, mantendo todas as funcionalidades intactas.
Ou seja, o seu código pode ao mesmo tempo ser simples para o desenvolvedor e super rápido e seguro para o consumidor, graças ao compilador inteligente da linguagem!
Conclusão
Rust é uma linguagem de programação que não gosta de seguir padrões. Ao invés de fazer coisas do jeito popular e familiar, ela prefere fazer as coisas do melhor jeito possível! 💡
Você não precisa sacrificar performance por segurança, ou segurança por um código limpo. Em Rust, você pode ter performance, segurança e um código fácil de ler, tudo ao mesmo tempo!
Nessa postagem eu quis mostrar apenas uma das diversas de escolhas de design do Rust. Existe também Result
, para tratar erros e falhas de forma segura. Se você quiser ler mais sobre as funcionalidades da linguagem, eu recomendo o Rust Book Oficial! 📚
⭐ Pra finalizar, uma frase que eu amo do canal No Boilerplate: (inclusive, eu recomendo ele se você entender Inglês e quiser ver mais coisas sobre Rust)
"Os últimos 40 anos foram escritos em C/C++. Os próximos 40 anos serão escritos em Rust."
Muito obrigado por ler até aqui!
Sem sombra de dúvidas Rust tem se tornando cade vez mais popular, e esta no meu radar de aprendizado.
Para agregar algo, o Bruno Rocha que trabalha na Red Hat estava fazendo um serie ensinando Rust. Super recomendo. link da serie.
Um dado interessante: Segundo a Stack Overflow Developer Survey, Rust é a linguagem mais amada por programadores, e mantém esse título a 7 anos consecutivos.
Primeiramente bom post, é bem útil pra quem tem curiosidades sobre rust. Realmente rust vem sendo um destaque quando se trata em código seguro e performance, o compilador do rust faz com maestria o trabalho de não deixar o código compilar caso encontre algum possível bug, e ainda por cima ti dar até dicas de como resolver o problema para o seu código rodar com segurança. A forma como o rust lida com gerenciamento de memória também é um diferencial da linguagem e claro o gerenciamento de projeto com o cargo é uma mão na roda, ele ti ajuda desde a criação de novos projetos deixando tudo organizado, e até ti dar várias opções de compilação, e ainda tem um arquivo que gerencia todas as dependências do seu projeto, que massa né?! Não sou muito especialista em rust pois comecei a estudar rust recentemente mas eu estou gostando de aprender a linguagem,vai me ajudar em projetos que desejo construir no futuro. Se tiverem interessados em aprender rust indico a própia documentação do rust book que é completa e tem uma curva de aprendizado ótima, e em vídeos no youtube tem o canal Bruno Rocha - CodeShow que está fazendo video aula pra galera que deseja aprender rust desde o básico, super indico!
Obs: todos os erros do javascript citados podem serem contornados usando o typescript
Exelente post, e para quem está interessado em usar rust para aplicativos para desktop, tem o tauri, que é um framework tipo o electron, só que ao inveś de node ele usa o rust para o backend e para o frontend o html, css e javascript.
Podem dar uma olhada nesse vídeo aqui para verem uma breve explicação.
Minha dúvida é se numa aplicação de médio a grande porte sofreríamos lentidão com o ato de compilar toda a base de código a cada alteração? Ou não?
Sensacional o artigo, tabnews crescendo que orgulho!!! por mais artigos assim. Vou dar uma olhadinha no Rust gostei !!
Achei interessante, recomenda algum livro de Rust? preferencialmente em português pois eu ainda não sei haha
Tem o canal do youtube do Bruno Rocha, em português, que está fazendo uma série de vídeos do Rust. Para quem quiser ver inicia nesse aqui: https://www.youtube.com/watch?v=zWXloY0sslE
Em um evento da microsoft, o CEO comentou que aproximadamente 70% dos problemas do windows eram provenientes de vazamento de memória. Partes do windows começaram a serem reescritas em Rust. O linux tbm vai ter o kernel reescrito em Rust, lógico que em doses homeopáticas. Tem um modo no Rust que é chamado Irust para fazer data Science, que se assemelha ao jupiter notebook, muito usado para análise de dados com python. Ele também fornece webassembly, não sei como, que será para elaboração de material para internet, de forma compilada e não interpretada como html, fazendo com o que o desempenho da aplicação seja muito melhor que o atual desempenho. Essa parte do webassembly é a que eu menos fui atrás para saber od que se tratava. o próprio site da linguagem fornece bastante material para vc aprender: https://www.rust-lang.org/learn
aqui tem exemplos: https://doc.rust-lang.org/stable/rust-by-example/
Excelente post! Pelo que vejo é bastante parecido com Java, estou certo? Por ser uma linguagem bastante tipada e também é compilada. Eu estou estudando e trabalho com Java no meu atual emprego, e estou pensando em começar a estudar em paralelo alguma outra linguagem. Rust parece ser ama boa escolha.
Qual o diferencial do Rust no que tange memory management? sempre ouço muita gente falando disso, mas não sei qual a implementação real disso em Rust.
Que curioso, também estou estudando a pouco programação e vi o código fonte tv falando sobre o Rust, me deu vontade de estudar sobre mas estou tão no inicio que não imagino ser interessante ainda aprender. Você acha que com uma boa base(depois de estudar lógica e estrutura de dados) já posso pensar em dar os primeiros passos com o Rust ou seria interessante ter um amplo conhecimento com uma linguagem antes? ps:estou estudando o javascript de início
Caro colega de linguagem. Criamos um servidor no discord dedicado a linguagem rust, gostariamos de pedir a sua contribuição para promover este post a aos mais relevantes: https://www.tabnews.com.br/Diletante/primeiro-servidor-rust-em-portuges
Juntos vamos criar um lugar massa para nós nos reunirmos.
Excelente! Cada vez mais estou propenso a migrar minhas API's para Rust... só que ainda não estou muito seguro quanto à implementação. Ainda não consegui encontrar um bom curso online que realmente apresente a linguagem e todas as suas funcionalidades em uma situação prática... se alguém tiver alguma sugestão, agradeço! Valeu!!!
Que post maravilhoso! Venho estudando Rust no meu tempo vago e tenho gostado muito da linguagem. Em paralelo, tenho estudado C no curso CS50x e é incrível como uma liguagem de 1972 moldou muita coisa do usamos (JavaScript, Python, etc ) e ainda vamos usar nesses próximos anos com Rust! Estou bem ansioso pelo próximo ciclo de 40 anos :smile:
Aliás, valeu pela recomendação de canal! Por aqui conhecia apenas o Let's get Rusty, que tamb ém recomendo!!
Excelente iniciativa Atom3z. Sou desenvolvedor a mais de uma década e recentemente tenho estudado Rust. Com certeza é uma linguagem com a qual gostaria de trabalhar. No Brasil parece não existir muito engajamento ou até mesmo uma comunidade sólida. Se souber de algo conta aí pra gente!
Tem alguma aplicação específica que o rust se destaca? Algo em empresas também?
Rust é uma linguagem muito da gostosinha, na moral! Eu tenho aprendido, um pouco, dele. Gostaria de poder estar me dedicando mais.... mas enfim. Estou estudando com esse curso aqui
https://www.udemy.com/course/rust-fundamentals/
e estou achando ótimo. Recomendo. É em inglês, mas o cara fala bem de boa.
Onde o Rust é aplicado? em quais setores? em quais tipos de software?🤔 Excelente texto.👏
Sou desenvolvedor full stack e comecei a estudar rust a pouco tempo. Estou impressionado com essa linguagem!
Você consegue fazer coisas de baixo nível utilizando uma sintaxe de alto nível sem ser prejudicado na performance nem perder pontos em segurança.
pretendo desenvolver micro-serviços utilizando rust futuramente, e ver essa linguagem em ação!
Cara, acho Rust uma linguagem muito elegante, comecei a estudar Rust esses dias, pois necessito no back-end para a criação de um aplicativo que utiliza o Tauri.
Obrigado pelo post! Bastante interessante! Mas será que hoje já existem muitas empresas que utilizam essa linguagem em suas stacks?
Acho que é muito bacana, RUST é uma linguagem que sempre quis testar, mas nunca comecei de fato porque não tem muita utilidade para mim, digo, em aplicações reais. Sou desenvolvedor fullstack mas meu foco é mobile, então é praticamente um conhecimento que não seria muito usado por mim. Mas quem sabe um dia. Aliás, ótimo post mano, parabéns! <3
Curti muito o post, obrigado pela dica!
Cara, poderia pensar em ser uma especie de embaixador Rust por aqui no tab, fazendo postagens diarias de curiosidades, além de compartilhar conhecimento. Achei o post muito bom pra quem nunca teve contato, gerou um certo interesse/curiosidade.
Realmente ela é uma maravilhosa linguagem, e compilador incrível! Mas um coisa que ela não é, é simples...
Quem acha ela simples, é por tá usando muito "passo a passo de como fazer tal coisa...", C++ é mais fácil do que Rust, olhe que nem acho o C++ massinha de usar.
Mas óbvio, entre Rust e C++ eu preferiria usar Rust, e isso porque é melhor gastar um tempo a mais pra se familiarizar com rust e ganhar os benefícios de usar rust.
Mas definitivamente rust não é simples.
Faz dois meses que estou estudando programação e há três dias comecei a estudar Rust, um amigo tem me dado aula pelo meet todos os dias. É incrivel porquê em rust estou absorvendo mais a teoria por trás das linguagens e amadurecendo muito a consciência sobre o código. Eu ainda estou tendo dificuldades com o paradigma funcional, mas rust permite abordar o código de muitas maneiras. Particularmente é a linguagem a qual eu mais tenho simpatia. Pretendo um dia ainda criar um bom projeto usando rust.