Linguagem Rust: tirando a ferrugem
Conhecendo a nova linguagem de programação: Rust, by Mozilla.
"Do you pine for the nice days of minix-1.1, when men were men and wrote their own device drivers? Are you without a nice project and just dying to cut your teeth on a OS you can try to modify for your needs? Are you finding it frustrating when everything works on minix? No more all- nighters to get a nifty program working? Then this post might be just for you :-).
As I mentioned a month(?) ago, I'm working on a free version of a minix-lookalike for AT-386 computers. It has finally reached the stage where it's even usable (though may not be depending on what you want), and I am willing to put out the sources for wider distribution..." - - Linus Torvalds, 05/Out/1991, em uma mensagem no grupo comp.os.minix
Esse entusiasmo do Linus, insatisfeito com as soluções de sua época, permeia alguns bons desenvolvedores que questionam as técnicas e ferramentas atuais, e buscam, de forma prática, estabelecer novos padrões para o desenvolvimento de sistemas. É uma busca à qual a comunidade Rust oferece contribuições bem interessantes.
Motivação
A minha primeira empreitada com Rust foi com um projeto meu, Test Driven Learning, que consiste em uma lista de exercícios, com os testes já escritos. Até o arquivo para resolver o exercício já está preparado. Uma forma de exercitar a programação em código de outra pessoa.
Fiz os testes, junto com minhas repostas, em Python, que foi moleza, em Perl5 já nem tanto, e em C, aí sim a coisa pegou, mas resolvi. E tinha em minha lista mental de linguagens, Haskell, Perl6 e Rust como as opções para finalizar.
Comecei com Rust e após resolver os problemas quase no mesmo tempo que em Python, percebi o quanto ela é importante. E para continuar o aprendizado inventei outro problema: escrever um módulo para aritmética de precisão arbitrária, que pomposamente chamei de bignum.
Material para estudo
Comecei pelos testes, bem devagar, buscando as soluções na documentação, no livro oficial e nos exemplos.
Também é interessante acompanhar o This week in Rust, uma coletânea semanal de eventos e artigos.
Comunidade
A partir do site brasileiro Rust on the Rocks, comecei a encontrar as comunidades nacionais:
Impressões
Meu sentimento é estar programando em algo que junta C e Python, e que pode ser usado para resolver problemas que são mais apropriados a uma ou outra, exclusivamente.
Escrever código e compilar. Compilar e executar. Essa é a grande vantagem. Em Python se escreve código, testa, e algum tempo depois pode-se ter uma desagradável surpresa que só foi descoberta num momento muito inoportuno. O mesmo com C, e seus (nossos) erros de memória...
Em Rust, a busca é por segurança, rapidez e fácil concorrência. Mesmo aprendendo em projetos próprios, sem grandes compromissos, tenho conseguido ser produtivo no desenvolvimento, apesar de ainda estar começando.
A documentação é boa e os erros e avisos do compilador são um espetáculo à parte, pois efetivamente ajudam, ao invés de criar pânico.
Perspectivas
Aprender uma nova linguagem de programação é sempre bom, especialmente se essa nova linguagem trouxer novas ideias e formas de resolver problemas.
As restrições como imutabilidade padrão e forte tipagem, por exemplo, exigem uma melhor forma de programar. E um compilador bem crica que não deixa passar quase nada que possa comprometer o funcionamento do sistema, aumentam em muito a qualidade do que é desenvolvido.
Linguagem nova, problemas já vividos por quem acompanhou o nascimento de uma linguagem... É preciso desenvolver muita coisa ainda, até mesmo o binding para uso de bibliotecas escritas em outras linguagens.
Pela movimentação toda em torno do Rust, isso não leva muito tempo para ser resolvido. E o mais interessante, há muitos problemas a resolver e contribuir.
Pode parecer trabalho duplicado, mas reforço o clamor feito recentemente: Rewrite Everything In Rust !