I migliori IDE ed editor per il linguaggio Go

Il linguaggio Go di Google, alias Golang, è stato recentemente scelto come linguaggio di programmazione di Tiobe del 2016, sulla base della sua rapida crescita di popolarità nel corso dell’anno, più del doppio rispetto ai secondi classificati Dart e Perl. L’indice di lingua di Tiobe si basa sul “numero di ingegneri qualificati in tutto il mondo, corsi e fornitori di terze parti”, utilizzando i risultati di più motori di ricerca.

Questa grande crescita di popolarità porta con sé un maggiore interesse per gli strumenti di sviluppo per il linguaggio di programmazione. Poiché il linguaggio Go è distribuito in forma open source completo di compilatori, strumenti e librerie, ciò che resta da trovare per i programmatori sono gli ambienti di editing Go-aware, che siano editor semplici o ambienti di sviluppo integrati (IDE), ospitati localmente o nel cloud.

Per questo articolo ho cercato di esaminare tutti gli ambienti di editing Go-aware disponibili e di concentrarmi su quelli che sembrano validi. Ho iniziato con la lista ufficiale degli IDE e dei plugin per Go e ho ridotto i circa 35 elementi della lista a quelli che potrebbero meritare una prova. Inizierò con una rapida carrellata dei prodotti utili che ho trovato in ogni categoria e finirò con uno sguardo ravvicinato alle mie migliori scelte.

Nota che lo sviluppo del linguaggio Go si basa tipicamente sulla variabile GOPATH impostata alla radice del tuo spazio di lavoro di sviluppo Go. Questo può essere un problema per le applicazioni GUI come gli editor, che non sempre rispettano le impostazioni dell’ambiente.

Ci sono più di una dozzina di strumenti per il linguaggio Go che è possibile installare nelle directory sotto la cartella GOPATH con il comando go get, una volta installato Go stesso. Molti degli editor che ho valutato usano uno o più di questi strumenti.

Go IDE

Ci sono un numero sorprendente di IDE che supportano Go. Tuttavia, il significato di “supporto” varia. Quattro IDE si sono distinti per me: Gogland, Eclipse con goclipse, LiteIDE, e Komodo IDE.

Al livello più alto, Gogland di JetBrains ha funzioni di completamento intelligente, ispezioni e correzioni rapide, refactoring semplice, navigazione rapida, popup rapidi, generazione di codice molto semplice, rilevamento delle chiamate ricorsive, popup del tipo di espressione, evidenziazione del punto di uscita, ricerca di utilizzo, formattazione del codice, evidenziazione semantica e suggerimenti sui parametri nel suo editor. Sì, sono un sacco di funzionalità per l’editing di un giovane linguaggio. Altre caratteristiche di Gogland includono un debugger integrato, analisi di copertura, esecuzione di test, un menu per l’esecuzione di strumenti Go, e alcune funzionalità non specifiche di Go che sono simili a quelle che troverete in altri prodotti JetBrains, come IntelliJ IDEA. Gogland può gestire più impostazioni GOPATH, piuttosto che basarsi esclusivamente sull’ambiente GOPATH di sistema.

Gogland è attualmente disponibile gratuitamente come prodotto ad accesso anticipato. Probabilmente alla fine avrà un prezzo simile a quello di altri prodotti JetBrains. Aspettatevi che sia disponibile in abbonamento annuale, da solo o in un bundle con il resto degli strumenti di JetBrains, con sconti per accademici e collaboratori open source.

A un livello di complessità leggermente inferiore, Eclipse con goclipse fornisce evidenziazione della sintassi, indentazione automatica e outlining nel suo editor, tutto nello spirito di altri moduli linguistici di Eclipse come Java. Le integrazioni includono il debug con GDB, la ricerca di definizioni con gli strumenti guru e godef Go, e il completamento automatico con lo strumento gocode. Eclipse e il plugin goclipse sono gratuiti e open source.

LiteIDE offre un browser di pacchetti, vista e contorno di classi, browser di documenti, navigazione nel codice, ricerca di usi e rifattorizzazione del codice nel suo editor. Le integrazioni includono il supporto per gocode, l’indice API GOPATH, il debug con GDB e un parco giochi Go. LiteIDE è gratuito e open source.

Komodo IDE supporta il controllo della sintassi di Go (linting) ed evidenziazione, colorazione della sintassi, piegatura del codice e altre caratteristiche che migliorano la produttività. Komodo supporta anche l’intelligenza del codice Go con completamenti, suggerimenti per le chiamate, contorni e definizioni go-to. Il refactoring include la ridenominazione di variabili e membri di classe e l’estrazione di metodi. Komodo supporta il test delle unità di Go, la collaborazione del codice, il controllo della versione, le shell interattive e il profiling del codice. La principale affermazione di Komodo è che supporta tutti i principali linguaggi open source, compresi Python, Node.js, Ruby, Go, Perl e Tcl.

Komodo IDE è un prodotto commerciale. Komodo Editor, che ha un sottoinsieme delle capacità dell’IDE, è gratuito.

Go editor

Mentre un IDE può fornire tutte le funzionalità desiderate per lo sviluppo del codice, gli IDE possono spesso sembrare “pesanti”. In altre parole, possono impiegare molto tempo per avviarsi, usare molta memoria, e a volte sembrano non rispondere mentre si digita il codice perché stanno facendo troppo in background. Gli editor di codice a volte possono essere preferibili, specialmente per brevi sessioni, finché non si è disturbati dal dover passare ad una finestra separata della shell a riga di comando per la compilazione.

I plugin a volte possono aggiungere caratteristiche simili all’IDE agli editor di codice. Questo di solito è un bene, fino a quando l’overhead periodico di mantenere i plugin aggiornati e l’overhead costante dei plugin che eseguono processi in background non rallentano l’editing.

Atom, Brackets e Visual Studio Code sono i tre editor che si sono distinti per me per lavorare nel linguaggio Go. Sono tutti gratuiti e open source. Tuttavia, BBEdit, Emacs, Notepad++, Sublime Text, TextMate e Vim si integrano tutti con plugin per il linguaggio Go, e tutti hanno i loro sostenitori. Emacs, Notepad++ e Vim sono gratuiti e open source. BBEdit è commerciale, ma il suo fratello minore TextWrangler è gratuito.

L’editor Atom da GitHub viene fornito con il pacchetto language-go, che supporta la grammatica e gli snippet di Go. Ulteriori pacchetti per Go portano più funzionalità. Per esempio, go-plus si integra con molti strumenti standard di Go (per l’autocompletamento, la formattazione, il linting, i test) per fornire un ambiente simile all’IDE, e go-debug si integra con il debugger delve.

L’editor Brackets di Adobe ha diverse estensioni comunitarie per il supporto di Go. Queste includono Go-IDE, che usa gocode per il completamento automatico; Go-Syntax, che usa CodeMirror per l’evidenziazione della sintassi; e Improved Go Formatter, che usa gofmt per formattare il codice e goimports per gestire le importazioni. Ulteriori funzionalità sono fornite dal plugin vscode-go, che si integra con più di una dozzina di strumenti Go standard. Se non avete impostato il vostro GOPATH, il plugin vi chiederà di impostarlo non appena proverete a modificare un file di linguaggio Go; potete impostarlo per il progetto e/o l’ambiente di sistema. Se non hai gli strumenti Go installati, il plugin ti chiederà di installarli nei posti standard determinati dal tuo GOPATH.

Gli IDE Go basati su cloud

Gli IDE basati su cloud sono un’innovazione relativamente recente nello spazio di sviluppo del software. Hanno due vantaggi intrinseci: Non richiedono alcuna configurazione locale oltre ad un browser compatibile, e possono permettere l’editing da parte di più sviluppatori se progettati per questo. Sul lato negativo, gli IDE basati su cloud spesso soffrono di lag, che può far impazzire gli sviluppatori e interferire con il “flusso” che permette agli sviluppatori di essere più produttivi. Tre IDE basati su cloud attualmente supportano il linguaggio Go: Cloud9, CodeEnv, e Wide.

Cloud9 è un IDE multilingue basato su cloud che supporta Go out of the box. Si connette con GitHub, Bitbucket e i repository di Google Cloud Platform, e ha spazi di lavoro che si possono condividere e clonare. Oltre a un editor di codice con un ampio set di funzionalità e un file system online, ha MySQL e altri database, finestre terminali e immediate, e legami di tastiera personalizzabili, con le modalità Vim, Emacs e Sublime Text fornite di serie. L’autocompletamento e il debug per Go sono ancora sperimentali, ma l’evidenziazione della sintassi, il pannello di esecuzione, la vista outline e il linting sono tutti pienamente supportati.

CodeEnv è anche un IDE multilingua basato su cloud. C’è un’immagine dell’ambiente di base Go per gli ambienti privati, così come un’immagine dell’ambiente Go pubblico. Ogni ambiente consiste in un file system, un semplice editor di codice con evidenziazione della sintassi e una finestra di terminale. Ci sono attualmente otto scelte di immagine di base e sei scelte di immagine back-end.

Wide è un IDE basato sul web per team che è scritto in e per il linguaggio di programmazione Go. Utilizza un editor di programmazione a tema basato su CodeMirror con evidenziazione della sintassi assistita da gocode, completamento automatico, formattazione del codice e collaborazione in tempo reale. Wide cita LiteIDE come dipendenza.

Gogland

JetBrains Gogland, attualmente in uno stato di anteprima, sembra essere l’IDE Go più completo disponibile, anche se non è ancora stato rilasciato commercialmente. Il suo debugger integrato, l’analisi di copertura e l’esecuzione di test lo distinguono molto dagli editor di routine che hanno poche integrazioni di strumenti.

Nella schermata qui sotto, dove uso Gogland per esaminare il codice sorgente del progetto in lingua Go, si possono vedere diverse caratteristiche di editing di Gogland, tra cui l’albero del progetto, un suggerimento di ispezione (la lampadina), l’evidenziazione del punto di uscita, e la navigazione rapida utilizzando la barra di navigazione sulla destra (la casella di codice con i numeri di riga fuori ordine). Per altri screenshot che mostrano cosa può fare Gogland, vi rimando alla guida alle caratteristiche di JetBrains.

InfoWorld

Gogland usa lo stesso ecosistema di plugin JetBrains di IntelliJ IDEA e WebStorm, e include già molte caratteristiche rilevanti ereditate da quei prodotti. Per esempio, è possibile utilizzare Gogland per lavorare con HTML e linguaggi e framework front-end, esattamente come WebStorm. Gogland permette anche di lavorare con i database SQL, come IntelliJ IDEA e DataGrip. Se hai bisogno di combinare il supporto Node.js con la tua codifica Go o hai bisogno del supporto Subversion oltre all’integrazione Git, è una questione veloce di aggiungere i plugin.

Visual Studio Code

Visual Studio Code con il plugin vscode-go è un buon editor Go che funziona bene e ha una buona integrazione Git. Visual Studio Code ha bisogno di aggiornamenti e di un riavvio almeno una volta al mese, ma raramente si sente lento durante l’editing. 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 (usando go build e go test), lint-on-save (usando golint o gometalinter), format (usando goreturns o goimports o gofmt), generare lo scheletro dei test unitari (usando gotests), aggiungere importazioni (usando gopkgs), e implementare parzialmente il debug (usando delve).

Ci sono un sacco di funzionalità utili, anche se non così tante come nell’IDE Gogland. Lo screencast nel file readme di vscode-go fa un buon lavoro di dimostrazione del funzionamento della maggior parte delle funzionalità.

Cloud9

Tra i tre IDE cloud che supportano Go, il più interessante attualmente sembra essere Cloud9. Ha l’editor di programmazione più funzionale dei tre e supporta circa 17 lingue oltre a Go. Anche se il suo completamento del codice in lingua Go è contrassegnato come sperimentale, ho trovato che ha funzionato abbastanza bene e non ha causato molti ritardi nella digitazione.

InfoWorld

L’editor Ace di Cloud9 attualmente supporta l’evidenziazione della sintassi per più di 100 lingue di programmazione. Il numero 17 di cui sopra è per i linguaggi che hanno anche altri supporti, come l’esecuzione del codice, il linting, l’outlining, il completamento del codice e il debug.

Gli spazi di lavoro di Cloud9 attualmente eseguono Ubuntu 14.04 e Go 1.7.3. Puoi aggiornare la tua installazione di Go dalla shell Bash (vedi il fondo dello screenshot), così come eseguire Go e altri programmi da Bash.

Come abbiamo visto, hai molte possibili scelte di ambiente di programmazione per lo sviluppo di Go. Mentre ho scelto Gogland come il miglior IDE Go completo, Visual Studio Code con vscode-go come il miglior editor Go, e Cloud9 come il miglior IDE cloud Go per me, ci sono più di 30 altre possibilità. Dato quanto personale possa essere la scelta degli ambienti di sviluppo software, dovreste provarne alcuni e vedere quali si adattano meglio alle vostre esigenze e preferenze.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.