Limbajul Go de la Google, cunoscut și sub numele de Golang, a fost ales recent drept limbajul de programare al anului 2016 de către Tiobe, pe baza creșterii rapide a popularității sale de-a lungul anului, de peste două ori mai mare decât cea a celor de pe locurile doi, Dart și Perl. Indicele de limbaj al Tiobe se bazează pe „numărul de ingineri calificați din întreaga lume, cursuri și vânzători terți”, folosind rezultatele mai multor motoare de căutare.
Această creștere mult mai mare a popularității atrage după sine un interes sporit pentru instrumentele de dezvoltare pentru limbajul de programare. Deoarece limbajul Go este distribuit sub formă de sursă deschisă, complet cu compilatoare, instrumente și biblioteci, ceea ce le rămâne programatorilor să găsească pentru ei înșiși sunt mediile de editare compatibile cu Go, fie că este vorba de editoare simple sau de medii de dezvoltare integrate (IDE), găzduite local sau în cloud.
Pentru acest articol am încercat să analizez toate mediile de editare compatibile cu Go disponibile și să mă concentrez asupra celor care par să merite. Am început cu lista oficială de IDE-uri și plugin-uri pentru Go și am redus cele aproximativ 35 de elemente de pe listă la cele care ar putea merita o încercare. Voi începe cu o scurtă trecere în revistă a produselor utile pe care le-am găsit în fiecare categorie și voi încheia cu o privire atentă asupra celor mai bune alegeri ale mele.
Rețineți că dezvoltarea limbajului Go se bazează de obicei pe variabila GOPATH setată la rădăcina spațiului de lucru de dezvoltare Go. Aceasta poate fi o problemă pentru aplicațiile GUI, cum ar fi editorii, care nu onorează întotdeauna setările de mediu.
Există mai mult de o duzină de instrumente pentru limbajul Go pe care le puteți instala în directoare sub folderul GOPATH cu ajutorul comenzii go get
, odată ce Go însuși este instalat. Mulți dintre editorii pe care i-am evaluat folosesc unul sau mai multe dintre aceste instrumente.
Go IDEs
Există un număr surprinzător de IDE-uri care acceptă Go. Cu toate acestea, sensul cuvântului „suport” variază. Patru IDE-uri s-au evidențiat pentru mine: Gogland, Eclipse cu goclipse, LiteIDE și Komodo IDE.
La limita superioară, Gogland de la JetBrains oferă completări inteligente, inspecții și remedieri rapide, refactorizare simplă, navigare rapidă, pop-up-uri rapide, unele generații de cod foarte simple, detectarea apelurilor recursive, pop-up-uri de tip expresie, evidențierea punctelor de ieșire, găsirea utilizării, formatarea codului, evidențierea semantică și indicii de parametri în editorul său. Da, aceasta este o mulțime de funcționalități pentru editarea unui limbaj tânăr. Alte caracteristici ale Gogland includ un depanator integrat, analiza de acoperire, rularea testelor, un meniu pentru rularea instrumentelor Go și unele funcționalități nespecifice pentru Go care sunt similare cu cele pe care le veți găsi în alte produse JetBrains, cum ar fi IntelliJ IDEA. Gogland poate gestiona mai multe setări GOPATH, în loc să se bazeze exclusiv pe mediul GOPATH al sistemului.
Gogland este în prezent disponibil gratuit ca produs cu acces anticipat. Probabil că, în cele din urmă, va avea un preț asemănător cu cel al altor produse JetBrains. Așteptați-vă ca acesta să fie disponibil prin abonament anual, fie de unul singur, fie într-un pachet cu restul instrumentelor JetBrains, cu reduceri pentru cadrele universitare și contribuitorii open source.
La un nivel de complexitate ceva mai scăzut, Eclipse cu goclipse oferă evidențiere a sintaxei, indentare automată și conturare în editorul său, toate în spiritul altor module de limbaj Eclipse, cum ar fi Java. Integrările includ depanarea cu GDB, găsirea definițiilor cu instrumentele Go guru și godef și completarea automată cu instrumentul gocode. Eclipse și pluginul goclipse sunt gratuite și open source.
LiteIDE oferă în editorul său un browser de pachete, vizualizare și contur de clase, browser de documente, navigare în cod, căutare de utilizări și refactorizare a codului. Integrările oferă suport pentru gocode, indice API GOPATH, depanare cu GDB și un loc de joacă Go. LiteIDE este gratuit și open source.
Komodo IDE suportă verificarea sintaxei Go (linting) și evidențierea, colorarea sintaxei, plierea codului și alte caracteristici de îmbunătățire a productivității. Komodo suportă, de asemenea, inteligența codului Go cu completări, sfaturi de apelare, contururi și definiții go-to. Refacerea include redenumirea variabilelor și a membrilor clasei și extragerea metodelor. Komodo suportă testarea unitară Go, colaborarea codului, controlul versiunilor, shell-uri interactive și profilarea codului. Principala pretenție a lui Komodo este că suportă toate limbajele open source majore, inclusiv Python, Node.js, Ruby, Go, Perl și Tcl.
Komodo IDE este un produs comercial. Komodo Editor, care are un subansamblu de capabilități ale IDE-ului, este gratuit.
Vezi editorii
În timp ce un IDE poate oferi toate funcționalitățile pe care le doriți pentru dezvoltarea de cod, IDE-urile se pot simți adesea „grele”. Cu alte cuvinte, acestea pot dura mult timp pentru a porni, pot folosi multă memorie și, uneori, pot părea că nu răspund în timp ce tastați cod, deoarece fac prea multe în fundal. Editorii de cod pot fi uneori preferabili, în special pentru sesiuni scurte, atâta timp cât nu vă deranjează faptul că trebuie să treceți la o fereastră de shell cu linie de comandă separată pentru compilare.
Pluginele pot adăuga uneori funcții de tip IDE editorilor de cod. Acest lucru este de obicei bun, atâta timp cât cheltuielile periodice de actualizare a pluginurilor și cheltuielile constante ale pluginurilor care rulează procese în fundal nu vă încetinesc editarea.
Atom, Brackets și Visual Studio Code sunt cele trei editoare care s-au evidențiat pentru mine pentru a lucra în limbajul Go. Toate sunt gratuite și open source. Cu toate acestea, BBEdit, Emacs, Notepad++, Sublime Text, TextMate și Vim se integrează cu plugin-uri pentru limbajul Go și toate au susținătorii lor. Emacs, Notepad++ și Vim sunt gratuite și cu sursă deschisă. BBEdit este comercial, dar fratele său mai mic TextWrangler este gratuit.
Editorul Atom de pe GitHub este livrat cu pachetul language-go, care suportă gramatica și fragmente Go. Pachetele suplimentare pentru Go aduc mai multe funcționalități. De exemplu, go-plus se integrează cu multe instrumente Go standard (pentru autocompletare, formatare, linting, testare) pentru a oferi un mediu de tip IDE, iar go-debug se integrează cu depanatorul delve.
Editorul Brackets de la Adobe are mai multe extensii ale comunității pentru suportul Go. Acestea includ Go-IDE, care utilizează pentru autocompletare; Go-Syntax, care utilizează CodeMirror pentru evidențierea sintaxei; și Improved Go Formatter, care utilizează gofmt
pentru a formata codul și goimports
pentru a gestiona importurile.
Visual Studio Code suportă evidențierea sintaxei Go din fabrică. Caracteristicile suplimentare sunt furnizate de plugin-ul vscode-go, care se integrează cu mai mult de o duzină de instrumente Go standard. Dacă nu aveți GOPATH setat, pluginul vă va cere să îl setați de îndată ce încercați să editați un fișier de limbaj Go; îl puteți seta pentru proiect și/sau pentru mediul de sistem. Dacă nu aveți uneltele Go instalate, pluginul vă va cere să le instalați în locurile standard determinate de GOPATH.
Instalații Go IDE bazate pe cloud
Instalațiile Go bazate pe cloud sunt o inovație relativ recentă în spațiul de dezvoltare software. Acestea au două avantaje inerente: Nu necesită nicio configurare locală în afară de un browser compatibil și pot permite editarea de către mai mulți dezvoltatori, dacă sunt proiectate pentru aceasta. Pe de altă parte, IDE-urile bazate pe cloud suferă adesea de lag, ceea ce poate înnebuni dezvoltatorii și poate interfera cu „fluxul” care permite programatorilor să fie cât mai productivi. Trei IDE-uri bazate pe cloud susțin în prezent limbajul Go: Cloud9, CodeEnv și Wide.
Cloud9 este un IDE bazat în cloud multilingv care acceptă Go din start. Se conectează cu depozitele GitHub, Bitbucket și Google Cloud Platform și are spații de lucru pe care le puteți partaja și clona. Pe lângă un editor de cod cu un set extins de funcții și un sistem de fișiere online, are MySQL și alte baze de date, ferestre terminale și imediate și legături de tastatură personalizabile, cu modurile Vim, Emacs și Sublime Text furnizate standard. Autocompletarea și depanarea pentru Go sunt încă experimentale, dar evidențierea sintaxei, panoul de execuție, vizualizarea conturului și linting-ul sunt toate pe deplin acceptate.
CodeEnv este, de asemenea, un IDE multilingv bazat pe cloud. Există o imagine de mediu de bază Go pentru mediile private, precum și o imagine de mediu Go publică. Fiecare mediu este format dintr-un sistem de fișiere, un editor de cod simplu cu evidențiere a sintaxei și o fereastră de terminal. În prezent, există opt opțiuni de imagine de bază și șase opțiuni de imagine de mediu de back-end.
Wide este un IDE bazat pe web pentru echipe care este scris în și pentru limbajul de programare Go. Folosește un editor de programare tematică bazat pe CodeMirror, cu evidențiere a sintaxei asistată de gocode, autocompletare, formatare a codului și colaborare în timp real. Wide citează LiteIDE ca dependență.
Gogland
JetBrains Gogland, aflat în prezent într-o stare de previzualizare timpurie, pare a fi cel mai complet IDE Go disponibil, deși nu a fost încă lansat în scop comercial. Depanatorul său integrat, analiza de acoperire și rularea testelor îl diferențiază foarte mult de editorii obișnuiți care au câteva integrări de instrumente.
În captura de ecran de mai jos, în care folosesc Gogland pentru a examina o parte din codul sursă al proiectului de limbaj Go, puteți vedea mai multe caracteristici de editare Gogland, inclusiv arborele proiectului, un indiciu de inspecție (becul luminos), evidențierea punctelor de ieșire și navigarea rapidă folosind bara de navigare din dreapta (caseta de cod cu numere de linie în afara ordinii). Pentru mai multe capturi de ecran care arată ce poate face Gogland, vă trimit la ghidul de caracteristici al JetBrains.
Gogland folosește același ecosistem de pluginuri JetBrains ca IntelliJ IDEA și WebStorm, și include deja multe caracteristici relevante moștenite de la aceste produse. De exemplu, puteți utiliza Gogland pentru a lucra cu HTML și cu limbaje și cadre front-end, exact ca WebStorm. Gogland vă permite, de asemenea, să lucrați cu baze de date SQL, la fel ca IntelliJ IDEA și DataGrip. Dacă aveți nevoie să combinați suportul Node.js cu codificarea Go sau aveți nevoie de suport pentru Subversion în plus față de integrarea Git, este o chestiune rapidă de adăugare a plugin-urilor.
Visual Studio Code
Visual Studio Code cu plugin-ul vscode-go este un editor Go plăcut care funcționează bine și are o bună integrare Git. Visual Studio Code are nevoie de actualizări și de o repornire cel puțin o dată pe lună, dar rareori se simte lent în timpul editării. 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 (folosind și go test
), lint-on-save (folosind golint
sau gometalinter
), format (folosind goreturns
sau goimports
sau gofmt
), generare schelet de teste unitare (folosind gotests
), adăugați importuri (utilizând ) și implementați parțial depanarea (utilizând delve
).
Este o mulțime de funcționalități utile, deși nu la fel de multe ca cele pe care le obțineți în Gogland IDE. Screencast-ul din fișierul readme vscode-go face o treabă bună în a demonstra cum funcționează majoritatea funcționalităților.
Cloud9
Dintre cele trei IDE-uri cloud care suportă Go, cel mai interesant în prezent pare a fi Cloud9. Acesta are cel mai funcțional editor de programare dintre cele trei și suportă aproximativ 17 limbaje, pe lângă Go. Deși completarea codului în limbajul Go este marcată ca fiind experimentală, am constatat că funcționează destul de bine și nu a provocat prea multe întârzieri de tastare.
Editorul Ace al Cloud9 suportă în prezent evidențierea sintaxei pentru peste 100 de limbaje de programare. Numărul 17 de mai sus se referă la limbajele care au și alte suporturi, cum ar fi rularea codului, linting, outlining, finalizarea codului și depanarea.
Spațiile de lucru Cloud9 rulează în prezent Ubuntu 14.04 și Go 1.7.3. Puteți să vă actualizați instalarea Go din shell-ul Bash (a se vedea partea de jos a capturii de ecran), precum și să rulați programele Go și alte programe din Bash.
După cum am văzut, aveți multe opțiuni posibile de mediu de programare pentru dezvoltarea Go. În timp ce eu am ales Gogland ca fiind cel mai bun IDE Go cu funcții complete, Visual Studio Code cu vscode-go ca fiind cel mai bun editor Go și Cloud9 ca fiind cel mai bun IDE Go în cloud pentru mine, există peste 30 de alte posibilități. Având în vedere cât de personală poate fi alegerea mediilor de dezvoltare software, ar trebui să încercați câteva și să vedeți care se potrivește cel mai bine nevoilor și preferințelor dumneavoastră.
.