Para que serve o golang?
O golang é uma linguagem de programação de uso geral. O que significa que você poderia fazer quase tudo em golang.Por ser uma linguagem de programação de propósito geral, é mais fácil descrever o que você não pode fazer em golang. Então aqui está o que golang não é (ainda?) bom em:
- Firmware e Desenvolvimento do Kernel do SO. Em C, há um ambiente chamado freestanding, que não espera nada, realmente nada no lugar. Firmware e kernels de SO são tipicamente escritos em C, usando o ambiente freestanding.
- Desktop UI development. Isso pode ser feito, mas bibliotecas para fazer isso em golang ainda não estão tão maduras. As estrelas do rock neste campo ainda são C++/Qt, e Java com JavaFX.
- Web frontend. Golang pode ser compilado para JavaScript e Web Assembly, mas eu não chamaria isso de maturidade ainda.
- Mobile App development. Pode ser feito, mas isto também é relativamente novo, as estrelas do rock neste campo ainda são Java/Kotlin para Android, Objective-C/Swift para iOS, e para código portátil, JavaScript com ReactNative.
- XML. Há muita coisa acontecendo com o XML em editoras e outros lugares. As bibliotecas Golang para XML são primitivas e implementam apenas padrões muito antigos de XML. Aqui, Java é o líder da indústria, seguido por C# e JavaScript, principalmente por causa do Saxon.>li>SOAP do Michael Kay. Caso você tenha que falar com um sistema SOAP antigo, isso pode ser feito, mas não é tão agradável e confortável como seria em Java.
- Games. Golang tem a velocidade, mas não as bibliotecas/suporte. Dito isto, eu estou totalmente ansioso para Golang entrar neste espaço.
- Banking. A natureza do gerenciamento de pacotes do Golang torna difícil (mas não impossível) usá-lo em um ambiente bancário, onde normalmente não há acesso direto à internet, e onde cada biblioteca de terceiros só pode ser usada após aprovação de um departamento de segurança, após realizar um processo de escrutínio.
- Automotiva, Aeroespacial e Médica. Estas indústrias têm uma vasta infra-estrutura de métodos e ferramentas de verificação que ainda não existem no Golang.
Para todas estas limitações, é preciso dizer que é possível superar estas limitações, seja com poder de desenvolvimento suficiente do seu lado, ou esperando até que alguém o tenha feito. Em muitas destas, tenho visto o desenvolvimento e evolução de bibliotecas de terceiros.
Também, é fácil integrar Golang com C e todas as linguagens que facilitaram a integração com C, como Python. Muitas linguagens de programação, como Java, JavaScript têm uma forte desconexão com a ABI (Application Binding Interface) nativa. Para tais linguagens, uma interação com Golang é difícil. Para linguagens de programação que estão conectadas à ABI nativa, a interação com Golang é muito fácil.
Parte destas, eu não encontrei nenhuma limitação séria em Golang, e usá-la é divertido. Tornou-se uma das minhas linguagens goto para ferramentas de linha de comando e serviços REST (microserviços e monolitos), um espaço em que para mim compete com Java, C, Perl, e ocasionalmente JavaScript.
Go é uma linda linguagem com peculiaridades, como qualquer outra linguagem (Java, C#, JavaScript, Python, C, C++).