De bästa IDE:erna och redaktörerna för Go-språket

Googles Go-språk, även känt som Golang, utsågs nyligen till Tiobe’s programmeringsspråk 2016, baserat på den snabba ökningen av dess popularitet under året, som var mer än dubbelt så stor som den för Dart och Perl som kom på andra plats. Tiobes språkindex baseras på ”antalet skickliga ingenjörer världen över, kurser och tredjepartsleverantörer”, med hjälp av resultaten från flera sökmotorer.

Den stora ökningen i popularitet medför ett ökat intresse för utvecklingsverktyg för programmeringsspråket. Eftersom Go-språket distribueras i öppen källkod, komplett med kompilatorer, verktyg och bibliotek, är det som återstår för programmerare att själva hitta Go-medvetna redigeringsmiljöer, oavsett om det rör sig om raka redigeringsprogram eller integrerade utvecklingsmiljöer (IDE), som finns lokalt eller i molnet.

För den här artikeln har jag försökt titta på alla tillgängliga Go-medvetna redigeringsmiljöer och nollat in på dem som verkar vara värda att använda. Jag började med den officiella listan över IDEs och Plugins för Go och rensade ner de cirka 35 punkterna på listan till de som skulle kunna förtjäna ett försök. Jag börjar med en snabb sammanfattning av de användbara produkter jag hittade i varje kategori och avslutar med en närmare titt på mina bästa val.

Bemärk att utveckling av Go-språket vanligtvis förlitar sig på att GOPATH-variabeln är inställd på roten till din Go-arbetsyta för utveckling. Det kan vara ett problem för GUI-program, till exempel editorer, som inte alltid respekterar miljöinställningarna.

Det finns mer än ett dussin Go-språkverktyg som du kan installera i kataloger under GOPATH-mappen med kommandot go get, när Go självt är installerat. Många av de redaktörer som jag utvärderat använder ett eller flera av dessa verktyg.

Go IDEs

Det finns förvånansvärt många IDEs som har stöd för Go. Innebörden av ”stöd” varierar dock. Fyra IDE:er stod ut för mig: Gogland, Eclipse med goclipse, LiteIDE och Komodo IDE.

I den övre delen har Gogland från JetBrains smarta kompletteringar, inspektioner och snabba korrigeringar, enkel refaktorisering, snabb navigering, snabba popup-fönster, en del mycket grundläggande kodgenerering, upptäckt av rekursiva anrop, popup-fönster för uttryckstyper, markeringar av utgångspunkter, användningsfynd, kodformatering, semantisk markeringsmärkning och parameterhints i redigeraren. Ja, det är mycket funktionalitet för att redigera ett ungt språk. Andra Gogland-funktioner är en integrerad felsökare, täckningsanalys, testkörning, en meny för att köra Go-verktyg och en del icke-Go-specifik funktionalitet som liknar vad du hittar i andra JetBrains-produkter, t.ex. IntelliJ IDEA. Gogland kan hantera flera GOPATH-inställningar, snarare än att enbart förlita sig på systemets GOPATH-miljö.

Gogland finns för närvarande gratis som en produkt med tidig tillgång. Den kommer troligen att prissättas på samma sätt som andra JetBrains-produkter så småningom. Förvänta dig att den kommer att vara tillgänglig genom en årlig prenumeration, antingen själv eller i ett paket med resten av JetBrains verktyg, med rabatter för akademiker och bidragsgivare till öppen källkod.

På en något lägre nivå av komplexitet ger Eclipse med goclipse syntaxmarkering, automatisk indragning och outlining i redigeraren, allt i samma anda som andra Eclipse-språkmoduler, till exempel Java. Integrationer inkluderar felsökning med GDB, definitionssökning med Go-verktygen guru och godef samt automatisk komplettering med gocode-verktyget. Eclipse och goclipse-pluginet är gratis och öppen källkod.

LiteIDE har en paketbrowser, klassvy och översikt, dokumentbrowser, kodnavigering, sökning av användningsområden och kodrefaktorisering i sin editor. Integrationer har stöd för gocode, GOPATH API-index, felsökning med GDB och en Go-spelplats. LiteIDE är gratis och öppen källkod.

Komodo IDE stöder Go syntaxkontroll (linting) och highlighting, syntaxfärgning, kodveckning och andra produktivitetshöjande funktioner. Komodo stöder också Go-kodintelligens med kompletteringar, anropstips, översikter och go-to-definitioner. Refactoring inkluderar att byta namn på variabler och klassmedlemmar och metodutdragning. Komodo stöder Go-enhetstestning, kodsamarbete, versionskontroll, interaktiva skalor och kodprofilering. Komodos stora berömmelse är att det har stöd för alla större open source-språk, inklusive Python, Node.js, Ruby, Go, Perl och Tcl.

Komodo IDE är en kommersiell produkt. Komodo Editor, som har en delmängd av IDE:s funktioner, är gratis.

Gå redaktörer

Ett IDE kan ge dig all den funktionalitet du vill ha för att utveckla kod, men IDE:er kan ofta kännas ”tunga”. Med andra ord kan de ta lång tid att starta upp, använda mycket minne och ibland kännas okontaktbara när du skriver kod eftersom de gör för mycket i bakgrunden. Kodredigerare kan ibland vara att föredra, särskilt vid korta sessioner, så länge du inte störs av att behöva byta till ett separat kommandoradsfönster för kompilering.

Plugins kan ibland lägga till IDE-liknande funktioner till kodredigerare. Det brukar vara bra, så länge som den periodiska överbelastningen av att hålla insticksprogrammen uppdaterade och den ständiga överbelastningen av att insticksprogrammen kör processer i bakgrunden inte saktar ner din redigering.

Atom, Brackets och Visual Studio Code är de tre redigeringsprogrammen som utmärker sig för mig när jag arbetar med Go-språket. Alla är gratis och har öppen källkod. BBEdit, Emacs, Notepad++, Sublime Text, TextMate och Vim är alla integrerade med Go-språkpluggar och har alla sina förespråkare. Emacs, Notepad++ och Vim är gratis och har öppen källkod. BBEdit är kommersiellt, men dess lillebror TextWrangler är gratis.

Atom-redigeraren från GitHub levereras med paketet language-go, som har stöd för Go-grammatik och snippets. Ytterligare paket för Go ger mer funktionalitet. Till exempel integrerar go-plus med många standardverktyg för Go (för autokomplettering, formatering, linting, testning) för att ge en IDE-liknande miljö, och go-debug integreras med delve debugger.

Edigeraren Brackets från Adobe har flera gemenskapstillägg för Go-stöd. Dessa inkluderar Go-IDE, som använder gocode för autokomplettering, Go-Syntax, som använder CodeMirror för syntaxmarkering, och Improved Go Formatter, som använder gofmt för att formatera koden och goimports för att hantera import.

Visual Studio Code har stöd för syntaxmarkering av Go direkt. Ytterligare funktioner tillhandahålls av insticksprogrammet vscode-go, som integreras med mer än ett dussin standardverktyg för Go. Om du inte har din GOPATH inställd kommer insticksmodulen att be dig att ställa in den så snart du försöker redigera en Go-språkfil; du kan ställa in den för projektet och/eller systemmiljön. Om du inte har Go-verktygen installerade kommer insticksmodulen att be dig installera dem på de standardplatser som bestäms av din GOPATH.

Molnbaserade Go IDEs

Molnbaserade IDEs är en relativt ny innovation inom mjukvaruutvecklingsområdet. De har två inneboende fördelar: De kräver ingen lokal installation förutom en kompatibel webbläsare, och de kan tillåta redigering av flera utvecklare om de är utformade för det. Nackdelen är att molnbaserade IDE ofta lider av fördröjning, vilket kan göra utvecklare galna och störa det ”flöde” som gör att kodare kan vara mest produktiva. Tre molnbaserade IDE har för närvarande stöd för språket Go: Cloud9, CodeEnv och Wide.

Cloud9 är ett flerspråkigt molnbaserat IDE som har stöd för Go. Det ansluter till GitHub-, Bitbucket- och Google Cloud Platform-repositorier och har arbetsutrymmen som du kan dela och klona. Förutom en kodredigerare med en omfattande funktionsuppsättning och ett online-filsystem har den MySQL och andra databaser, terminal- och omedelbara fönster och anpassningsbara tangentbordsbindningar, med lägena Vim, Emacs och Sublime Text som standard. Autokomplettering och felsökning för Go är fortfarande experimentella, men syntaxmarkering, run panel, outline view och linting stöds fullt ut.

CodeEnv är också en flerspråkig molnbaserad IDE. Det finns en Go-basmiljöavbildning för privata miljöer samt en offentlig Go-miljöavbildning. Varje miljö består av ett filsystem, en enkel kodredigerare med syntaxmarkering och ett terminalfönster. Det finns för närvarande åtta val av basmiljöimage och sex val av backend-image.

Wide är ett webbaserat IDE för team som är skrivet i och för programmeringsspråket Go. Det använder en CodeMirror-baserad tematiskt programmeringsredigerare med gocode-assisterad syntaxmarkering, autokomplettering, kodformatering och samarbete i realtid. Wide nämner LiteIDE som ett beroende.

Gogland

JetBrains Gogland, som för närvarande befinner sig i ett tidigt förhandsgranskningstillstånd, verkar vara det mest kompletta Go IDE som finns tillgängligt, även om det ännu inte har släppts kommersiellt. Dess integrerade debugger, täckningsanalys och testkörning skiljer det i hög grad från de vanliga redigeringsprogrammen som har några få verktygsintegrationer.

I skärmbilden nedan, där jag använder Gogland för att undersöka en del av källkoden för Go-språkprojektet, kan du se flera Gogland-redigeringsfunktioner, bland annat projektträdet, en inspektionshänvisning (glödlampan), markering av utgångspunkter och snabbbläddring med hjälp av navigeringsfältet till höger (rutan med kod med radnummer som är felplacerade). För fler skärmdumpar som visar vad Gogland kan göra hänvisar jag till JetBrains funktionsguide.

InfoWorld

Gogland använder sig av samma ekosystem för insticksmoduler från JetBrains som IntelliJ IDEA och WebStorm, och det innehåller redan många relevanta funktioner som ärvts från dessa produkter. Du kan till exempel använda Gogland för att arbeta med HTML och front-end språk och ramverk, precis som WebStorm. Med Gogland kan du också arbeta med SQL-databaser, precis som IntelliJ IDEA och DataGrip. Om du behöver kombinera stöd för Node.js med din Go-kodning eller behöver stöd för Subversion utöver Git-integration är det bara att lägga till plugins.

Visual Studio Code

Visual Studio Code med pluginet vscode-go är en trevlig Go-redigerare som fungerar bra och har en bra Git-integration. Visual Studio Code behöver uppdateringar och en omstart minst en gång i månaden, men det känns sällan långsamt under redigeringen. 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 (med go build och go test), lint-on-save (med golint eller gometalinter), format (med goreturns eller goimports eller gofmt), generera ett skelett för enhetstester (med gotests), lägga till import (med gopkgs) och delvis genomföra felsökning (med delve).

Det är en hel del användbar funktionalitet, även om det inte är lika mycket som du får i Gogland IDE. Screencasten i läsmiljöfilen vscode-go gör ett bra jobb med att visa hur de flesta funktionerna fungerar.

Cloud9

Av de tre moln-IDE:erna som stöder Go verkar den mest intressanta för närvarande vara Cloud9. Det har den mest funktionella programmeringseditorn av de tre och stöder ungefär 17 språk utöver Go. Även om dess kodkomplettering för Go-språket är markerad som experimentell, tyckte jag att den fungerade ganska bra och orsakade inte mycket i form av skrivfördröjningar.

InfoWorld

Cloud9:s Ace-redigerare har för närvarande stöd för syntaxmarkering för mer än 100 programmeringsspråk. Antalet 17 ovan är för språk som också har annat stöd, till exempel att köra koden, linting, outlining, kodkomplettering och felsökning.

Cloud9:s arbetsutrymmen kör för närvarande Ubuntu 14.04 och Go 1.7.3. Du kan uppdatera din Go-installation från Bash-skalet (se längst ner i skärmbilden), samt köra dina Go- och andra program från Bash.

Som vi har sett har du många möjliga val av programmeringsmiljö för Go-utveckling. Även om jag valde Gogland som den bästa fullfjädrade Go IDE, Visual Studio Code med vscode-go som den bästa Go-redigeraren och Cloud9 som den bästa Go cloud IDE för mig, finns det mer än 30 andra möjligheter. Med tanke på hur personligt valet av mjukvaruutvecklingsmiljöer kan vara, bör du prova några och se vilka som passar dina behov och preferenser bäst.

Lämna ett svar

Din e-postadress kommer inte publiceras.