Najlepsze IDE i edytory języka Go

Język Go firmy Google, aka Golang, został niedawno wybrany jako język programowania Tiobe roku 2016, w oparciu o jego gwałtowny wzrost popularności w ciągu roku, ponad dwukrotnie większy niż w przypadku wiceliderów Dart i Perl. Indeks językowy Tiobe opiera się na „liczbie wykwalifikowanych inżynierów na całym świecie, kursach i dostawcach zewnętrznych”, wykorzystując wyniki wielu wyszukiwarek.

Ten duży wzrost popularności niesie ze sobą zwiększone zainteresowanie narzędziami programistycznymi dla tego języka programowania. Ponieważ język Go jest dystrybuowany w formie open source wraz z kompilatorami, narzędziami i bibliotekami, to co pozostało programistom do znalezienia dla siebie, to środowiska edycji Go, czy to proste edytory, czy zintegrowane środowiska programistyczne (IDE), hostowane lokalnie lub w chmurze.

W tym artykule spróbowałem przyjrzeć się wszystkim dostępnym środowiskom edycji Go i wyzerować te, które wydają się warte uwagi. Zacząłem od oficjalnej listy IDE i pluginów dla Go i z około 35 pozycji na liście wybrałem te, które mogą zasługiwać na przetestowanie. Zacznę od szybkiego podsumowania przydatnych produktów, które znalazłem w każdej kategorii, a skończę na dokładnym przyjrzeniu się moim najlepszym wyborom.

Zauważ, że rozwój języka Go zazwyczaj opiera się na zmiennej GOPATH ustawionej na korzeń przestrzeni roboczej Go. Może to stanowić problem dla aplikacji GUI, takich jak edytory, które nie zawsze honorują ustawienia środowiska.

Istnieje ponad tuzin narzędzi języka Go, które można zainstalować w katalogach pod katalogiem GOPATH za pomocą polecenia go get, po zainstalowaniu samego Go. Wiele z ocenianych przeze mnie edytorów używa jednego lub więcej z tych narzędzi.

Go IDEs

Istnieje zaskakująca liczba IDE, które wspierają Go. Jednakże, znaczenie słowa „wsparcie” jest różne. Dla mnie wyróżniały się cztery IDE: Gogland, Eclipse z goclipse, LiteIDE i Komodo IDE.

Najwyżej, Gogland od JetBrains posiada inteligentne uzupełnienia, inspekcje i szybkie poprawki, prosty refaktoring, szybką nawigację, szybkie wyskakujące okienka, pewne bardzo podstawowe generowanie kodu, wykrywanie wywołań rekurencyjnych, wyskakujące okienka z typami wyrażeń, podświetlanie punktu wyjścia, znajdowanie użycia, formatowanie kodu, podświetlanie semantyczne i podpowiedzi parametrów w swoim edytorze. Tak, to sporo funkcji jak na tak młody język. Inne funkcje Goglanda to zintegrowany debugger, analiza pokrycia, uruchamianie testów, menu do uruchamiania narzędzi Go, a także pewne niespecyficzne dla Go funkcje, które są podobne do tych, które można znaleźć w innych produktach JetBrains, takich jak IntelliJ IDEA. Gogland może zarządzać wieloma ustawieniami GOPATH, zamiast polegać wyłącznie na systemowym środowisku GOPATH.

Gogland jest obecnie dostępny za darmo jako produkt wczesnego dostępu. Prawdopodobnie w końcu zostanie wyceniony podobnie jak inne produkty JetBrains. Spodziewajmy się, że będzie dostępny w rocznej subskrypcji, sam lub w pakiecie z resztą narzędzi JetBrains, ze zniżkami dla naukowców i twórców open source.

Na nieco niższym poziomie złożoności, Eclipse z goclipse zapewnia kolorowanie składni, automatyczne wcięcia i obrys w edytorze, wszystko w duchu innych modułów językowych Eclipse, takich jak Java. Integracje obejmują debugowanie za pomocą GDB, wyszukiwanie definicji za pomocą narzędzi guru i godef Go oraz autouzupełnianie za pomocą narzędzia gocode. Eclipse i plugin goclipse są darmowe i open source.

LiteIDE posiada przeglądarkę pakietów, widok i konspekt klas, przeglądarkę dokumentów, nawigację po kodzie, wyszukiwanie zastosowań i refaktoryzację kodu w edytorze. Integracje obejmują wsparcie dla gocode, indeks API GOPATH, debugowanie z GDB i plac zabaw Go. LiteIDE jest darmowy i open source.

Komodo IDE obsługuje sprawdzanie składni Go (linting) i podświetlanie, kolorowanie składni, składanie kodu i inne funkcje zwiększające wydajność. Komodo obsługuje także inteligencję kodu Go z uzupełnieniami, podpowiedziami, konspektami i definicją „go-to-definition”. Refaktoryzacja obejmuje zmianę nazw zmiennych i członków klas oraz ekstrakcję metod. Komodo obsługuje testy jednostkowe Go, współpracę z kodem, kontrolę wersji, interaktywne powłoki i profilowanie kodu. Główną zaletą Komodo jest to, że obsługuje wszystkie główne języki open source, w tym Python, Node.js, Ruby, Go, Perl i Tcl.

Komodo IDE jest produktem komercyjnym. Komodo Editor, który posiada podzbiór możliwości IDE, jest darmowy.

Do edytorów

Mimo że IDE może zapewnić wszystkie funkcje, których potrzebujesz do tworzenia kodu, IDE często mogą wydawać się „ciężkie”. Innymi słowy, mogą długo się uruchamiać, zużywać dużo pamięci i czasami nie reagować na wpisywany kod, ponieważ zbyt wiele robią w tle. Edytory kodu mogą być czasami lepszym rozwiązaniem, zwłaszcza w przypadku krótkich sesji, o ile nie przeszkadza ci konieczność przełączania się do osobnego okna wiersza poleceń w celu kompilacji.

Wtyczki mogą czasami dodawać do edytorów kodu funkcje podobne do IDE. To zwykle jest dobre, o ile okresowy narzut utrzymywania wtyczek w aktualności i stały narzut wtyczek uruchamiających procesy w tle nie spowalnia edycji.

Atom, Brackets i Visual Studio Code to trzy edytory, które wyróżniły się dla mnie podczas pracy w języku Go. Wszystkie są darmowe i mają otwarte źródła. Niemniej jednak, BBEdit, Emacs, Notepad++, Sublime Text, TextMate i Vim wszystkie integrują się z wtyczkami języka Go i wszystkie mają swoich zwolenników. Emacs, Notepad++ i Vim są darmowe i mają otwarte źródła. BBEdit jest komercyjny, ale jego młodszy brat TextWrangler jest darmowy.

Edytor Atom z GitHuba jest dostarczany z pakietem language-go, który obsługuje gramatykę Go i snippety. Dodatkowe pakiety dla Go przynoszą więcej funkcjonalności. Na przykład, go-plus integruje się z wieloma standardowymi narzędziami Go (do autocompletion, formatowania, lintingu, testowania), aby zapewnić środowisko podobne do IDE, a go-debug integruje się z debuggerem delve.

Edytor Brackets firmy Adobe posiada kilka rozszerzeń społeczności do obsługi Go. Należą do nich Go-IDE, który używa gocode do autouzupełniania; Go-Syntax, który używa CodeMirror do kolorowania składni; i Improved Go Formatter, który używa gofmt do formatowania kodu i goimports do zarządzania importem.

Visual Studio Code obsługuje podświetlanie składni Go. Dodatkowe funkcje są dostarczane przez plugin vscode-go, który integruje się z ponad tuzinem standardowych narzędzi Go. Jeśli nie masz ustawionej GOPATH, wtyczka poprosi cię o jej ustawienie, gdy tylko spróbujesz edytować plik języka Go; możesz ją ustawić dla projektu i/lub środowiska systemowego. Jeśli nie masz zainstalowanych narzędzi Go, wtyczka poprosi o zainstalowanie ich w standardowych miejscach określonych przez twoją GOPATH.

Chloud-based Go IDEs

Cloud-based IDEs są stosunkowo niedawną innowacją w przestrzeni rozwoju oprogramowania. Mają one dwie nieodłączne zalety: Nie wymagają lokalnej konfiguracji innej niż kompatybilna przeglądarka i mogą pozwolić na edycję przez wielu programistów, jeśli są do tego zaprojektowane. Z drugiej strony, IDE w chmurze często cierpią z powodu lagów, które mogą doprowadzić programistów do szału i zakłócić „przepływ”, który pozwala koderom być najbardziej produktywnymi. Trzy oparte na chmurze IDE obsługują obecnie język Go: Cloud9, CodeEnv i Wide.

Cloud9 to wielojęzyczne IDE w chmurze, które obsługuje Go od razu po wyjęciu z pudełka. Łączy się z repozytoriami GitHub, Bitbucket i Google Cloud Platform, a także posiada przestrzenie robocze, które można udostępniać i klonować. Oprócz edytora kodu z bogatym zestawem funkcji i systemem plików online, posiada MySQL i inne bazy danych, terminal i okna natychmiastowe oraz konfigurowalne wiązania klawiaturowe, z trybami Vim, Emacs i Sublime Text dostarczanymi w standardzie. Autouzupełnianie i debugowanie dla Go są wciąż eksperymentalne, ale kolorowanie składni, panel uruchomieniowy, widok konspektu i linting są w pełni obsługiwane.

CodeEnv jest również wielojęzycznym IDE w chmurze. Istnieje obraz środowiska bazowego Go dla środowisk prywatnych, jak również obraz środowiska publicznego Go. Każde środowisko składa się z systemu plików, prostego edytora kodu z kolorowaniem składni i okna terminala. Obecnie istnieje osiem możliwości wyboru obrazu bazowego i sześć możliwości wyboru obrazu back-end.

Wide jest internetowym IDE dla zespołów, które jest napisane w i dla języka programowania Go. Wykorzystuje on oparty na CodeMirror edytor programowania tematycznego z podświetlaniem składni wspomaganym przez gocode, autouzupełnianiem, formatowaniem kodu i współpracą w czasie rzeczywistym. Wide podaje LiteIDE jako zależność.

Gogland

JetBrains Gogland, obecnie w stanie wczesnego podglądu, wydaje się być najbardziej kompletnym dostępnym Go IDE, choć nie został jeszcze wydany komercyjnie. Jego zintegrowany debugger, analiza pokrycia i uruchamianie testów znacznie odróżniają go od zwykłych edytorów, które mają kilka integracji narzędziowych.

Na poniższym zrzucie ekranu, gdzie używam Goglanda do zbadania kodu źródłowego projektu języka Go, można zobaczyć kilka funkcji edycyjnych Goglanda, w tym drzewo projektu, podpowiedź inspekcji (żarówka), podświetlanie punktów wyjścia i szybkie przeglądanie za pomocą paska nawigacji po prawej stronie (pole kodu z numerami linii poza kolejnością). Po więcej zrzutów ekranu pokazujących, co potrafi Gogland, odsyłam do przewodnika po funkcjach JetBrains.

InfoWorld

Gogland korzysta z tego samego ekosystemu wtyczek JetBrains, co IntelliJ IDEA i WebStorm, i zawiera już wiele istotnych funkcji odziedziczonych po tych produktach. Na przykład, możesz używać Goglanda do pracy z HTML i językami front-end oraz frameworkami, dokładnie tak jak WebStorm. Gogland pozwala również na pracę z bazami danych SQL, podobnie jak IntelliJ IDEA i DataGrip. Jeśli potrzebujesz połączyć obsługę Node.js z kodowaniem w Go lub potrzebujesz obsługi Subversion oprócz integracji z Git, jest to szybka kwestia dodania wtyczek.

Visual Studio Code

Visual Studio Code z wtyczką vscode-go jest miłym edytorem Go, który działa dobrze i ma dobrą integrację z Git. Visual Studio Code wymaga aktualizacji i restartu co najmniej raz w miesiącu, ale rzadko odczuwa się spowolnienie podczas edycji. 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 (używając go build i go test), lint-on-save (używając golint lub gometalinter), formatować (używając goreturns lub goimports lub gofmt), generować szkielet testów jednostkowych (używając gotests), dodać import (używając gopkgs), oraz częściowo zaimplementować debugowanie (używając delve).

To cała masa użytecznej funkcjonalności, choć nie tak dużo jak w Gogland IDE. Screencast w pliku readme vscode-go dobrze demonstruje, jak działa większość funkcji.

Cloud9

Z trzech IDE w chmurze, które obsługują Go, najbardziej interesujące wydaje się obecnie Cloud9. Ma najbardziej funkcjonalny edytor programowania z tych trzech i obsługuje około 17 języków oprócz Go. Chociaż uzupełnianie kodu w języku Go jest oznaczone jako eksperymentalne, stwierdziłem, że działa całkiem dobrze i nie powoduje zbyt wielu opóźnień w pisaniu.

InfoWorld

Edytor Ace firmy Cloud9 obsługuje obecnie kolorowanie składni dla ponad 100 języków programowania. Liczba 17 powyżej dotyczy języków, które mają również inne wsparcie, takie jak uruchamianie kodu, linting, outlining, uzupełnianie kodu i debugowanie.

Cloud9 workspaces obecnie działa pod Ubuntu 14.04 i Go 1.7.3. Możesz aktualizować swoją instalację Go z powłoki Bash (zobacz na dole zrzutu ekranu), jak również uruchamiać Go i inne programy z Bash.

Jak widzieliśmy, masz wiele możliwości wyboru środowiska programistycznego dla rozwoju Go. Chociaż wybrałem Goglanda jako najlepsze w pełni funkcjonalne Go IDE, Visual Studio Code z vscode-go jako najlepszy edytor Go i Cloud9 jako najlepsze Go cloud IDE dla mnie, istnieje ponad 30 innych możliwości. Biorąc pod uwagę jak osobisty może być wybór środowiska programistycznego, powinieneś wypróbować kilka i zobaczyć, które najlepiej pasuje do twoich potrzeb i preferencji.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.