Programmering

De beste Go-språket IDEer og redaktører

Googles Go-språk, også kalt Golang, ble nylig valgt som Tiobes programmeringsspråk i 2016, basert på den raske veksten i popularitet gjennom året, mer enn dobbelt så mye som andreplassene Dart og Perl. Tiobes språkindeks er basert på "antall dyktige ingeniører over hele verden, kurs og tredjepartsleverandører" ved å bruke resultatene fra flere søkemotorer.

Den store popularitetsveksten fører til en økt interesse for utviklingsverktøy for programmeringsspråket. Fordi Go-språket distribueres i åpen kildekode-form komplett med kompilatorer, verktøy og biblioteker, er det som er igjen for programmerere å finne selv, Go-bevisste redigeringsmiljøer, enten det er redaktører eller integrerte utviklingsmiljøer (IDEer), vert lokal eller i Sky.

For denne artikkelen har jeg prøvd å se på alle tilgjengelige Go-bevisste redigeringsmiljøer og null på de som virker verdt. Jeg startet med den offisielle listen over IDEer og plugins for Go og vant de rundt 35 elementene på listen ned til de som fortjener en prøveversjon. Jeg begynner med en rask oversikt over de nyttige produktene jeg fant i hver kategori, og slutter med en nærmere titt på mine toppvalg.

Merk at Go-språkutvikling vanligvis er avhengig av GOPATH-variabelen som er satt til roten til Go-utviklingsarbeidsområdet. Det kan være et problem for GUI-applikasjoner som redaktører, som ikke alltid respekterer miljøinnstillingene.

Det er mer enn et dusin Go-språkverktøy som du kan installere i kataloger under GOPATH-mappen med gå og hent når Go selv er installert. Mange av redaktørene jeg evaluerte bruker ett eller flere av disse verktøyene.

Gå IDEer

Det er et overraskende antall IDEer som støtter Go. Men betydningen av "støtte" varierer. Fire IDE-er skilte seg ut for meg: Gogland, Eclipse with goclipse, LiteIDE og Komodo IDE.

I den høye enden har Gogland fra JetBrains smarte kompletteringer, inspeksjoner og hurtigreparasjoner, enkel refactoring, rask navigering, raske popup-vinduer, noen veldig grunnleggende kodegenerering, rekursiv samtalegjenkjenning, uttrykkstype pop-up, uthevingspunktheving, bruk å finne, kodeformatering, semantisk utheving og parameterhint i redaktøren. Ja, det er mye funksjonalitet for redigering av et ungt språk. Andre Gogland-funksjoner inkluderer en integrert feilsøkingsprogram, dekningsanalyse, testkjøring, en meny for å kjøre Go-verktøy og noe ikke-Go-spesifikk funksjonalitet som ligner på det du finner i andre JetBrains-produkter, for eksempel IntelliJ IDEA. Gogland kan administrere flere GOPATH-innstillinger, i stedet for å stole utelukkende på systemets GOPATH-miljø.

Gogland er for tiden tilgjengelig gratis som et produkt med tidlig tilgang. Det vil trolig bli priset i tråd med andre JetBrains-produkter til slutt. Forvent at den vil være tilgjengelig ved årlig abonnement enten alene eller i en pakke med resten av JetBrains ’verktøy, med rabatter for akademikere og bidragsytere med åpen kildekode.

På et litt lavere nivå av kompleksitet gir formørkelse med goclipse syntaksfokusering, automatisk innrykk og skissering i redigereren, alt i ånden til andre Eclipse-språkmoduler som Java. Integrasjoner inkluderer feilsøking med GDB, definisjonsfunn med guru- og godef Go-verktøyene, og autofullføring med gocode-verktøyet. Formørkelse og goclipse-plugin er gratis og åpen kildekode.

LiteIDE har en pakke-nettleser, klassevisning og oversikt, dokumentleser, kodenavigering, finne bruksområder og kodefakturering i redigereren. Integrasjoner har gocode-støtte, GOPATH API-indeks, feilsøking med GDB og en Go-lekeplass. LiteIDE er gratis og åpen kildekode.

Komodo IDE støtter Go syntaks sjekking (linting) og utheving, syntaks farging, kodefelling og andre funksjoner som forbedrer produktiviteten. Komodo støtter også Go code intelligence med kompletteringer, ringetips, disposisjoner og go-to-definition. Refactoring inkluderer endre navn på variabler og klassemedlemmer og metodeutvinning. Komodo støtter Go-enhetstesting, kodesamarbeid, versjonskontroll, interaktive skall og kodeprofilering. Komodos største påstand om berømmelse er at den støtter alle de viktigste språkene med åpen kildekode, inkludert Python, Node.js, Ruby, Go, Perl og Tcl.

Komodo IDE er et kommersielt produkt. Komodo Editor, som har en delmengde av IDEs evner, er gratis.

Gå redaktører

Mens en IDE kan tilby all den funksjonaliteten du ønsker for å utvikle kode, kan IDE ofte føles "tung". Det kan med andre ord ta lang tid å starte opp, bruke mye minne og noen ganger føle at de ikke svarer når du skriver inn kode fordi de gjør for mye i bakgrunnen. Kodeditorer kan noen ganger være å foretrekke, spesielt for korte økter, så lenge du ikke er plaget av å måtte bytte til et eget kommandolinjeskallvindu for kompilering.

Plugins kan noen ganger legge til IDE-lignende funksjoner til kodeditorer. Det er vanligvis bra, så lenge det periodiske overhead for å holde programtilleggene oppdatert og den konstante overhead for programtillegg som kjører prosesser i bakgrunnen, ikke reduserer redigeringen.

Atom, Brackets og Visual Studio Code er de tre redaktørene som markerte seg for meg for å jobbe i Go-språket. Alle er gratis og åpen kildekode. Likevel integreres BBEdit, Emacs, Notepad ++, Sublime Text, TextMate og Vim med Go-språk-plugins, og alle har sine talsmenn. Emacs, Notepad ++ og Vim er gratis og åpen kildekode. BBEdit er kommersiell, men lillebroren TextWrangler er gratis.

Atom-redaktøren fra GitHub leveres med språk-go-pakken, som støtter Go-grammatikk og utdrag. Ytterligere pakker for Go gir mer funksjonalitet. For eksempel integreres go-plus med mange standard Go-verktøy (for autofullføring, formatering, linting, testing) for å gi et IDE-lignende miljø, og go-debug integreres med delge-feilsøkingsprogrammet.

Brackets-redaktøren fra Adobe har flere fellesskapsutvidelser for Go-støtte. Disse inkluderer Go-IDE, som bruker gocode for autofullføring; Go-Syntax, som bruker CodeMirror for syntaksmarkering; og Improved Go Formatter, som bruker gofmt for å formatere kode og goimports for å håndtere import.

Visual Studio Code støtter Go syntaksmarkering ut av boksen. Ytterligere funksjoner tilbys av vscode-go plugin, som integreres med mer enn et dusin standard Go-verktøy. Hvis du ikke har GOPATH-settet ditt, vil programtillegget be deg om å angi det så snart du prøver å redigere en Go-språkfil; du kan angi det for prosjektet og / eller systemmiljøet. Hvis du ikke har Go-verktøyene installert, vil programtillegget be om å installere dem på de vanlige stedene som bestemt av GOPATH.

Cloud-baserte Go IDEer

Cloud-baserte IDE er en relativt ny innovasjon i programvareutviklingsområdet. De har to iboende fordeler: De krever ikke noe lokalt oppsett annet enn en kompatibel nettleser, og de kan tillate redigering av flere utviklere hvis de er designet for det. På baksiden lider ofte skybaserte IDEer av forsinkelser, noe som kan føre til at utviklere blir nøtter og forstyrrer "flyt" som gjør at kodere kan være mest produktive. Tre skybaserte IDE-er støtter for øyeblikket Go-språket: Cloud9, CodeEnv og Wide.

Cloud9 er en flerspråklig skybasert IDE som støtter Gå ut av boksen. Den kobles til GitHub, Bitbucket og Google Cloud Platform-arkiver, og den har arbeidsområder du kan dele og klone. I tillegg til en kodeditor med et omfattende funksjonssett og et online filsystem, har den MySQL og andre databaser, terminalvinduer og umiddelbare vinduer og tilpassbare tastaturbindinger, med Vim, Emacs og Sublime Text-modus som standard. Autofullføring og feilsøking for Go er fremdeles eksperimentell, men syntaksutheving, kjøringspanelet, oversiktsvisning og linting støttes fullt ut.

CodeEnv er også en skybasert IDE på flere språk. Det er et Go-basismiljøbilde for private miljøer, samt et offentlig Go-miljøbilde. Hvert miljø består av et filsystem, en enkel kodeditor med syntaksmarkering og et terminalvindu. Det er for tiden åtte valg av basisbilde og seks valg av back-end image.

Wide er en nettbasert IDE for team som er skrevet på og for Go-programmeringsspråket. Den bruker en CodeMirror-basert temaprogrammeringseditor med gocode-assistert syntaksmarkering, autofullføring, kodeformatering og sanntidssamarbeid. Wide siterer LiteIDE som en avhengighet.

Gogland

JetBrains Gogland, som for tiden er i en tidlig forhåndsvisningstilstand, ser ut til å være den mest komplette Go IDE tilgjengelig, selv om den ennå ikke er utgitt kommersielt. Den integrerte feilsøkingsprogrammet, dekningsanalysen og testkjøringen går langt i retning av å skille den fra redaksjonen som har noen få verktøyintegrasjoner.

I skjermbildet nedenfor, hvor jeg bruker Gogland for å undersøke noe av Go-språkprosjektets kildekode, kan du se flere Gogland-redigeringsfunksjoner, inkludert prosjekttreet, et inspeksjonstips (lyspære), uthevingspunktheving og rask surfing ved hjelp av navigasjonslinjen til høyre (boksen med kode med linjenumre ute av drift). For flere skjermbilder som viser hva Gogland kan gjøre, vil jeg henvise deg til JetBrains ’funksjonsveiledning.

Gogland bruker det samme JetBrains plugin-økosystemet som IntelliJ IDEA og WebStorm, og det inneholder allerede mange relevante funksjoner som er arvet fra disse produktene. For eksempel kan du bruke Gogland til å jobbe med HTML og front-end språk og rammer, akkurat som WebStorm. Gogland lar deg også jobbe med SQL-databaser, som IntelliJ IDEA og DataGrip. Hvis du trenger å kombinere Node.js-støtte med Go-kodingen eller trenger Subversion-støtte i tillegg til Git-integrering, er det et raskt spørsmål om å legge til plugins.

Visual Studio-kode

Visual Studio Code med vscode-go plugin er en fin Go-editor som fungerer bra og har god Git-integrasjon. Visual Studio Code trenger oppdateringer og omstart minst månedlig, men det føles sjelden tregt under redigering. I skjermbildet nedenfor ser vi utforskeren til venstre, installasjon av Go-verktøy nederst til høyre og kodedigering øverst til høyre.

Go-verktøyene aktiverer vscode-go plugin, som leverer mange redigerings- og kodekontrollfunksjoner. Disse inkluderer fullføringslister (ved hjelp av gocode), signaturhjelp (ved hjelp av gogetdoc eller godef i tillegg til godoc), utdrag, rask info (ved hjelp av gogetdoc eller godef i tillegg til godoc), gå til definisjon (ved hjelp av gogetdoc eller godef i tillegg til godoc), finn referanser (ved hjelp av guru), filoversikt (ved hjelp av go-outline), arbeidssymbolssøk (ved hjelp av go-symboler), endre navn (ved hjelp av gorename), build-on-save (ved hjelp av gå bygge og gå test), lint-on-save (ved hjelp av golint eller gometalinter), format (ved hjelp av goreturns eller goimports eller gofmt), generer enhetstester skjelett (ved hjelp av gotests), legg til import (ved hjelp av gopkgs), og delvis implementert feilsøking (ved hjelp av utgrave).

Det er mye nyttig funksjonalitet, men ikke så mye som du får i Gogland IDE. Screencast i vscode-go readme-filen gjør en god jobb med å demonstrere hvordan de fleste funksjonene fungerer.

Cloud 9

Av de tre sky-IDEene som støtter Go, ser det mest interessante ut til å være Cloud9. Den har den mest funksjonelle programmeringsredigereren av de tre og støtter omtrent 17 språk i tillegg til Go. Selv om ferdigstillelsen av Go-språkkoden er merket eksperimentell, fant jeg at den fungerte ganske bra og ikke forårsaket mye for å skrive forsinkelser.

Ace-editoren til Cloud9 støtter for øyeblikket syntaksmarkering for mer enn 100 programmeringsspråk. Nummer 17 ovenfor er for språk som også har annen støtte, for eksempel å kjøre koden, linting, disposisjon, fullføring av koden og feilsøking.

Cloud9-arbeidsområder kjører for tiden Ubuntu 14.04 og Go 1.7.3. Du kan oppdatere Go-installasjonen din fra Bash-skallet (se nederst på skjermbildet), samt kjøre Go og andre programmer fra Bash.

Som vi har sett har du mange mulige valg av programmeringsmiljø for Go-utvikling. Mens jeg valgte Gogland som den beste fullstendige Go IDE, Visual Studio Code med vscode-go som den beste Go-editoren, og Cloud9 som den beste Go cloud IDE for meg, det er mer enn 30 andre muligheter. Gitt hvor personlig valg av programvareutviklingsmiljøer kan være, bør du prøve noen få og se hvilke som passer best til dine behov og preferanser.

$config[zx-auto] not found$config[zx-overlay] not found