Les meilleurs IDE et éditeurs de langage Go

Le langage Go de Google, alias Golang, a récemment été choisi comme langage de programmation de Tiobe de 2016, en raison de sa croissance rapide en popularité au cours de l'année, plus du double de celle des finalistes Dart et Perl. L'index linguistique de Tiobe est basé sur le «nombre d'ingénieurs qualifiés dans le monde, de cours et de fournisseurs tiers», en utilisant les résultats de plusieurs moteurs de recherche.

Cette croissance de popularité s'accompagne d'un intérêt accru pour les outils de développement pour le langage de programmation. Étant donné que le langage Go est distribué sous forme open source avec des compilateurs, des outils et des bibliothèques, ce qu'il reste aux programmeurs de trouver par eux-mêmes, ce sont les environnements d'édition Go-aware, qu'il s'agisse d'éditeurs simples ou d'environnements de développement intégrés (IDE), hébergés localement ou nuage.

Pour cet article, j'ai essayé d'examiner tous les environnements d'édition compatibles Go disponibles et de me concentrer sur ceux qui semblent en valoir la peine. J'ai commencé avec la liste officielle des IDE et des plugins pour Go et j'ai vanné les quelque 35 éléments de la liste jusqu'à ceux qui pourraient mériter un essai. Je vais commencer par un rapide tour d'horizon des produits utiles que j'ai trouvés dans chaque catégorie et terminer par un examen attentif de mes meilleurs choix.

Notez que le développement du langage Go repose généralement sur la variable GOPATH définie à la racine de votre espace de travail de développement Go. Cela peut être un problème pour les applications GUI telles que les éditeurs, qui ne respectent pas toujours les paramètres d'environnement.

Il existe plus d'une douzaine d'outils de langage Go que vous pouvez installer dans des répertoires sous le dossier GOPATH avec la go getcommande, une fois Go lui-même installé. De nombreux éditeurs que j'ai évalués utilisent un ou plusieurs de ces outils.

Aller aux IDE

Il existe un nombre surprenant d'IDE prenant en charge Go. Cependant, la signification de «soutien» varie. Quatre IDE se sont démarqués pour moi: Gogland, Eclipse avec goclipse, LiteIDE et Komodo IDE.

Dans le haut de gamme, Gogland de JetBrains propose des complétions intelligentes, des inspections et des correctifs rapides, une refactorisation simple, une navigation rapide, des popups rapides, une génération de code très basique, une détection d'appels récursifs, des popups de type d'expression, la mise en évidence des points de sortie, la recherche d'utilisation, le formatage du code mise en évidence sémantique et conseils de paramètres dans son éditeur. Oui, c'est beaucoup de fonctionnalités pour éditer une jeune langue. Les autres fonctionnalités de Gogland incluent un débogueur intégré, une analyse de couverture, un test en cours d'exécution, un menu pour exécuter les outils Go et certaines fonctionnalités non spécifiques à Go, similaires à celles que vous trouverez dans d'autres produits JetBrains, tels que IntelliJ IDEA. Gogland peut gérer plusieurs paramètres GOPATH, plutôt que de se fier exclusivement à l'environnement système GOPATH.

Gogland est actuellement disponible gratuitement en tant que produit à accès anticipé. Son prix sera probablement le même que celui des autres produits JetBrains. Attendez-vous à ce qu'il soit disponible par abonnement annuel, seul ou dans un ensemble avec le reste des outils de JetBrains, avec des réductions pour les universitaires et les contributeurs open source.

À un niveau de complexité légèrement inférieur, Eclipse avec goclipse fournit la coloration syntaxique, l'indentation automatique et la mise en évidence dans son éditeur, le tout dans l'esprit des autres modules du langage Eclipse tels que Java. Les intégrations incluent le débogage avec GDB, la recherche de définitions avec les outils guru et godef Go, et la saisie semi-automatique avec l'outil gocode. Eclipse et le plugin goclipse sont gratuits et open source.

LiteIDE propose un navigateur de packages, une vue et un plan de classe, un navigateur de documents, une navigation dans le code, des utilisations de recherche et une refactorisation de code dans son éditeur. Les intégrations incluent la prise en charge de gocode, l'index de l'API GOPATH, le débogage avec GDB et un terrain de jeu Go. LiteIDE est gratuit et open source.

Komodo IDE prend en charge la vérification de la syntaxe Go (peluchage) et la mise en évidence, la coloration de la syntaxe, le pliage de code et d'autres fonctionnalités améliorant la productivité. Komodo prend également en charge l'intelligence du code Go avec des complétions, des conseils d'appel, des contours et une définition de base. La refactorisation comprend le changement de nom des variables et des membres de classe et l'extraction de méthodes. Komodo prend en charge les tests unitaires Go, la collaboration de code, le contrôle de version, les shells interactifs et le profilage de code. La principale revendication de renommée de Komodo est qu'il prend en charge tous les principaux langages open source, y compris Python, Node.js, Ruby, Go, Perl et Tcl.

Komodo IDE est un produit commercial. Komodo Editor, qui possède un sous-ensemble des capacités de l'EDI, est gratuit.

Éditeurs Go

Alors qu'un IDE peut fournir toutes les fonctionnalités dont vous avez besoin pour développer du code, les IDE peuvent souvent sembler «lourds». En d'autres termes, ils peuvent prendre du temps à démarrer, utiliser beaucoup de mémoire et parfois se sentir insensibles lorsque vous tapez du code parce qu'ils en font trop en arrière-plan. Les éditeurs de code peuvent parfois être préférables, en particulier pour les sessions courtes, tant que vous n'êtes pas dérangé par le passage à une fenêtre shell de ligne de commande distincte pour la compilation.

Les plugins peuvent parfois ajouter des fonctionnalités de type IDE aux éditeurs de code. C'est généralement bien, tant que la surcharge périodique liée à la mise à jour des plugins et la surcharge constante des plugins exécutant les processus en arrière-plan ne ralentissent pas votre édition.

Atom, Brackets et Visual Studio Code sont les trois éditeurs qui se sont démarqués pour moi pour travailler dans le langage Go. Tous sont gratuits et open source. Néanmoins, BBEdit, Emacs, Notepad ++, Sublime Text, TextMate et Vim s'intègrent tous aux plugins de langage Go, et tous ont leurs partisans. Emacs, Notepad ++ et Vim sont gratuits et open source. BBEdit est commercial, mais son petit frère TextWrangler est gratuit.

L'éditeur Atom de GitHub est livré avec le package language-go, qui prend en charge la grammaire et les extraits de code Go. Des packages supplémentaires pour Go apportent plus de fonctionnalités. Par exemple, go-plus s'intègre à de nombreux outils Go standard (pour l'auto-complétion, le formatage, le peluchage, les tests) pour fournir un environnement de type IDE, et go-debug s'intègre avec le débogueur delve.

L'éditeur Brackets d'Adobe possède plusieurs extensions communautaires pour la prise en charge de Go. Ceux-ci incluent Go-IDE, qui utilise gocodepour l'auto-complétion; Go-Syntax, qui utilise CodeMirror pour la coloration syntaxique; et Amélioration de Go Formatter, qui utilise gofmtpour formater le code et goimportspour gérer les importations.

Visual Studio Code prend en charge la coloration syntaxique Go prête à l'emploi. Des fonctionnalités supplémentaires sont fournies par le plugin vscode-go, qui s'intègre à plus d'une douzaine d'outils Go standard. Si vous n'avez pas défini votre GOPATH, le plugin vous demandera de le définir dès que vous essayez de modifier un fichier de langue Go; vous pouvez le définir pour le projet et / ou l'environnement système. Si vous n'avez pas installé les outils Go, le plugin vous demandera de les installer aux emplacements standard comme déterminé par votre GOPATH.

IDE Go basés sur le cloud

Les IDE basés sur le cloud sont une innovation relativement récente dans le domaine du développement logiciel. Ils présentent deux avantages inhérents: ils ne nécessitent aucune configuration locale autre qu'un navigateur compatible, et ils peuvent permettre la modification par plusieurs développeurs s'ils sont conçus pour cela. En revanche, les IDE basés sur le cloud souffrent souvent d'un décalage, ce qui peut rendre les développeurs fous et interférer avec le «flux» qui permet aux codeurs d'être plus productifs. Trois IDE basés sur le cloud prennent actuellement en charge le langage Go: Cloud9, CodeEnv et Wide.

Cloud9 est un IDE multilingue basé sur le cloud qui prend en charge Go out of the box. Il se connecte aux référentiels GitHub, Bitbucket et Google Cloud Platform, et dispose d'espaces de travail que vous pouvez partager et cloner. En plus d'un éditeur de code avec un ensemble complet de fonctionnalités et un système de fichiers en ligne, il dispose de MySQL et d'autres bases de données, de terminaux et de fenêtres immédiates, et de liaisons de clavier personnalisables, avec les modes Vim, Emacs et Sublime Text fournis en standard. L'auto-complétion et le débogage pour Go sont encore expérimentaux, mais la coloration syntaxique, le panneau d'exécution, la vue d'ensemble et le linting sont tous entièrement pris en charge.

CodeEnv est également un IDE basé sur le cloud multilingue. Il existe une image d'environnement de base Go pour les environnements privés, ainsi qu'une image d'environnement Go publique. Chaque environnement se compose d'un système de fichiers, d'un simple éditeur de code avec coloration syntaxique et d'une fenêtre de terminal. Il existe actuellement huit choix d'images de base et six choix d'images d'arrière-plan.

Wide est un IDE Web pour les équipes écrit dans et pour le langage de programmation Go. Il utilise un éditeur de programmation thématique basé sur CodeMirror avec la coloration syntaxique assistée par gocode, la saisie semi-automatique, le formatage du code et la collaboration en temps réel. Wide cite LiteIDE comme une dépendance.

Gogland

JetBrains Gogland, actuellement dans un état de prévisualisation précoce, semble être l'IDE Go le plus complet disponible, bien qu'il n'ait pas encore été commercialisé. Son débogueur intégré, son analyse de couverture et son exécution de tests contribuent grandement à le distinguer des éditeurs ordinaires qui ont quelques intégrations d'outils.

Dans la capture d'écran ci-dessous, où j'utilise Gogland pour examiner une partie du code source du projet en langage Go, vous pouvez voir plusieurs fonctionnalités d'édition de Gogland, y compris l'arborescence du projet, un indice d'inspection (l'ampoule), la mise en évidence du point de sortie et la navigation rapide à l'aide de la barre de navigation à droite (la case de code avec les numéros de ligne dans le désordre). Pour plus de captures d'écran montrant ce que Gogland peut faire, je vous renvoie au guide des fonctionnalités de JetBrains.

Gogland utilise le même écosystème de plugins JetBrains qu'IntelliJ IDEA et WebStorm, et il comprend déjà de nombreuses fonctionnalités pertinentes héritées de ces produits. Par exemple, vous pouvez utiliser Gogland pour travailler avec des langages et des frameworks HTML et frontaux, exactement comme WebStorm. Gogland vous permet également de travailler avec des bases de données SQL, comme IntelliJ IDEA et DataGrip. Si vous avez besoin de combiner la prise en charge de Node.js avec votre codage Go ou si vous avez besoin de la prise en charge de Subversion en plus de l'intégration Git, il suffit d'ajouter les plugins.

Code Visual Studio

Visual Studio Code avec le plugin vscode-go est un bel éditeur Go qui fonctionne bien et a une bonne intégration Git. Visual Studio Code a besoin de mises à jour et d'un redémarrage au moins une fois par mois, mais il semble rarement lent lors de l'édition. Dans la capture d'écran ci-dessous, nous voyons l'explorateur à gauche, l'installation des outils Go en bas à droite et l'édition de code en haut à droite.

Les outils Go activent le plugin vscode-go, qui fournit de nombreuses fonctionnalités d'édition et de vérification de code. Il s'agit notamment des listes de complétion (en utilisant gocode), de l'aide à la signature (en utilisant gogetdocou godefplus godoc), des extraits de code, des informations rapides (en utilisant gogetdocou en godefplus godoc), aller à la définition (en utilisant gogetdocou godefplus godoc), rechercher des références (en utilisant guru), le contour de fichier (en utilisant go-outline), la recherche de symboles d'espace de travail (en utilisant go-symbols), renommer (en utilisant gorename), build-on-save (en utilisant go buildet go test), lint-on-save (en utilisant golintou gometalinter), formater (en utilisant goreturnsou goimportsou gofmt), générer un squelette de tests unitaires (en utilisant gotests), ajouter des importations (en utilisant gopkgs), et débogage partiellement implémenté (en utilisantdelve).

C'est beaucoup de fonctionnalités utiles, mais pas autant que vous obtenez dans l'IDE Gogland. Le screencast dans le fichier readme de vscode-go montre bien comment la plupart des fonctionnalités fonctionnent.

Cloud 9

Parmi les trois IDE cloud prenant en charge Go, le plus intéressant semble actuellement être Cloud9. Il possède l'éditeur de programmation le plus fonctionnel des trois et prend en charge environ 17 langues en plus de Go. Bien que son achèvement du code de langage Go soit marqué comme expérimental, j'ai trouvé qu'il fonctionnait plutôt bien et ne causait pas beaucoup de retards de frappe.

L'éditeur Ace de Cloud9 prend actuellement en charge la coloration syntaxique pour plus de 100 langages de programmation. Le numéro 17 ci-dessus est pour les langues qui ont également d'autres prises en charge, telles que l'exécution du code, le linting, la description, la complétion de code et le débogage.

Les espaces de travail Cloud9 exécutent actuellement Ubuntu 14.04 et Go 1.7.3. Vous pouvez mettre à jour votre installation Go à partir du shell Bash (voir en bas de la capture d'écran), ainsi qu'exécuter votre Go et d'autres programmes à partir de Bash.

Comme nous l'avons vu, vous avez de nombreux choix possibles d'environnement de programmation pour le développement Go. Alors que j'ai choisi Gogland comme le meilleur IDE Go complet, Visual Studio Code avec vscode-go comme meilleur éditeur Go et Cloud9 comme meilleur IDE Go cloud pour moi , il y a plus de 30 autres possibilités. Étant donné à quel point le choix des environnements de développement logiciel peut être personnel, vous devriez en essayer quelques-uns et voir lequel correspond le mieux à vos besoins et à vos préférences.