Quatorze Anos de Go
Quatorze anos após seu lançamento, a linguagem Go é amplamente vista como uma infraestrutura “chata, mas confiável”: fácil de aprender, rápida para compilar, com ferramentas fortes e uma biblioteca padrão que impulsiona grande parte do ecossistema atual de cloud e DevOps (Docker, Kubernetes, Terraform e mais). Os comentaristas contrastam o conjunto de recursos deliberadamente minimalista de Go com linguagens mais ricas, porém mais complexas, como Rust, Java e Python, debatendo trade-offs em torno de generics, a falta de tipos soma e segurança contra null, tratamento de erros e ergonomia de concorrência. Muitos veem a compatibilidade retroativa de Go e o deploy com binário único como grandes forças para serviços backend de longa duração, mesmo quando outros criticam suas limitações de design e o papel central do Google em sua evolução.
Popularidade da linguagem & percepção
- Os comentaristas observam que Go atrai tanto entusiasmo quanto “language bashing”, muitas vezes enquadrado como “Go não é Rust”.
- Alguns argumentam que esse bashing é sinal de popularidade e de equipes sendo forçadas a usar Go quando prefeririam outra coisa.
- Vários veem Go como tendo entrado na categoria de “chato, mas seguro”: menos hype, amplamente usado, com menos advocacy.
Status de “moderna” e pares
- Go é visto como uma das linguagens mainstream mais jovens em comparação com Java/Python/C++.
- Muitas vezes é contrastado com Rust, Swift, Kotlin, Java, C#, JavaScript e Python em termos de recursos, segurança e ecossistemas.
Curva de aprendizado & experiência do desenvolvedor
- Muitos relatam que Go é muito fácil de aprender, especialmente para desenvolvedores de PHP/Python/Java/C.
- Outros têm dificuldade com a sintaxe/semântica de Go e/ou Rust e recebem o conselho de escolher uma, não ambas, e construir projetos reais.
- As ferramentas (formatador, linter, suporte de IDE, harness de testes/bench) são repetidamente elogiadas.
Pontos fortes comumente elogiados
- Compilação rápida e binários estáticos pequenos.
- Biblioteca padrão sólida, especialmente para rede e HTTP.
- Deploy simples (um único binário), boa adequação para cloud-native e ferramentas CLI.
- Primitivas de concorrência (goroutines, channels) vistas como poderosas, com bom desempenho.
- A compatibilidade retroativa do Go 1 é destacada como um grande trunfo.
Críticas & recursos ausentes
- Reclamações frequentes sobre:
nile a falta de tipos option/result ou segurança contra null.- Enums fracos e ausência de tipos soma/pattern matching.
- Tratamento de erros verboso e fácil de esquecer (
if err != nil). - Pontas ásperas em interfaces, generics e reflection.
- Alguns veem Go como excessivamente restritivo/minimalista; outros apreciam isso por reduzir o over-engineering.
Concorrência & panics
- Debate sobre se Go realmente tem “ótima ergonomia de concorrência”.
- Comparações com Erlang/Elixir sugerem que as primitivas de Go são fáceis de usar, mas difíceis de usar corretamente, com riscos de races e deadlocks.
- O fato de um panic não recuperado em qualquer goroutine derrubar o programa inteiro é visto como um defeito de design significativo; há um debate estendido sobre se panics deveriam ser recuperáveis e como isso se compara ao Rust.
Filosofia de design, ecossistema & longevidade
- Ênfase repetida de que Go deliberadamente mantém o conjunto de recursos pequeno, priorizando legibilidade e manutenção sobre expressividade.
- Alguns se preocupam com a dependência do Google; outros argumentam que o status open-source e a adoção ampla tornam seu futuro relativamente seguro.
- Go é visto como excelente para serviços de backend, ferramentas de infra/devops e para “fazer as coisas”, mas não como uma boa opção (hoje) para ML, computação científica, gráficos ou trabalho pesado em desktop/embedded.