A fantástica Rust e o meu novo emprego fantástico

Minha camisa do orgulho Rust

Esse não é o primeiro post no meu blog onde menciono Rust, mas a partir de agora, as postagens sobre essa linguagem fantástica devem se tornar mais frequentes. Rust é uma linguagem de programação de sistemas e o que eu tenho para dizer, em uma linha, sobre Rust, é que eu acredito em Rust.

Muitas linguagens para diminuir erros e aumentar a produtividade foram criadas, mas elas costumam ser mais lentas. E para se sobressair e causar hype, uma abordagem de marketing recente foi criar novas linguagens afirmando que elas são linguagens de programação de sistema, apesar de serem tão produtivas quanto as linguagens mais lentas. Essas ditas linguagens de programação de sistema costumam (1) depender de um Garbage Collector e (2) produzir binários gigantes. O problema #1 as torna uma não-opção para mim e eu deixei minha crítica registrada em um texto separado. O problema #2 as impede de serem utilizadas em projetos embarcados, onde costumamos utilizar linguagens de programação de sistemas de verdade, como C.

Enfim, Rust é a linguagem de programação de sistemas que, não só afirma ser uma linguagem de programação de sistemas, como também, de fato, é uma linguagem de programação de sistemas. E ela tenta aumentar sua produtividade de duas formas:

  • Fornecendo construções comuns em linguagens de alto nível.
  • Aumentando a segurança, diminuindo o tempo que você iria passar depurando problemas.

Entretanto, para aumentar a segurança, Rust move muitos erros, que antes aconteciam em tempo de execução, para tempo de compilação. E para escrever código Rust que compile, você precisa aprender alguns conceitos que não são tão comuns. Logo, os erros diminuem, mas o tempo que você passa batalhando contra o compilador aumenta. Em outras linguagens, você ia gastar esse tempo escrevendo testes. Escrever testes ainda é legal, mas você não vai escrever testes para garantir segurança de memória e coerência de threads, porque o compilador garante isso para você. E, como o compilador garante isso para você, você vai gastar muito menos tempo ponderando se seu código faz sentido ou não, o que também aumenta a produtividade. Um depoimento que eu gosto, é o seguinte, feito por Mitchell Nordine:

I’ve found that Rust has forced me to learn many of the things that I was slowly learning as “good practise” in C/C++ before I could even compile my code. Rather than learning by trying to solve segfaults, debugging my pointer messes, etc, Rust tells me at compile time why what I’m trying to do is probably not a wise choice.

Se você simplesmente não se importa em produzir código correto, então outras linguagens ainda devem oferecer uma produtividade melhor. Claro que outra complicação na curva de aprendizado de Rust vem do fato que ela também não quer abrir mão de performance.

Eu não consigo levar a sério, linguagens que não levam performance a sério. E eu não consigo considerar o uso de linguagens que dão significado a espaço em branco (ex.: blocos definidos por identação, como em Python, mas tem até coisa pior em Haskell) ou ao estilo de capitalização dos nomes (i.e. se começar com maiúscula, é uma classe). Enfim, pela primeira vez, apareceu uma linguagem que conseguiu me fazer deixar C++ de lado. E Rust acerta muitas vezes, então a propaganda feita varia de acordo com a combinação anunciante/ouvinte.

Emprego novo

GitHub Orgs

E, para combinar com a linguagem fantástica, tenho a declarar que eu consegui um emprego fantástico, no projeto MaidSafe (que é um projeto fantástico que merece seu próprio post). Estarei trabalhando de home office e ainda irei trabalhar com assuntos que me excitam: Rust, software livre e redes descentralizadas.

Eu amei a descrição do emprego feita por um twitteiro aleatório:

“surely the most dev hipster job out there right now. @maidsafe. programming in rust, blockchain distributed ID”

Uma nota rápida: tecnicamente, eu estou trabalhando para mim mesmo, oferecendo serviços de consultoria, e o projeto MaidSafe é meu cliente. Só esclarecendo, pois não posso fazer afirmações de que trabalho para o projeto MaidSafe no sentido clássico (e é basicamente assim com o resto dos funcionários).

Eu queria ir com mais calma e terminar mais projetos antes de assumir tamanha responsabilidade, mas minha vida é simplesmente muito maluca para que eu preveja seu futuro.

Para ser honesto, o pessoal da MaidSafe é bem amigável e compreensível (pelo menos até agora), e me deu bastante liberdade para ter horários flexíveis que vão me permitir terminar projetos paralelos e continuar trabalhando no meu fantástico estágio envolvendo bindings de JavaScript para as bibliotecas EFL (tem até um rascunho de um post sobre isso que estou postergando em terminar e publicar já faz muito tempo).

E alguém importante para que eu conseguisse esse emprego foi o Francisco Lopes, por ter me convencido a fazer a entrevista, e fazer logo, aumentando minha confiança. Logo, eu devo a ele um ou quatro copos de cerveja, que pretendo pagar em algum dos encontros da lista de C/C++ Brasil.

BEER!

Tags:, ,

Trackbacks / Pingbacks

  1. Conquistas de 2015 | Vinipsmaker labs - 2015/12/31

Comentários (with MarkDown support)

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: