Jazyk Go společnosti Google, známý také jako Golang, byl nedávno zvolen programovacím jazykem roku 2016 společností Tiobe na základě rychlého nárůstu jeho popularity v průběhu roku, který byl více než dvojnásobný oproti druhým v pořadí Dart a Perl. Index jazyků Tiobe vychází z „počtu kvalifikovaných inženýrů po celém světě, kurzů a dodavatelů třetích stran“ a využívá výsledků několika vyhledávačů.
Tento značný nárůst popularity s sebou nese zvýšený zájem o vývojové nástroje pro tento programovací jazyk. Vzhledem k tomu, že jazyk Go je šířen v podobě otevřeného zdrojového kódu doplněného o kompilátory, nástroje a knihovny, zbývá programátorům najít si pro sebe editační prostředí podporující jazyk Go, ať už jde o přímé editory nebo integrovaná vývojová prostředí (IDE), hostovaná lokálně nebo v cloudu.
V tomto článku jsem se pokusil projít všechna dostupná editační prostředí podporující jazyk Go a zaměřit se na ta, která se zdají být užitečná. Začal jsem oficiálním seznamem IDE a zásuvných modulů pro jazyk Go a ze zhruba 35 položek na seznamu jsem vybral ty, které by si zasloužily vyzkoušet. Začnu rychlým přehledem užitečných produktů, které jsem našel v jednotlivých kategoriích, a skončím bližším pohledem na mé nejlepší výběry.
Poznamenejme, že vývoj jazyka Go obvykle závisí na proměnné GOPATH nastavené na kořenový adresář pracovního prostoru pro vývoj jazyka Go. To může být problém pro aplikace s grafickým uživatelským rozhraním, jako jsou editory, které ne vždy respektují nastavení prostředí.
Existuje více než tucet nástrojů jazyka Go, které můžete nainstalovat do adresářů ve složce GOPATH pomocí příkazu go get
, jakmile je nainstalován samotný jazyk Go. Mnoho mnou hodnocených editorů používá jeden nebo více těchto nástrojů.
IDE pro jazyk Go
Existuje překvapivé množství IDE, která podporují jazyk Go. Význam slova „podpora“ se však liší. Z nich pro mě vyčnívala čtyři IDE: Gogland, Eclipse s goclipse, LiteIDE a Komodo IDE.
Na nejvyšší úrovni je Gogland od JetBrains, který nabízí inteligentní doplňování, kontroly a rychlé opravy, jednoduché refaktorování, rychlou navigaci, rychlá vyskakovací okna, některé velmi základní funkce generování kódu, detekci rekurzivních volání, vyskakovací okna typu výrazu, zvýraznění výstupního bodu, vyhledávání použití, formátování kódu, sémantické zvýraznění a nápovědy parametrů v editoru. Ano, to je spousta funkcí pro editaci mladého jazyka. Mezi další funkce Goglandu patří integrovaný debugger, analýza pokrytí, spouštění testů, nabídka pro spouštění nástrojů Go a některé funkce nespecifické pro Go, které jsou podobné těm, které najdete v jiných produktech JetBrains, například IntelliJ IDEA. Gogland dokáže spravovat více nastavení GOPATH, místo aby se spoléhal výhradně na systémové prostředí GOPATH.
Gogland je v současné době k dispozici zdarma jako produkt s předběžným přístupem. Jeho cena bude pravděpodobně časem stanovena po vzoru ostatních produktů JetBrains. Očekávejte, že bude k dispozici formou ročního předplatného buď samostatně, nebo v balíčku s ostatními nástroji společnosti JetBrains, se slevami pro akademické pracovníky a přispěvatele do open source.
Na poněkud nižší úrovni složitosti poskytuje Eclipse s goclipse zvýrazňování syntaxe, automatické odsazování a načrtávání v editoru, vše v duchu ostatních jazykových modulů Eclipse, jako je Java. Integrace zahrnují ladění pomocí GDB, vyhledávání definic pomocí nástrojů guru a godef Go a automatické dokončování pomocí nástroje gocode. Eclipse i zásuvný modul goclipse jsou zdarma a s otevřeným zdrojovým kódem.
LiteIDE má ve svém editoru sportovní prohlížeč balíčků, zobrazení a osnovu tříd, prohlížeč dokumentů, navigaci v kódu, vyhledávání použití a refaktorizaci kódu. Integrace obsahují podporu gocode, index GOPATH API, ladění pomocí GDB a hřiště Go. LiteIDE je zdarma a má otevřený zdrojový kód.
Komodo IDE podporuje kontrolu a zvýrazňování syntaxe jazyka Go (linting), barvení syntaxe, skládání kódu a další funkce zvyšující produktivitu. Komodo také podporuje inteligenci kódu Go s doplňováním, tipy na volání, obrysy a definicí go. Refaktoring zahrnuje přejmenování proměnných a členů tříd a extrakci metod. Komodo podporuje jednotkové testování Go, spolupráci na kódu, správu verzí, interaktivní shelly a profilování kódu. Hlavní předností prostředí Komodo je, že podporuje všechny hlavní jazyky s otevřeným zdrojovým kódem, včetně jazyků Python, Node.js, Ruby, Go, Perl a Tcl.
Komodo IDE je komerční produkt. Komodo Editor, který má podmnožinu funkcí IDE, je zdarma.
EditoryGo
Ačkoli IDE může poskytovat všechny požadované funkce pro vývoj kódu, IDE může často působit „těžce“. Jinými slovy, jejich spuštění může trvat dlouho, spotřebovávají hodně paměti a někdy se zdá, že při psaní kódu nereagují, protože toho na pozadí dělají příliš mnoho. Editory kódu mohou být někdy vhodnější, zejména při krátkých sezeních, pokud vás neobtěžuje nutnost přepínat se kvůli kompilaci do samostatného okna příkazového řádku.
Pluginy mohou někdy do editorů kódu přidat funkce podobné IDE. To je obvykle dobré, pokud pravidelná režie udržování zásuvných modulů v aktuálním stavu a neustálá režie zásuvných modulů, které spouštějí procesy na pozadí, nezpomalují vaše úpravy.
Atom, Brackets a Visual Studio Code jsou tři editory, které u mě vynikly pro práci v jazyce Go. Všechny jsou zdarma a mají otevřený zdrojový kód. Nicméně BBEdit, Emacs, Notepad++, Sublime Text, TextMate a Vim jsou integrovány s pluginy jazyka Go a všechny mají své zastánce. Emacs, Notepad++ a Vim jsou zdarma a mají otevřený zdrojový kód. BBEdit je komerční, ale jeho menší bratr TextWrangler je zdarma.
Editor Atom z GitHubu je dodáván s balíčkem language-go, který podporuje gramatiku a fragmenty jazyka Go. Další balíčky pro jazyk Go přinášejí další funkce. Například go-plus se integruje s mnoha standardními nástroji pro jazyk Go (pro automatické dokončování, formátování, linting, testování) a poskytuje prostředí podobné IDE a go-debug se integruje s ladicím programem delve.
Editor Brackets od společnosti Adobe má několik komunitních rozšíření pro podporu jazyka Go. Patří mezi ně Go-IDE, který používá gocode
pro automatické dokončování; Go-Syntax, který používá CodeMirror pro zvýrazňování syntaxe; a Improved Go Formatter, který používá gofmt
pro formátování kódu a goimports
pro správu importů.
Visual Studio Code podporuje zvýrazňování syntaxe jazyka Go již z výroby. Další funkce poskytuje zásuvný modul vscode-go, který se integruje s více než desítkou standardních nástrojů Go. Pokud nemáte nastaveno GOPATH, zásuvný modul vás požádá o jeho nastavení, jakmile se pokusíte upravit soubor jazyka Go; můžete jej nastavit pro projekt a/nebo systémové prostředí. Pokud nemáte nástroje Go nainstalovány, zásuvný modul vás požádá o jejich instalaci na standardní místa určená vaším GOPATH.
Cloudová IDE pro jazyk Go
Cloudová IDE jsou relativně nedávnou novinkou v oblasti vývoje softwaru. Mají dvě neodmyslitelné výhody: Nevyžadují žádné místní nastavení kromě kompatibilního prohlížeče a mohou umožnit úpravy více vývojářům, pokud jsou pro to navrženy. Nevýhodou je, že cloudová IDE často trpí zpožděním, což může vývojáře přivádět k šílenství a narušovat „plynulost“, která programátorům umožňuje být maximálně produktivní. V současné době podporují jazyk Go tři cloudová IDE: Cloud9, CodeEnv a Wide.
Cloud9 je vícejazyčné cloudové IDE, které podporuje jazyk Go již z výroby. Propojuje se s úložišti GitHub, Bitbucket a Google Cloud Platform a má pracovní prostory, které můžete sdílet a klonovat. Kromě editoru kódu s rozsáhlou sadou funkcí a online souborového systému má databáze MySQL a další databáze, terminálová a okamžitá okna a přizpůsobitelné klávesové vazby, přičemž standardně jsou dodávány režimy Vim, Emacs a Sublime Text. Automatické dokončování a ladění pro jazyk Go jsou zatím experimentální, ale zvýrazňování syntaxe, panel spouštění, zobrazení osnovy a lintování jsou plně podporovány.
CodeEnv je také vícejazyčné cloudové IDE. K dispozici je základní obraz prostředí Go pro soukromá prostředí a také veřejný obraz prostředí Go. Každé prostředí se skládá ze souborového systému, jednoduchého editoru kódu se zvýrazňováním syntaxe a terminálového okna. V současné době je k dispozici osm možností volby základní image a šest možností volby back-end image.
Wide je webové IDE pro týmy, které je napsáno v programovacím jazyce Go a pro tento jazyk. Používá tematický programovací editor CodeMirror se zvýrazňováním syntaxe pomocí gocode, automatickým dokončováním, formátováním kódu a spoluprací v reálném čase. Wide uvádí jako závislost LiteIDE.
Gogland
JetBrains Gogland, který je v současné době ve stavu raného náhledu, se zdá být nejkomplexnějším dostupným IDE pro jazyk Go, i když zatím nebyl komerčně uvolněn. Jeho integrovaný debugger, analýza pokrytí a spouštění testů jej do značné míry odlišují od běžných editorů, které mají několik integrovaných nástrojů.
Na obrázku níže, kde používám Gogland k prozkoumání části zdrojového kódu projektu jazyka Go, můžete vidět několik editačních funkcí Goglandu, včetně stromu projektu, nápovědy pro kontrolu (žárovka), zvýraznění výstupního bodu a rychlého procházení pomocí navigačního panelu vpravo (pole kódu s čísly řádků bez pořadí). Pro další snímky obrazovky ukazující, co všechno Gogland umí, vás odkážu na průvodce funkcemi JetBrains.
Gogland používá stejný ekosystém zásuvných modulů JetBrains jako IntelliJ IDEA a WebStorm a obsahuje již mnoho příslušných funkcí zděděných z těchto produktů. Gogland můžete například používat pro práci s jazykem HTML a front-endovými jazyky a frameworky, přesně jako WebStorm. Gogland také umožňuje pracovat s databázemi SQL, stejně jako IntelliJ IDEA a DataGrip. Pokud potřebujete zkombinovat podporu Node.js s kódováním v Go nebo potřebujete kromě integrace se systémem Git také podporu Subversion, je to rychlá záležitost přidání zásuvných modulů.
Visual Studio Code
Visual Studio Code se zásuvným modulem vscode-go je pěkný editor Go, který dobře funguje a má dobrou integraci se systémem Git. Visual Studio Code sice potřebuje aktualizace a restart minimálně jednou za měsíc, ale při úpravách se málokdy cítí pomalý. 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 (pomocí go build
a go test
), lint-on-save (pomocí golint
nebo gometalinter
), formátování (pomocí goreturns
nebo goimports
nebo gofmt
), generování kostry jednotkových testů (pomocí gotests
), přidání importů (pomocí gopkgs
) a částečně implementované ladění (pomocí delve
).
To je celá řada užitečných funkcí, i když ne tolik, kolik jich získáte v prostředí Gogland IDE. Screencast v souboru readme vscode-go dobře ukazuje, jak většina funkcí funguje.
Cloud9
Ze tří cloudových IDE, která podporují Go, se v současné době jeví jako nejzajímavější Cloud9. Má nejfunkčnější programovací editor ze všech tří a kromě jazyka Go podporuje asi 17 jazyků. I když je jeho doplňování kódu v jazyce Go označeno jako experimentální, zjistil jsem, že funguje docela dobře a nezpůsobuje velké zpoždění při psaní.
Editor Ace od Cloud9 v současné době podporuje zvýrazňování syntaxe pro více než 100 programovacích jazyků. Výše uvedené číslo 17 se týká jazyků, které mají i další podporu, jako je spouštění kódu, linting, outlining, dokončování kódu a ladění.
Pracovní prostředí Cloudu9 v současné době pracuje s Ubuntu 14.04 a Go 1.7.3. Instalaci Go můžete aktualizovat z prostředí Bash (viz spodní část obrázku) a také spouštět programy Go a další programy z prostředí Bash.
Jak jsme viděli, máte mnoho možností volby programovacího prostředí pro vývoj Go. Zatímco já jsem vybral Gogland jako nejlepší plnohodnotné IDE pro Go, Visual Studio Code s vscode-go jako nejlepší editor Go a Cloud9 jako pro mě nejlepší cloudové IDE pro Go, existuje více než 30 dalších možností. Vzhledem k tomu, jak osobní může být výběr prostředí pro vývoj softwaru, měli byste jich několik vyzkoušet a zjistit, které nejlépe vyhovuje vašim potřebám a preferencím.