De beste Go taal IDE’s en editors

Google’s Go taal, aka Golang, werd onlangs gekozen als Tiobe’s programmeertaal van 2016, gebaseerd op zijn snelle groei in populariteit gedurende het jaar, meer dan twee keer die van runners-up Dart en Perl. Tiobe’s taal index is gebaseerd op het “aantal geschoolde ingenieurs wereldwijd, cursussen, en derde-partij leveranciers,” met behulp van de resultaten van meerdere zoekmachines.

Die grote groei in populariteit brengt een toegenomen interesse in ontwikkeltools voor de programmeertaal met zich mee. Omdat de Go taal wordt gedistribueerd in open source vorm, compleet met compilers, tools en bibliotheken, moeten programmeurs zelf op zoek naar Go-bewuste ontwikkelomgevingen, of het nu gaat om gewone editors of geïntegreerde ontwikkelomgevingen (IDE’s), lokaal gehost of in de cloud.

Voor dit artikel heb ik geprobeerd te kijken naar alle beschikbare Go-bewuste ontwikkelomgevingen en me te concentreren op diegene die de moeite waard lijken. Ik ben begonnen met de officiële lijst van IDE’s en Plugins voor Go en heb de ongeveer 35 items op de lijst teruggebracht tot degenen die het waard zijn om uit te proberen. Ik begin met een kort overzicht van de nuttige producten die ik in elke categorie heb gevonden en eindig met een blik op mijn top picks.

Merk op dat Go taal ontwikkeling typisch vertrouwt op de GOPATH variabele die is ingesteld op de root van je Go ontwikkel werkruimte. Dat kan een probleem zijn voor GUI applicaties zoals editors, die niet altijd de omgevingsinstellingen respecteren.

Er zijn meer dan een dozijn Go taaltools die je kunt installeren in mappen onder de GOPATH map met het go get commando, zodra Go zelf is geïnstalleerd. Veel van de editors die ik heb geëvalueerd gebruiken een of meer van deze tools.

Go IDEs

Er is een verrassend aantal IDEs dat Go ondersteunt. De betekenis van “ondersteuning” varieert echter. Vier IDE’s sprongen er voor mij uit: Gogland, Eclipse met goclipse, LiteIDE, en Komodo IDE.

Aan de top biedt Gogland van JetBrains slimme completies, inspecties en snelle fixes, eenvoudige refactoring, snelle navigatie, snelle popups, een aantal zeer elementaire code generatie, recursieve aanroep detectie, expressie type popups, exit point highlighting, usage finding, code formatting, semantische highlighting, en parameter hints in zijn editor. Ja, dat is een hoop functionaliteit voor het bewerken van een jonge taal. Andere Gogland functies zijn een geïntegreerde debugger, coverage analyse, het uitvoeren van testen, een menu voor het uitvoeren van Go tools, en een aantal niet-Go-specifieke functionaliteit die vergelijkbaar is met wat je vindt in andere JetBrains producten, zoals IntelliJ IDEA. Gogland kan meerdere GOPATH instellingen beheren, in plaats van uitsluitend te vertrouwen op de GOPATH omgeving van het systeem.

Gogland is momenteel gratis beschikbaar als een early-access product. Het zal waarschijnlijk worden geprijsd langs de lijnen van andere JetBrains producten uiteindelijk. Verwacht wordt dat het beschikbaar komt via een jaarlijks abonnement, hetzij op zichzelf of in een bundel met de rest van JetBrains’ tools, met kortingen voor academici en open source contribuanten.

Op een iets lager niveau van complexiteit biedt Eclipse met goclipse syntax highlighting, automatische inspringing, en outlining in de editor, allemaal in de geest van andere Eclipse taalmodules zoals Java. Integraties omvatten debuggen met GDB, definitie zoeken met de goeroe en godef Go tools, en autocomplete met de gocode tool. Eclipse en de goclipse plugin zijn gratis en open source.

LiteIDE heeft een package browser, class view en outline, document browser, code navigatie, find usages, en code refactoring in zijn editor. Integraties zijn gocode ondersteuning, GOPATH API index, debuggen met GDB, en een Go speeltuin. LiteIDE is gratis en open source.

Komodo IDE ondersteunt Go syntaxcontrole (linting) en highlighting, syntaxkleuring, codevouwen, en andere productiviteitsverhogende functies. Komodo ondersteunt ook Go-code-intelligentie met completions, call tips, outlines, en go-to-definition. Refactoring omvat het hernoemen van variabelen en klasseleden en methode-extractie. Komodo ondersteunt Go unit testing, code samenwerking, versiecontrole, interactieve shells en code profiling. Komodo’s belangrijkste claim is dat het alle belangrijke open source talen ondersteunt, waaronder Python, Node.js, Ruby, Go, Perl en Tcl.

Komodo IDE is een commercieel product. Komodo Editor, dat een subset van de mogelijkheden van de IDE heeft, is gratis.

Go editors

Terwijl een IDE alle functionaliteit kan bieden die je wilt voor het ontwikkelen van code, kunnen IDE’s vaak “zwaar” aanvoelen. Met andere woorden, het kan lang duren voordat ze zijn opgestart, ze gebruiken veel geheugen en voelen soms niet aan terwijl je code typt, omdat ze te veel op de achtergrond doen. Code-editors kunnen soms de voorkeur verdienen, vooral voor korte sessies, zolang je maar geen last hebt van het moeten overschakelen naar een apart command-line shell venster voor het compileren.

Plugins kunnen soms IDE-achtige functies toevoegen aan code-editors. Dat is meestal goed, zolang de periodieke overhead van het up-to-date houden van de plugins en de constante overhead van de plugins die processen op de achtergrond draaien je niet vertragen.

Atom, Brackets, en Visual Studio Code zijn de drie editors die er voor mij uitsprongen voor het werken in de taal Go. Ze zijn allemaal gratis en open source. BBEdit, Emacs, Notepad++, Sublime Text, TextMate, en Vim integreren echter allemaal met Go taal plugins, en ze hebben allemaal hun voorstanders. Emacs, Notepad++, en Vim zijn gratis en open source. BBEdit is commercieel, maar zijn kleine broertje TextWrangler is gratis.

De Atom editor van GitHub wordt geleverd met het language-go pakket, dat Go grammatica en snippets ondersteunt. Aanvullende pakketten voor Go brengen meer functionaliteit. Bijvoorbeeld, go-plus integreert met veel standaard Go tools (voor autocompletion, formatteren, linting, testen) om een IDE-achtige omgeving te bieden, en go-debug integreert met de delve debugger.

De Brackets editor van Adobe heeft verschillende community extensies voor Go ondersteuning. Deze omvatten Go-IDE, dat gocode gebruikt voor autocompletion; Go-Syntax, dat CodeMirror gebruikt voor syntax highlighting; en Improved Go Formatter, dat gofmt gebruikt om code te formatteren en goimports om imports te beheren.

Visual Studio Code ondersteunt Go syntax highlighting out of the box. Extra functies worden geleverd door de vscode-go plugin, die integreert met meer dan een dozijn standaard Go tools. Als u uw GOPATH niet hebt ingesteld, zal de plugin u vragen dit te doen zodra u probeert een Go-taalbestand te bewerken; u kunt het instellen voor het project en/of de systeemomgeving. Als je de Go tools niet hebt geïnstalleerd, zal de plugin vragen om ze op de standaard plaatsen te installeren zoals bepaald door je GOPATH.

Cloud-gebaseerde Go IDEs

Cloud-gebaseerde IDEs zijn een relatief recente innovatie in de software ontwikkeling wereld. Ze hebben twee inherente voordelen: Ze vereisen geen lokale setup anders dan een compatibele browser, en ze kunnen bewerking door meerdere ontwikkelaars toestaan als ze daarvoor ontworpen zijn. De keerzijde is dat cloud-gebaseerde IDE’s vaak last hebben van vertraging, wat ontwikkelaars gek kan maken en de “flow” kan verstoren, waardoor programmeurs het meest productief kunnen zijn. Drie cloud-gebaseerde IDE’s ondersteunen momenteel de Go-taal: Cloud9, CodeEnv, en Wide.

Cloud9 is een meertalige cloud-gebaseerde IDE die Go out of the box ondersteunt. Het maakt verbinding met GitHub, Bitbucket, en Google Cloud Platform repositories, en het heeft workspaces die je kunt delen en klonen. Naast een code editor met een uitgebreide set functies en een online bestandssysteem, heeft het MySQL en andere databases, terminal en directe vensters, en aanpasbare toetsenbord bindingen, met Vim, Emacs, en Sublime Text modi standaard geleverd. Autocompletion en debugging voor Go zijn nog experimenteel, maar syntax highlighting, het run panel, outline view, en linting zijn allemaal volledig ondersteund.

CodeEnv is ook een meertalige cloud-gebaseerde IDE. Er is een Go base environment image voor privé-omgevingen, en een public Go environment image. Elke omgeving bestaat uit een bestandssysteem, een eenvoudige code editor met syntax highlighting, en een terminal venster. Er zijn momenteel acht keuzes van basis image en zes keuzes van back-end image.

Wide is een web-gebaseerde IDE voor teams die is geschreven in en voor de Go programmeertaal. Het maakt gebruik van een CodeMirror-gebaseerde thematische programmeereditor met gocode-ondersteunde syntax highlighting, autocompletion, code formatting, en real-time samenwerking. Wide noemt LiteIDE als een dependency.

Gogland

JetBrains Gogland, momenteel in een vroege preview staat, lijkt de meest complete Go IDE te zijn die beschikbaar is, hoewel het nog niet commercieel is uitgebracht. De geïntegreerde debugger, dekkingsanalyse en het uitvoeren van tests onderscheiden Gogland in hoge mate van de doorsnee editors die slechts een paar tools integreren.

In de schermafbeelding hieronder, waar ik Gogland gebruik om de broncode van een Go-project te onderzoeken, kun je verschillende functies van Gogland zien, waaronder de projectboom, een inspectie-hint (het lampje), exit point highlighting, en snel browsen met behulp van de navigatiebalk aan de rechterkant (de doos met code met regelnummers in de verkeerde volgorde). Voor meer screenshots die laten zien wat Gogland allemaal kan, verwijs ik je graag door naar de features guide van JetBrains.

InfoWorld

Gogland maakt gebruik van hetzelfde JetBrains plugin ecosysteem als IntelliJ IDEA en WebStorm, en het bevat al veel relevante features die van die producten zijn geërfd. U kunt Gogland bijvoorbeeld gebruiken voor het werken met HTML en front-end talen en frameworks, precies zoals WebStorm. Gogland laat je ook werken met SQL databases, net als IntelliJ IDEA en DataGrip. Als je Node.js ondersteuning wilt combineren met je Go codering of Subversion ondersteuning nodig hebt naast Git integratie, is het een snelle kwestie van het toevoegen van de plugins.

Visual Studio Code

Visual Studio Code met de vscode-go plugin is een mooie Go editor die goed werkt en een goede Git integratie heeft. Visual Studio Code heeft wel updates en een herstart nodig, minstens maandelijks, maar het voelt zelden traag aan tijdens het bewerken. 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.

InfoWorld

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 (met go build en go test), lint-on-save (met golint of gometalinter), opmaken (met goreturns of goimports of gofmt), unit tests skeleton genereren (met gotests), importen toevoegen (met gopkgs), en debugging gedeeltelijk uitvoeren (met delve).

Dat is een heleboel nuttige functionaliteit, hoewel niet zoveel als je in de Gogland IDE krijgt. De screencast in het vscode-go readme bestand laat goed zien hoe de meeste functies werken.

Cloud9

Van de drie cloud IDE’s die Go ondersteunen, lijkt Cloud9 op dit moment het meest interessant te zijn. Het heeft de meest functionele programmeer-editor van de drie en ondersteunt ongeveer 17 talen, naast Go. Hoewel de Go-taal codeaanvulling als experimenteel is gemarkeerd, vond ik dat het vrij goed werkte en niet veel vertraging veroorzaakte bij het typen.

InfoWorld

Cloud9’s Ace editor ondersteunt momenteel syntax highlighting voor meer dan 100 programmeertalen. Het getal 17 hierboven is voor talen die ook andere ondersteuning hebben, zoals het uitvoeren van de code, linting, outlining, code completion en debugging.

Cloud9-workspaces draaien momenteel op Ubuntu 14.04 en Go 1.7.3. U kunt uw Go installatie updaten vanuit de Bash shell (zie onderaan de schermafbeelding), en ook uw Go en andere programma’s vanuit Bash draaien.

Zoals we hebben gezien, heeft u vele mogelijke keuzes voor een programmeeromgeving voor Go ontwikkeling. Hoewel ik Gogland heb gekozen als de beste full-featured Go IDE, Visual Studio Code met vscode-go als de beste Go editor, en Cloud9 als de beste Go cloud IDE voor mij, zijn er meer dan 30 andere mogelijkheden. Gezien hoe persoonlijk de keuze van software ontwikkelomgevingen kan zijn, zou je er een paar moeten proberen en kijken welke het beste bij je behoeften en voorkeuren past.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.