Googles Sprache Go, auch bekannt als Golang, wurde vor kurzem von Tiobe zur Programmiersprache des Jahres 2016 gekürt, da ihre Popularität im Laufe des Jahres rasant gestiegen ist, mehr als doppelt so schnell wie die der Zweitplatzierten Dart und Perl. Der Sprachindex von Tiobe basiert auf der „Anzahl der ausgebildeten Ingenieure weltweit, der Kurse und der Drittanbieter“, wobei die Ergebnisse mehrerer Suchmaschinen verwendet werden.
Dieses starke Wachstum der Popularität bringt ein gesteigertes Interesse an Entwicklungstools für die Programmiersprache mit sich. Da die Sprache Go in quelloffener Form mit Compilern, Tools und Bibliotheken vertrieben wird, müssen Programmierer nur noch Go-fähige Bearbeitungsumgebungen finden, seien es direkte Editoren oder integrierte Entwicklungsumgebungen (IDEs), die lokal oder in der Cloud gehostet werden.
Für diesen Artikel habe ich versucht, alle verfügbaren Go-fähigen Bearbeitungsumgebungen zu betrachten und mich auf diejenigen zu beschränken, die mir sinnvoll erscheinen. Ich habe mit der offiziellen Liste der IDEs und Plugins für Go begonnen und die etwa 35 Einträge auf der Liste auf diejenigen reduziert, die einen Versuch wert sein könnten. Ich beginne mit einer kurzen Zusammenfassung der nützlichen Produkte, die ich in jeder Kategorie gefunden habe, und schließe mit einem genauen Blick auf meine Top-Picks.
Beachten Sie, dass die Entwicklung der Sprache Go in der Regel auf die Variable GOPATH angewiesen ist, die auf das Stammverzeichnis Ihres Go-Entwicklungsarbeitsbereichs gesetzt ist. Das kann ein Problem für GUI-Anwendungen wie Editoren sein, die sich nicht immer an die Umgebungseinstellungen halten.
Es gibt mehr als ein Dutzend Go-Sprachwerkzeuge, die Sie mit dem go get
-Befehl in Verzeichnisse unter dem GOPATH-Ordner installieren können, sobald Go selbst installiert ist. Viele der von mir evaluierten Editoren verwenden eines oder mehrere dieser Tools.
Go IDEs
Es gibt eine überraschende Anzahl von IDEs, die Go unterstützen. Allerdings variiert die Bedeutung von „Unterstützung“. Vier IDEs stachen für mich heraus: Gogland, Eclipse mit Goclipse, LiteIDE und Komodo IDE.
Am oberen Ende bietet Gogland von JetBrains intelligente Vervollständigungen, Inspektionen und Schnellkorrekturen, einfaches Refactoring, schnelle Navigation, schnelle Popups, einige sehr grundlegende Codegenerierung, Erkennung rekursiver Aufrufe, Popups für Ausdruckstypen, Hervorhebung von Exit-Points, Nutzungserkennung, Codeformatierung, semantische Hervorhebung und Parameterhinweise im Editor. Ja, das ist eine Menge Funktionalität für die Bearbeitung einer jungen Sprache. Zu den weiteren Funktionen von Gogland gehören ein integrierter Debugger, Abdeckungsanalyse, Testausführung, ein Menü zum Ausführen von Go-Tools und einige nicht Go-spezifische Funktionen, die denen ähneln, die Sie in anderen JetBrains-Produkten wie IntelliJ IDEA finden. Gogland kann mehrere GOPATH-Einstellungen verwalten, anstatt sich ausschließlich auf die System-GOPATH-Umgebung zu verlassen.
Gogland ist derzeit kostenlos als Early-Access-Produkt erhältlich. Der Preis wird sich wahrscheinlich an den Preisen anderer JetBrains-Produkte orientieren. Es ist zu erwarten, dass es als Jahresabonnement erhältlich sein wird, entweder allein oder im Paket mit den übrigen JetBrains-Tools, mit Rabatten für Akademiker und Open-Source-Mitwirkende.
Auf einem etwas niedrigeren Komplexitätsniveau bietet Eclipse mit goclipse Syntaxhervorhebung, automatische Einrückung und Gliederung in seinem Editor, ganz im Sinne anderer Eclipse-Sprachmodule wie Java. Integriert sind das Debugging mit GDB, die Definitionssuche mit den Go-Tools guru und godef und die automatische Vervollständigung mit dem gocode-Tool. Eclipse und das Goclipse-Plugin sind kostenlos und quelloffen.
LiteIDE bietet einen Paketbrowser, eine Klassenansicht und -gliederung, einen Dokumentenbrowser, Code-Navigation, die Suche nach Verwendungen und Code-Refactoring in seinem Editor. Integrationen bieten Gocode-Unterstützung, GOPATH-API-Index, Debugging mit GDB und einen Go-Spielplatz. LiteIDE ist kostenlos und quelloffen.
Komodo IDE unterstützt Go-Syntaxprüfung (Linting) und -Highlighting, Syntaxfärbung, Codefaltung und andere produktivitätssteigernde Funktionen. Komodo unterstützt auch Go-Code-Intelligenz mit Vervollständigungen, Aufruftipps, Umrissen und Go-to-Definition. Das Refactoring umfasst die Umbenennung von Variablen und Klassenmitgliedern sowie die Methodenextraktion. Komodo unterstützt Go-Unit-Tests, Code-Zusammenarbeit, Versionskontrolle, interaktive Shells und Code-Profiling. Komodo ist vor allem dafür bekannt, dass es alle wichtigen Open-Source-Sprachen unterstützt, darunter Python, Node.js, Ruby, Go, Perl und Tcl.
Komodo IDE ist ein kommerzielles Produkt. Der Komodo Editor, der eine Teilmenge der IDE-Funktionen bietet, ist kostenlos.
Go-Editoren
Während eine IDE alle Funktionen bietet, die Sie für die Entwicklung von Code benötigen, können sich IDEs oft „schwer“ anfühlen. Mit anderen Worten, es kann lange dauern, bis sie hochgefahren sind, sie verbrauchen viel Speicherplatz und reagieren manchmal nicht, wenn Sie Code eingeben, weil sie zu viel im Hintergrund tun. Code-Editoren können manchmal vorzuziehen sein, vor allem bei kurzen Sitzungen, solange man sich nicht daran stört, dass man zum Kompilieren in ein separates Kommandozeilen-Shell-Fenster wechseln muss.
Plugins können Code-Editoren manchmal IDE-ähnliche Funktionen hinzufügen. Das ist in der Regel gut, solange der regelmäßige Aufwand, die Plugins auf dem neuesten Stand zu halten, und der ständige Aufwand, der durch die im Hintergrund laufenden Prozesse der Plugins entsteht, die Bearbeitung nicht verlangsamt.
Atom, Brackets und Visual Studio Code sind die drei Editoren, die mir für die Arbeit in der Sprache Go besonders gut gefallen haben. Alle sind kostenlos und quelloffen. Aber auch BBEdit, Emacs, Notepad++, Sublime Text, TextMate und Vim lassen sich mit Go-Plugins integrieren, und alle haben ihre Befürworter. Emacs, Notepad++ und Vim sind frei und quelloffen. BBEdit ist kommerziell, aber sein kleiner Bruder TextWrangler ist kostenlos.
Der Atom-Editor von GitHub wird mit dem Paket language-go ausgeliefert, das Go-Grammatik und -Snippets unterstützt. Zusätzliche Pakete für Go bieten weitere Funktionen. Zum Beispiel integriert sich go-plus mit vielen Standard-Go-Tools (für Autovervollständigung, Formatierung, Linting, Testen), um eine IDE-ähnliche Umgebung zu bieten, und go-debug integriert sich mit dem delve-Debugger.
Der Brackets-Editor von Adobe hat mehrere Community-Erweiterungen für Go-Unterstützung. Dazu gehören Go-IDE, das gocode
für die Autovervollständigung verwendet; Go-Syntax, das CodeMirror für die Syntaxhervorhebung verwendet; und Improved Go Formatter, das gofmt
zur Formatierung von Code und goimports
zur Verwaltung von Importen verwendet.
Visual Studio Code unterstützt Go-Syntaxhervorhebung von Haus aus. Zusätzliche Funktionen bietet das vscode-go-Plugin, das sich in mehr als ein Dutzend Standard-Go-Tools integrieren lässt. Wenn Sie Ihren GOPATH nicht gesetzt haben, wird das Plugin Sie auffordern, ihn zu setzen, sobald Sie versuchen, eine Go-Sprachdatei zu bearbeiten; Sie können ihn für das Projekt und/oder die Systemumgebung setzen. Wenn Sie die Go-Tools nicht installiert haben, wird das Plugin Sie auffordern, sie an den Standardorten zu installieren, die durch Ihren GOPATH festgelegt sind.
Cloud-basierte Go-IDEs
Cloud-basierte IDEs sind eine relativ neue Innovation im Bereich der Softwareentwicklung. Sie haben zwei inhärente Vorteile: Sie erfordern keine lokale Einrichtung außer einem kompatiblen Browser, und sie können die Bearbeitung durch mehrere Entwickler ermöglichen, wenn sie dafür ausgelegt sind. Die Kehrseite der Medaille ist, dass Cloud-basierte IDEs oft unter Verzögerungen leiden, die Entwickler in den Wahnsinn treiben und den „Flow“ stören können, der es Entwicklern ermöglicht, möglichst produktiv zu sein. Derzeit unterstützen drei Cloud-basierte IDEs die Sprache Go: Cloud9, CodeEnv und Wide.
Cloud9 ist eine mehrsprachige Cloud-basierte IDE, die Go von Haus aus unterstützt. Sie verbindet sich mit GitHub-, Bitbucket- und Google Cloud Platform-Repositories und verfügt über Arbeitsbereiche, die Sie teilen und klonen können. Zusätzlich zu einem Code-Editor mit umfangreichen Funktionen und einem Online-Dateisystem verfügt es über MySQL und andere Datenbanken, Terminal- und Sofortfenster sowie anpassbare Tastaturbindungen, wobei die Modi Vim, Emacs und Sublime Text standardmäßig mitgeliefert werden. Autovervollständigung und Debugging für Go sind noch experimentell, aber Syntaxhervorhebung, das Run-Panel, Outline-Ansicht und Linting werden vollständig unterstützt.
CodeEnv ist auch eine mehrsprachige Cloud-basierte IDE. Es gibt ein Go-Basis-Umgebungsimage für private Umgebungen sowie ein öffentliches Go-Umgebungsimage. Jede Umgebung besteht aus einem Dateisystem, einem einfachen Code-Editor mit Syntax-Highlighting und einem Terminalfenster. Derzeit gibt es acht verschiedene Basis-Images und sechs verschiedene Back-End-Images.
Wide ist eine webbasierte IDE für Teams, die in und für die Programmiersprache Go geschrieben wurde. Sie verwendet einen CodeMirror-basierten, thematischen Programmiereditor mit gocode-gestützter Syntaxhervorhebung, Autovervollständigung, Codeformatierung und Echtzeit-Zusammenarbeit. Wide führt LiteIDE als Abhängigkeit an.
Gogland
JetBrains Gogland, das sich derzeit in einem frühen Vorschaustadium befindet, scheint die vollständigste Go-IDE auf dem Markt zu sein, obwohl es noch nicht kommerziell veröffentlicht wurde. Der integrierte Debugger, die Abdeckungsanalyse und die Testausführung heben es deutlich von den üblichen Editoren ab, die nur einige wenige Tools integrieren.
Im folgenden Screenshot, in dem ich Gogland verwende, um den Quellcode des Go-Sprachprojekts zu untersuchen, sehen Sie mehrere Gogland-Bearbeitungsfunktionen, darunter den Projektbaum, einen Prüfhinweis (die Glühbirne), die Hervorhebung von Ausstiegspunkten und das schnelle Durchsuchen mit der Navigationsleiste auf der rechten Seite (das Kästchen mit den Zeilennummern außer der Reihe). Für weitere Screenshots, die zeigen, was Gogland alles kann, verweise ich auf den Funktionsleitfaden von JetBrains.
Gogland nutzt dasselbe JetBrains-Plugin-Ökosystem wie IntelliJ IDEA und WebStorm und enthält bereits viele relevante Funktionen, die von diesen Produkten übernommen wurden. Sie können Gogland zum Beispiel für die Arbeit mit HTML und Frontend-Sprachen und -Frameworks verwenden, genau wie WebStorm. Mit Gogland können Sie auch mit SQL-Datenbanken arbeiten, genau wie mit IntelliJ IDEA und DataGrip. Wenn Sie Node.js-Unterstützung mit Ihrer Go-Programmierung kombinieren oder Subversion-Unterstützung zusätzlich zur Git-Integration benötigen, können Sie die Plugins schnell hinzufügen.
Visual Studio Code
Visual Studio Code mit dem vscode-go-Plugin ist ein schöner Go-Editor, der gut funktioniert und eine gute Git-Integration hat. Visual Studio Code braucht mindestens einmal im Monat ein Update und einen Neustart, aber es fühlt sich während der Bearbeitung selten langsam an. 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 (mit go build
und go test
), lint-on-save (mit golint
oder gometalinter
), formatieren (mit goreturns
oder goimports
oder gofmt
), Unit-Tests-Skelett erzeugen (mit gotests
), Importe hinzufügen (mit gopkgs
), und teilweise Debugging implementieren (mit delve
).
Das ist eine ganze Menge nützlicher Funktionalität, wenn auch nicht so viel wie in der Gogland IDE. Der Screencast in der Readme-Datei von vscode-go zeigt gut, wie die meisten Funktionen funktionieren.
Cloud9
Von den drei Cloud-IDEs, die Go unterstützen, scheint Cloud9 derzeit die interessanteste zu sein. Sie hat den funktionalsten Programmiereditor der drei und unterstützt neben Go etwa 17 weitere Sprachen. Obwohl die Code-Vervollständigung für die Sprache Go als experimentell gekennzeichnet ist, funktionierte sie meiner Meinung nach recht gut und verursachte kaum Verzögerungen bei der Eingabe.
Der Ace-Editor von Cloud9 unterstützt derzeit Syntax-Hervorhebung für mehr als 100 Programmiersprachen. Die obige Zahl 17 bezieht sich auf Sprachen, die auch andere Funktionen wie das Ausführen des Codes, Linting, Outlining, Code-Vervollständigung und Debugging unterstützen.
Cloud9-Workspaces laufen derzeit unter Ubuntu 14.04 und Go 1.7.3. Sie können Ihre Go-Installation von der Bash-Shell aus aktualisieren (siehe unten im Screenshot) sowie Ihre Go- und anderen Programme von der Bash aus starten.
Wie wir gesehen haben, gibt es viele Möglichkeiten, eine Programmierumgebung für die Go-Entwicklung zu wählen. Während ich Gogland als beste Go-IDE mit vollem Funktionsumfang, Visual Studio Code mit vscode-go als besten Go-Editor und Cloud9 als beste Go-Cloud-IDE für mich ausgewählt habe, gibt es mehr als 30 weitere Möglichkeiten. Angesichts der Tatsache, wie persönlich die Wahl der Software-Entwicklungsumgebungen sein kann, sollten Sie einige ausprobieren und sehen, welche Ihren Bedürfnissen und Vorlieben am besten entspricht.