Eu estava errado sobre o Rust?


Introdução

Para quem não sabe, há umas semanas, eu fiz um post entitulado Por que o Rust é ruim? que teve uma repercursão até moderada aqui no TabNews. Eu queria tentar me explicar melhor sobre esse post e amenizar algumas coisas que acabaram ficando muito extremas.

1. Sintaxe

No post, eu critico bastante a sintaxe e a consistência sintatica do Rust.

Eu ainda acho que o Rust não tem uma consistência das Melhores, acho que até C, Java, Go têm mais consistência sintatica do que o Rust.

Mas, eu estava errado sobre o quanto isso realmente importava para o workflow geral do Rust.

Depois de experimentar com algumas linguagens de programação mais verbosas e complexas/esotéricas (em termos de sintaxe) como C++ e Java, percebi que o boilerplate do Rust é praticamente nulo e que a sintaxe e que isso não importa tanto assim como performance, por exemplo.

2. Performance

Falando de performance, do Rust não há o que falar. Ele é uma verdadeira bala.

O único problema que eu encontrei sobre performance é a dificuldade de fazer um programa "realmente rápido" (ou Blazingly Fast) por conta de problemas com o uso da Heap e operações que são lentas por si só.

3. Borrow Checker: Gerenciamento de memória

No post eu simplesmente destruí o Borrow Checker injustamente. Eu digo no post que você passa uma raiva desnecessária ao programar em Rust. Agora, eu acho isso um pouco injusto se você pensar que o Borrow Checker tá la só para te ajudar.

Eu sei que para iniciantes, você pode se pegar lutando com o compilador tentando escrever o código que ele quer que você escreva. Mas nisso, já entramos nó próximo tópico do post...

4. Curva de aprendizado

É fato que no início o Rust é MUITO chato. Mas uma coisa boa que eu percebi no Rust é que a curva de aprendizado do Rust é exponencial. Quanto mais você aprende, mais você aprende rápido.

A curva de aprendizado do Rust é mais ou menos assim:

Gráfico Exponencial

5. Resultados satisfatórios

Mesmo com seus problemas, depois de fazer mais projetos em Rust, acabei aprendendo que esses problemas no fim do dia, valem a pena. Eu percebi que ao terminar uma parte de uma implementação de uma parte de um projeto, você se sente um melhor programador. O compilador do Rust é igual a sua mãe. Ela quebra tua cabeça para você fazer as coisas direito. E no fim, o código fica "perfeito" e você sente certo prazer em ter terminado a tarefa com sucesso.

Encerramento

Eu ainda acho que o Rust é cheio de problemas. Mas eu acho que me redimi com os criadores e abri mais a minha mente sobre essa linguagem.

Obrigado por ler!

conhece lua? Lua é uma linguagem enxuta e simples! basicamente nem tem 50 comandos!

E ela é ótima.

Uma linguagem não é boa nem ruim. Nem perfeita nem imperfeita. É apenas uma linguagem feita por pessoas que queriam alguma coisa diferente!

E só!

Sim cara, conheco e sempre falei MUITO bem dela, é uma linguagem muito mal-aproveitada que todos deviam fazer projetos!

existe algum estudo demonstrando que programas em rust tem menos problemas de concorrência e memória quando comparado a programas similares escritos em outras linguagens?

Uns links interessantes para você ver sobre: https://www.trio.dev/blog/golang-vs-rust https://arxiv.org/pdf/2003.03296.pdf https://taesoo.kim/pubs/2021/bae:rudra.pdf basicamente, a resposta é não. Na real é meio que impossível fazer essa métrica. Essas medidas de gerenciamento de memória são puramente preventivas. Não há muito como "medir" o quanto de memória um programa em Rust ou em Golang _poderia gastar_ se não tivessem os sistemas de segurança. Claro que o Rust provavelmente tem Bugs no borrow checker. Mas ninguém ainda encontrou...
vou ler os artigos recomendados, valeu! eu penso em algo como número de issues causadas por problemas de memória e / ou concorrência. algo nessa linha. mas nunca é algo 100%, seria para ter um "sentimento geral". valeu!