A linguagem Go do Google, também conhecida como Golang, foi recentemente escolhida como a linguagem de programação do Tiobe de 2016, com base no seu rápido crescimento em popularidade ao longo do ano, mais do dobro da dos vice-campeões Dart e Perl. O índice de linguagem da Tiobe é baseado no “número de engenheiros qualificados no mundo todo, cursos e fornecedores terceirizados”, usando os resultados de vários mecanismos de busca.
Esse grande crescimento em popularidade traz consigo um interesse crescente em ferramentas de desenvolvimento para a linguagem de programação. Como a linguagem Go é distribuída em código aberto, completa com compiladores, ferramentas e bibliotecas, o que resta para os programadores encontrarem por si próprios são ambientes de edição Go-aware, sejam editores diretos ou ambientes de desenvolvimento integrado (IDEs), hospedados localmente ou na nuvem.
Para este artigo tentei olhar para todos os ambientes de edição Go-aware disponíveis e zerar aqueles que parecem valer a pena. Eu comecei com a lista oficial de IDEs e Plugins for Go e conheci os cerca de 35 itens da lista, até aqueles que podem merecer uma tentativa. Vou começar com um rápido levantamento dos produtos úteis que encontrei em cada categoria e terminar com uma olhada de perto nas minhas picks.
Nota que o desenvolvimento da linguagem Go tipicamente depende da variável GOPATH definida para a raiz do seu espaço de trabalho de desenvolvimento Go. Isso pode ser um problema para aplicativos GUI como editores, que nem sempre honram as configurações de ambiente.
Existem mais de uma dúzia de ferramentas de linguagem Go que você pode instalar em diretórios sob a pasta GOPATH com o comando go get
, uma vez que o próprio Go esteja instalado. Muitos dos editores que avaliei utilizam uma ou mais destas ferramentas.
Go IDEs
Existe um número surpreendente de IDEs que suportam Go. No entanto, o significado de “suporte” varia. Quatro IDEs se destacaram para mim: Gogland, Eclipse com goclipse, LiteIDE e Komodo IDE.
No topo, Gogland da JetBrains apresenta complementos inteligentes, inspeções e correções rápidas, refatoração simples, navegação rápida, popups rápidos, alguma geração de código muito básico, detecção recursiva de chamadas, popups do tipo expressão, destaque de ponto de saída, descoberta de uso, formatação de código, destaque semântico e dicas de parâmetros em seu editor. Sim, isso é muita funcionalidade para editar uma linguagem jovem. Outros recursos do Gogland incluem um depurador integrado, análise de cobertura, execução de testes, um menu para executar ferramentas Go e algumas funcionalidades não específicas que são similares ao que você encontrará em outros produtos JetBrains, como o IntelliJ IDEA. Gogland pode gerenciar múltiplas configurações GOPATH, ao invés de depender exclusivamente do ambiente do sistema GOPATH.
Gogland está atualmente disponível gratuitamente como um produto de acesso antecipado. Ele provavelmente terá um preço semelhante ao de outros produtos JetBrains, eventualmente. Espere que ele esteja disponível por assinatura anual por si só ou em um pacote com o resto das ferramentas JetBrains, com descontos para acadêmicos e colaboradores de código aberto.
A um nível ligeiramente inferior de complexidade, o Eclipse com goclipse fornece destaque de sintaxe, indentação automática e esboço em seu editor, tudo no espírito de outros módulos da linguagem Eclipse, como o Java. As integrações incluem depuração com GDB, busca de definições com as ferramentas guru e godef Go, e autocompletar com a ferramenta gocode. Eclipse e o plugin goclipse são livres e de código aberto.
LiteIDE oferece um navegador de pacotes, visualização de classes e contorno, navegador de documentos, navegação por código, localização de usos e refatoração de código em seu editor. As integrações apresentam suporte a gocode, índice GOPATH API, depuração com GDB, e um playground Go. LiteIDE é gratuito e de código aberto.
Komodo IDE suporta Go verificação de sintaxe (linting) e realce, coloração de sintaxe, dobramento de código e outros recursos que melhoram a produtividade. Komodo também suporta Go code intelligence com complementos, dicas de chamada, contornos e go-to-definition. A refatoração inclui renomear variáveis e membros de classe e extração de métodos. Komodo suporta teste de unidade Go, colaboração de código, controle de versão, shells interativas e criação de perfil de código. A principal reivindicação da Komodo para a fama é que ela suporta todas as principais linguagens de código aberto, incluindo Python, Node.js, Ruby, Go, Perl e Tcl.
Komodo IDE é um produto comercial. Komodo Editor, que tem um subconjunto das capacidades da IDE, é gratuito.
Go editors
Enquanto uma IDE pode fornecer todas as funcionalidades que você deseja para o desenvolvimento de código, IDEs podem muitas vezes sentir-se “pesadas”. Em outras palavras, eles podem levar muito tempo para iniciar, usar muita memória e, às vezes, sentir-se insensível quando você digita o código, porque eles estão fazendo muito em segundo plano. Editores de código podem às vezes ser preferíveis, especialmente para sessões curtas, desde que você não seja incomodado por ter que mudar para uma janela de shell de linha de comando separada para compilação.
Plugins podem às vezes adicionar recursos semelhantes aos IDEs aos editores de código. Isso normalmente é bom, desde que a sobrecarga periódica de manter os plugins atualizados e a sobrecarga constante dos processos de execução dos plugins em segundo plano não retarde sua edição.
Atom, Brackets e Visual Studio Code são os três editores que se destacaram para mim por trabalhar na linguagem Go. Todos são livres e de código aberto. No entanto, BBEdit, Emacs, Notepad++, Sublime Text, TextMate e Vim integram-se todos com plugins de linguagem Go, e todos têm os seus proponentes. Emacs, Notepad++, e Vim são gratuitos e de código aberto. BBEdit é comercial, mas seu irmão mais novo TextWrangler é gratuito.
O editor Atom do GitHub vem com o pacote de linguagem Go, que suporta gramática Go e snippets. Pacotes adicionais para Go trazem mais funcionalidades. Por exemplo, o go-plus integra-se com muitas ferramentas Go padrão (para autocompletar, formatação, impressão, teste) para fornecer um ambiente semelhante ao IDE, e o go-debug integra-se com o depurador delve.
O editor Brackets da Adobe tem várias extensões de comunidade para suporte a Go. Estas incluem Go-IDE, que usa gocode
para autocompletar; Go-Syntax, que usa CodeMirror para destacar a sintaxe; e Improved Go Formatter, que usa gofmt
para formatar o código e goimports
para gerenciar as importações.
Visual Studio Code suporta o destaque da sintaxe Go fora da caixa. Recursos adicionais são fornecidos pelo plugin vscode-go, que se integra com mais de uma dúzia de ferramentas Go padrão. Se você não tiver seu GOPATH configurado, o plugin irá pedir que você o configure assim que você tentar editar um arquivo de idioma Go; você pode configurá-lo para o projeto e/ou o ambiente do sistema. Se você não tiver as ferramentas Go instaladas, o plugin pedirá para instalá-las nos lugares padrão determinados pelo seu GOPATH.
I IDEs Go baseadas em nuvem
I IDEs baseadas em nuvem são uma inovação relativamente recente no espaço de desenvolvimento de software. Eles têm duas vantagens inerentes: Não requerem nenhuma configuração local além de um navegador compatível, e podem permitir a edição por vários desenvolvedores, se projetado para isso. Do lado negativo, os IDEs baseados em nuvem muitas vezes sofrem de atraso, o que pode deixar os desenvolvedores loucos e interferir com o “fluxo” que permite que os codificadores sejam mais produtivos. Atualmente, três IDEs baseados em nuvem suportam a linguagem Go: Cloud9, CodeEnv e Wide.
Cloud9 é um IDE baseado em nuvem multilingue que suporta Go out of the box. Ele se conecta com os repositórios GitHub, Bitbucket e Google Cloud Platform, e tem espaços de trabalho que você pode compartilhar e clonar. Além de um editor de código com um amplo conjunto de recursos e um sistema de arquivos on-line, ele tem MySQL e outros bancos de dados, terminal e janelas imediatas, e atalhos de teclado personalizáveis, com os modos Vim, Emacs e Texto Sublime fornecidos como padrão. Auto-completar e depuração para Go ainda são experimentais, mas o destaque de sintaxe, o painel de execução, a vista de contorno e a impressão são totalmente suportados.
CodeEnv também é um IDE baseado em nuvem multilingue. Existe uma imagem de ambiente base Go para ambientes privados, bem como uma imagem de ambiente Go pública. Cada ambiente consiste em um sistema de arquivos, um editor de código simples com destaque de sintaxe e uma janela de terminal. Existem actualmente oito opções de imagem base e seis opções de imagem back-end.
Wide é um IDE baseado na Web para equipas que está escrito em e para a linguagem de programação Go. Ele usa um editor de programação temático baseado em CodeMirror com realce de sintaxe assistida por gocodes, autocompletar, formatação de código e colaboração em tempo real. Wide cita LiteIDE como uma dependência.
Gogland
JetBrains Gogland, atualmente em estado de pré-visualização inicial, parece ser o IDE Go mais completo disponível, embora ainda não tenha sido lançado comercialmente. Seu depurador integrado, análise de cobertura e execução de testes vão muito além de distinguí-lo dos editores de execução do moinho que possuem algumas integrações de ferramentas.
Na captura de tela abaixo, onde eu uso o Gogland para examinar alguns dos códigos-fonte do projeto Go Language, você pode ver vários recursos de edição do Gogland, incluindo a árvore do projeto, uma dica de inspeção (a lâmpada), destaque do ponto de saída e navegação rápida usando a barra de navegação à direita (a caixa de código com números de linha fora de ordem). Para mais screenshots mostrando o que o Gogland pode fazer, vou consultar o guia de características do JetBrains.
Gogland usa o mesmo ecossistema de plugins JetBrains do IntelliJ IDEA e WebStorm, e já inclui muitas características relevantes herdadas desses produtos. Por exemplo, você pode usar o Gogland para trabalhar com HTML e linguagens e frameworks front-end, exatamente como o WebStorm. Gogland também permite que você trabalhe com bancos de dados SQL, como IntelliJ IDEA e DataGrip. Se você precisa combinar o suporte a Node.js com seu código Go ou precisa do suporte a Subversion além da integração com Git, é uma questão rápida de adicionar os plugins.
Visual Studio Code
Visual Studio Code com o plugin vscode-go é um bom editor Go que funciona bem e tem boa integração com Git. Visual Studio Code precisa de atualizações e um reinício pelo menos mensalmente, mas raramente se sente lento durante a edição. In the screenshot below we see the explorer on the left, Go tools installation at the bottom right, and code editing at the top right.
The Go tools enable the vscode-go plugin, which supplies many editing and code checking features. These include completion lists (using gocode
), signature help (using gogetdoc
or godef
plus godoc
), snippets, quick info (using gogetdoc
or godef
plus godoc
), go to definition (using gogetdoc
or godef
plus godoc
), find references (using guru
), file outline (using go-outline
), workspace symbol search (using go-symbols
), rename (using gorename
), build-on-save (usando go build
e go test
), lint-on-save (usando golint
ou gometalinter
), (usando goreturns
ou goimports
ou gofmt
), gerar o esqueleto dos testes unitários (usando gotests
), adicionar importações (usando gopkgs
), e depuração parcialmente implementada (usando delve
).
Isso é muita funcionalidade útil, embora não tanto quanto você obtém no IDE Gogland. O screencast no ficheiro vscode-go readme faz um bom trabalho a demonstrar como funciona a maioria das funcionalidades.
Cloud9
Das três IDEs de nuvem que suportam Go, a mais interessante actualmente parece ser a Cloud9. Tem o editor de programação mais funcional das três e suporta cerca de 17 linguagens, além do Go. Embora seu código Go esteja marcado como experimental, eu achei que funcionou muito bem e não causou muitos atrasos na digitação.
Cloud9’s Ace editor suporta atualmente destaque de sintaxe para mais de 100 linguagens de programação. O número 17 acima é para linguagens que também têm outro suporte, como executar o código, linting, outlining, code completion, e debugging.
Cloud9 workspaces atualmente rodam Ubuntu 14.04 e Go 1.7.3. Você pode atualizar sua instalação Go a partir do Bash shell (veja a parte inferior da captura de tela), assim como executar seu Go e outros programas a partir do Bash.
Como vimos, você tem muitas opções possíveis de ambiente de programação para desenvolvimento Go. Embora eu tenha escolhido Gogland como o melhor IDE Go completo, Visual Studio Code com vscode-go como o melhor editor Go, e Cloud9 como o melhor IDE Go em nuvem para mim, existem mais de 30 outras possibilidades. Dado o quão pessoal a escolha de ambientes de desenvolvimento de software pode ser, você deve tentar alguns e ver quais se encaixam melhor em suas necessidades e preferências.