Porque Escolhi o Go em Vez do Rust?

Em 2019 estava à procura de uma nova e moderna linguagem de programação para substituir o Java como a minha linguagem principal. Precisava de reimplementar um intérprete numa linguagem de programação mais rápida, uma vez que no Java já não estava a funcionar. As minhas opções eram o Rust, Go e Swift, isolando para avaliação o Rust e o Go por motivos que deixarei para um outro artigo.

Depois de experimentar o Rust e o Go, optei pelo Go pela sua simplicidade, maturidade, ecossistema de bibliotecas rico, projectos e ferramentas, e pelo facto de ser patrocinado pela Google e por ter o envolvimento de Ken Thompson

O Go e o Rust são linguagens muito semelhantes. Ambas são excelentes. Contudo, o Rust tem uma curva de aprendizagem íngreme, enquanto que o Go tem uma sintaxe simples que facilita a sua aprendizagem. Ambas suportam mais ou menos os mesmos conceitos, mas têm fins diferentes. O Go é mais apropriado para programadores de aplicativos, enquanto que o Rust é destinado aos programadores de sistemas. A sintaxe de Go é tão simples que, em menos de duas semanas, fui capaz de desenvolver um backend de Go totalmente funcional para SableCC. Isto, obviamente, porque estou familiarizado com as linguagens que inspiraram a sua criação. Tanto o Rust quanto o Go são linguagens de programação seguras relativamente à gestão de memória. Embora o Rust seja um pouco mais chatinho nesse domínio. O Go utiliza garbage collection, o que o torna seguro, mas mais lento em tempo de execução1. O Rust é mais rápido em tempo de execução, mas mais lento na compilação, enquanto que o Go compila em menos tempo.

O segundo factor que me levou a optar pelo Go foi a sua maturidade, assim como o facto de ser patrocinado pela Google. Enquanto que a primeira versão estável do Rust foi em 2015, a versão estável do Go foi lançada apenas em 2011. Pode não parecer muito, mas em 4 anos pode-se desenvolver muito com uma linguagem estável e ferramentas de compilação. O Rust foi inicialmente patrocinado pela Mozilla, mas devido a restrições financeiras acabou por se retirar do projecto em 2021. O Rust é agora gerido por uma organização sem fins lucrativos: a Rust Foundation.

Uma das coisas que me chamou a atenção relativamente ao Go foi o seu rico ecossistema de bibliotecas e as ferramentas que permitem acelerar o processo de desenvolvimento. Temos o godoc para documentação, gofmt para formatação de código e o glint para estilo de código. Além disso, dispõe de bibliotecas para quase tudo. Desde a programação de redes, à geração de analisadores sintáticos, ao desenvolvimento web, etc. O Rust também tem tudo isso, mas o Go tem muito mais, e além destas, existem outras ferramentas populares que foram desenvolvidas usando Go. Entre elas está o gerador de sites estáticos, Hugo, que utilizo para desenvolver todos os meus blogs.

O principal objectivo do Go era ser capaz de desenvolver e compilar rapidamente. De facto, quando se desenvolve um novo projecto, deve-se focar primeiro em torná-lo funcional, e depois optimizá-lo. Este tem sido o lema por detrás da linguagem Go. Agora que está bastante funcional, os seus desenvolvedores começaram a abordar a eficiência do tempo de execução, e embora ainda não seja apropriado para o desenvolvimento de sistemas operativos (operacionais no Brasil), um dia poderá vir a ser.

Em conclusão, acho ambas as linguagens excelentes para o seu campo de atuação. Contudo, acho o Go muito mais simples, mais maduro e tem um ciclo de desenvolvimento mais rápido. O Rust produz código mais rápido, mas o Go tem um tempo de compilação mais eficiente. O Rust foi desenvolvido para programação de sistemas, enquanto que o Go foi desenvolvido para o desenvolvimento mais rápido de softwares aplicativos. Qualquer linguagem pode ser usada para qualquer propósito, mas embora o Go seja apropriado para desenvolver compiladores, não é apropriado para o desenvolvimento de sistemas operativos (operacionais) ou device drivers.

Espero que a partilha das minhas razões por ter escolhido o Go em vez do Rust te tenha ajudado a obter um ponto de vista diferente relativamente à escolha entre as duas linguagens de programação. No entanto, se tiveres algum comentário ou um ponto de vista diferente, por favor, partilha-o nas minhas redes sociais. Gostaria de saber a tua opinião, o teu ponto de vista.


  1. De acordo com as notas da versão 1.18 do Go, a tempo de execução será 15% mais rápido, o que significa que de agora em diante os desenvolvedores irão se focar mais na optimização do código gerado. ↩︎