Quando eu comecei a programar em Go, não foi algo planejado. Houve uma oportunidade para trabalhar em um projeto e eventualmente a linguagem que seria utilizada pela equipe era Golang.

Até aquele momento eu apenas havia ouvido falar sobre Go, mas nunca havia programado. Hoje mais de dois anos depois, eu quero compartilhar os motivos pelo qual eu escolheria Go como parte dos meus projetos atuais e futuros.

Curva de aprendizado

Diferente de inúmeras linguagens, Go possui uma curva de aprendizado muito baixo, claro que para escrever um código de qualidade em Go leva tempo, mas para conseguir compreender e começar a produzir códigos leva muito menos tempo que em outras linguagens. A sintaxe utilizada é muito parecida com a sintaxe do C, em virtude disso programadores que já trabalham com C ou Java se adaptam rapidamente a linguagem.

Tempo de execução e compilação

Para muitos programadores iniciante, isso pode não parecer fazer tanto sentido, mas o tempo de execução do código em Go é muito rápido, isso ocorre pela maneira como Go lida com as coisas, porém também pelo fato de linguagens de mais alto nível como JavaScript, Java, Python necessitam de um VM (Virtual Machine) para converter o código para um arquivo binário que seja capaz de ser lido pelo hardware. Dessa maneira existe um camada a mais dentro da aplicação. Go é uma linguagem compilada, o resultado final do código em Go é um binário que pode ser executado, não sendo necessário uma VM para lidar com o código.

Disponível em grandes empresas

Para grandes empresas, o tempo de execução importa, mas por que? Tempo é dinheiro, uma vez que o código em Go precisa de pouco recurso para executar e precisa de menos tempo para compilar, muitas empresas passaram a olhar para Go como uma forma de reduzir custos. Um outro ponto muito importante é o tamanho do binário é muito pequeno comparado a outras linguagens, dependendo do tamanho do projeto, o binário pode não chegar a 1mb.

Cross-Compiling

A linguagem foi criada para ser cross compiling, ou seja é possível gerar o binário para múltiplas arquiteturas, possibilitando uma flexibilidade muito grande quando se treta de infraestrutura. A capacidade de possuir um único código fonte que seja possível rodar em diferentes arquiteturas ajuda muito as empresas

Ferramentas

Go é um projeto aberto (open-source). Isso faz com que a comunidade participe muito do desenvolvimento de ferramentas para desenvolvedores. Além das próprias disponibilizadas pela Google. Existem ferramentas que ajudam desde a documentação até a criar perfil de uso de recurso da aplicação.

Uma da ferramentas que é muito utilizada é o gofmt, ele é responsável por formatar o código seguindo um padrão pré-estabelecido pelo time de desenvolvimento da linguagem. Esse padrão faz com que os desenvolvedores não precisam ficar pensando “Existe uma maneira melhor de formatar isso?”.

Muitos times em outras linguagens passam por esse tipo de situação, onde possuímos n maneiras de realizar uma coisa. Porém Go tentou padronizar boa partes dessas decisões, claro que sempre existem maneiras diferentes de escrever um código em razão do que esperamos como resultado do mesmo, mas a maneira que o código será escrito, seguindo o padrão do gofmt, possibilitará que qualquer desenvolvedor de Go consiga entender o código.

Isso ajuda muito quando trabalhamos em projetos grandes ou eventualmente precisamos ler e entender o projeto de outras pessoas.

Biblioteca padrão

A Standard Library (stdlib) mantida pela equipe de desenvolvimento da linguagem é extramente completa, por muitas vezes não é necessário mais do que apenas ela para o criação de inúmeras soluções. Isso é fantástico por que nos permite uma segurança muito grande para retrocompatibilidade. Além de evitar que o projeto passe a depender de inúmeras bibliotecas.

Concorrência

Um dos pontos mais fortes que a linguagem oferece além de tudo citado acima, a concorrência é um fator muito forte da escolha de Go, a capacidade de poder trabalhar com processo simultâneo com pouco recurso é extramente poderoso. Isso nos permite lidar com milhares/milhões de dados ao tempo utilizando somente uma parcela de recurso. Diferentes de outra linguagens que são Single-Thread (NodeJS), o Go foi criado justamente para trabalhar em Multi-Threading.

E agora?

Desde que comecei a programar em Go me apaixonei pela sua forma simples  e pela capacidade, hoje depois de muito código com a linguagem, a única coisa que eu penso é: Porque eu não conheci Go antes?

Se após todo esse texto, você ainda não tem certeza se quer se aprofundar em Go, se realmente deve aprender Go. O que eu poderia indicar para você é, leia novamente.

signature