Developer Experience
7
min de leitura
9 de julho de 2020

Mas, por que Go?

Morvana Bonin
Backend Software Engenheiro com uma forte paixão por padrões de design, código limpo e arquitetura software .
Mais sobre o autor

* artigo elaborado em parceria com Andreia Camila da Silva

O post anterior introduziu uma noção do idioma e de onde começar seus estudos em Go. Neste post, nós lhe daremos as razões para usar Go.

Antes de listar os motivos, vamos dar uma olhada em alguns resultados da edição 2020 da Developer Survey, conduzida pela Stack Overflow. Go está em 12º lugar no ranking das tecnologias mais populares.

No entanto, está entre as 5 línguas mais amadas do ano.

A pesquisa mostra um contraste muito interessante. Parece que a Go ainda não ganhou uma fatia abrangente do mercado. Ao mesmo tempo, está entre as línguas mais queridas e desejadas pelos desenvolvedores. Este artigo visa listar algumas características interessantes do que pode se tornar seu idioma favorito. So, hey ho, let’s Go!

  • Fácil de aprender

Go tem uma sintaxe enxuta e simples, com poucas palavras-chave para memorizar, permitindo um aprendizado rápido. Mesmo para desenvolvedores acostumados a outras linguagens como Java e C, Go apresenta uma pequena curva de aprendizado. É o tipo de linguagem que faz com que o programador leia um livro ou a própria documentação e se pergunte: "Mas é só isso?"

  • Idioma Compilado

É comum ouvir que Go é uma linguagem de programação rápida. Uma das razões é que o código desenvolvido em Go é traduzido pelo compilador em código de máquina nativa, gerando binários consideravelmente pequenos. O compilador Go é muito eficaz na detecção de falhas de pré-compilação e até mesmo na prevenção de possíveis "desperdícios", tais como variáveis ou importações não utilizadas. Não há necessidade de usar as VMs.

  • Multiplataforma ou cross-compile

É possível gerar executáveis de código Go para várias plataformas através do comando $gobuild , informando o sistema operacional e a arquitetura alvo através das variáveis de ambiente GOOS e GOARCH. Desta forma, o código fonte permanecerá intacto. Também é possível fazer cross-compile da sua aplicação em um container portuário, confira aqui.

  • Garbage Collector

Garbage Collector recuperará a memória ocupada por objetos que não podem mais ser referenciados dentro do escopo de execução. Ela é processada simultaneamente, durante a execução do programa Go.

  • Simultaneidade

Go tem um suporte muito eficiente e leve para a execução simultânea do código através de goroutines e canais. As goroutines são análogos a threads, mas a um custo consideravelmente menor. Para criar uma goroutine basta adicionar a palavra-chave go antes que a função desejada seja chamada (ou através de funções anônimas). Isto fará com que ela seja executada como de costume, mas o programa não vai esperar por uma resposta antes de prosseguir para a próxima instrução. Os canais, por outro lado, possibilitam a comunicação entre as goroutines, permitindo a troca de valores entre eles através das operações de send e receive.

  • Uma opção interessante para a nuvem

Como mencionado no post anterior por Morvana Bonin, várias tecnologias de nuvem têm seu núcleo desenvolvido em Go. Isto é algo que nos leva a acreditar que a linguagem não só é adequada para o desenvolvimento das nuvens, mas também a compõe. Nesta entrevista, Steve Francia, Produto e Estratégia Leader da linguagem Go, comenta que "Seria razoável dizer que a nuvem moderna está escrita em Go". Outra vantagem é o Go Cloud Development Kit, que fornece APIs que auxiliam no desenvolvimento para os principais provedores de nuvens.

Um breve resumo dos motivos para usar GO

Go tem uma gama atraente de características, que também podem ser encontradas em outros idiomas, mas nem sempre são combinadas. Por outro lado, por valorizar a simplicidade, não possui certas conveniências como exceções, genéricos, sobrecarga de funções, herança ou anotações. No livro Go In Action, o autor menciona que "Go não é definido apenas pelo que inclui, mas pelo que não inclui". É com este pensamento que chegamos ao final deste artigo.

Referências e links úteis

Obrigado pela leitura!