Προγραμματισμός

Τα καλύτερα IDE και συντάκτες γλώσσας Go

Η γλώσσα Go της Google, γνωστή και ως Golang, επιλέχθηκε πρόσφατα ως γλώσσα προγραμματισμού του Tiobe του 2016, με βάση την ταχεία αύξηση της δημοτικότητάς του κατά τη διάρκεια του έτους, περισσότερο από το διπλάσιο από τη δεύτερη θέση των Dart και Perl. Το ευρετήριο γλωσσών της Tiobe βασίζεται στον "αριθμό ειδικευμένων μηχανικών παγκοσμίως, σε μαθήματα και σε τρίτους προμηθευτές", χρησιμοποιώντας τα αποτελέσματα πολλών μηχανών αναζήτησης.

Αυτή η μεγάλη αύξηση της δημοτικότητας συνεπάγεται αυξημένο ενδιαφέρον για εργαλεία ανάπτυξης για τη γλώσσα προγραμματισμού. Επειδή η γλώσσα Go διανέμεται σε μορφή ανοιχτού κώδικα με μεταγλωττιστές, εργαλεία και βιβλιοθήκες, αυτό που μένει για τους προγραμματιστές να βρουν για τον εαυτό τους είναι περιβάλλοντα επεξεργασίας με γνώμονα το Go, είτε είναι ευθεία προγράμματα επεξεργασίας είτε ολοκληρωμένα περιβάλλοντα ανάπτυξης (IDE), που φιλοξενούνται τοπικά ή στο σύννεφο.

Για αυτό το άρθρο προσπάθησα να εξετάσω όλα τα διαθέσιμα περιβάλλοντα επεξεργασίας με γνώμονα το Go και να μηδενίζω αυτά που φαίνονται αξιόλογα. Ξεκίνησα με την επίσημη λίστα IDE και Plugins για Go και κέρδισα περίπου τα 35 στοιχεία της λίστας μέχρι αυτά που ίσως αξίζουν μια δοκιμή. Θα ξεκινήσω με μια γρήγορη συλλογή των χρήσιμων προϊόντων που βρήκα σε κάθε κατηγορία και θα τελειώσω με μια προσεκτική ματιά στις κορυφαίες επιλογές μου.

Σημειώστε ότι η ανάπτυξη γλώσσας Go βασίζεται συνήθως στη μεταβλητή GOPATH που έχει ρυθμιστεί στη ρίζα του χώρου εργασίας Go development. Αυτό μπορεί να είναι ένα πρόβλημα για εφαρμογές GUI, όπως οι συντάκτες, οι οποίοι δεν τηρούν πάντα τις ρυθμίσεις περιβάλλοντος.

Υπάρχουν περισσότερα από δώδεκα εργαλεία γλώσσας Go που μπορείτε να εγκαταστήσετε σε καταλόγους στο φάκελο GOPATH με το πήγαινε πάρε εντολή, μόλις εγκατασταθεί το Go. Πολλοί από τους συντάκτες που αξιολόγησα χρησιμοποιούν ένα ή περισσότερα από αυτά τα εργαλεία.

Πηγαίνετε IDE

Υπάρχει ένας εκπληκτικός αριθμός IDE που υποστηρίζουν το Go. Ωστόσο, η έννοια της «υποστήριξης» ποικίλλει. Τέσσερις IDE ξεχώρισαν για μένα: Gogland, Eclipse με goclipse, LiteIDE και Komodo IDE.

Στο υψηλότερο σημείο, το Gogland από το JetBrains διαθέτει έξυπνες ολοκληρώσεις, επιθεωρήσεις και γρήγορες επιδιορθώσεις, απλή αναδιαμόρφωση, γρήγορη πλοήγηση, γρήγορα αναδυόμενα παράθυρα, κάποια πολύ βασική δημιουργία κώδικα, αναδρομική ανίχνευση κλήσεων, αναδυόμενα παράθυρα τύπου έκφρασης, επισήμανση σημείου εξόδου, εύρεση χρήσης, μορφοποίηση κώδικα, σημασιολογική επισήμανση και παραμέτρους υπαινίσσεται στον επεξεργαστή του. Ναι, αυτή είναι πολλές λειτουργίες για την επεξεργασία μιας νέας γλώσσας. Άλλες λειτουργίες του Gogland περιλαμβάνουν ένα ενσωματωμένο πρόγραμμα εντοπισμού σφαλμάτων, ανάλυση κάλυψης, δοκιμαστική εκτέλεση, ένα μενού για την εκτέλεση εργαλείων Go και κάποια λειτουργικότητα που δεν είναι συγκεκριμένη για Go, παρόμοια με αυτό που θα βρείτε σε άλλα προϊόντα JetBrains, όπως το IntelliJ IDEA. Το Gogland μπορεί να διαχειριστεί πολλές ρυθμίσεις GOPATH, αντί να βασίζεται αποκλειστικά στο σύστημα GOPATH.

Το Gogland διατίθεται προς το παρόν δωρεάν ως προϊόν πρώιμης πρόσβασης. Ενδεχομένως θα τιμολογηθεί σύμφωνα με άλλα προϊόντα JetBrains τελικά. Περιμένετε να είναι διαθέσιμη με ετήσια συνδρομή είτε από μόνη της είτε σε ένα πακέτο με τα υπόλοιπα εργαλεία του JetBrains, με εκπτώσεις για ακαδημαϊκούς και συνεισφέροντες ανοιχτού κώδικα.

Σε ένα ελαφρώς χαμηλότερο επίπεδο πολυπλοκότητας, το Eclipse με goclipse παρέχει επισήμανση σύνταξης, αυτόματη εσοχή και περιγραφή στον επεξεργαστή του, όλα στο πνεύμα άλλων ενοτήτων γλώσσας Eclipse όπως η Java. Οι ενσωματώσεις περιλαμβάνουν εντοπισμό σφαλμάτων με GDB, εύρεση ορισμών με τα εργαλεία γκουρού και godef Go και αυτόματη συμπλήρωση με το εργαλείο gocode. Το Eclipse και το plugin goclipse είναι δωρεάν και ανοιχτού κώδικα.

Το LiteIDE διαθέτει πρόγραμμα περιήγησης πακέτου, προβολή και περίγραμμα κλάσης, πρόγραμμα περιήγησης εγγράφων, πλοήγηση κώδικα, εύρεση χρηστών και αναδιαμόρφωση κώδικα στον επεξεργαστή του. Οι ενσωματώσεις διαθέτουν υποστήριξη gocode, ευρετήριο GOPATH API, εντοπισμό σφαλμάτων με GDB και παιδική χαρά Go. Το LiteIDE είναι δωρεάν και ανοιχτού κώδικα.

Το Komodo IDE υποστηρίζει τον έλεγχο σύνταξης Go (linting) και την επισήμανση, τη σύνταξη χρωμάτων, την αναδίπλωση κώδικα και άλλες δυνατότητες που βελτιώνουν την παραγωγικότητα. Το Komodo υποστηρίζει επίσης την ευφυΐα κώδικα Go με ολοκληρώσεις, συμβουλές κλήσεων, περιγράμματα και ορισμό μετάβασης. Το Refactoring περιλαμβάνει μετονομασία μεταβλητών και μελών τάξης και εξαγωγή μεθόδου. Το Komodo υποστηρίζει δοκιμές μονάδων Go, συνεργασία κώδικα, έλεγχο έκδοσης, διαδραστικά κελύφη και δημιουργία προφίλ. Ο κύριος ισχυρισμός της Komodo για τη φήμη είναι ότι υποστηρίζει όλες τις μεγάλες γλώσσες ανοιχτού κώδικα, συμπεριλαμβανομένων των Python, Node.js, Ruby, Go, Perl και Tcl.

Το Komodo IDE είναι ένα εμπορικό προϊόν. Το Komodo Editor, το οποίο διαθέτει ένα υποσύνολο των δυνατοτήτων του IDE, είναι δωρεάν.

Πηγαίνετε συντάκτες

Ενώ ένα IDE μπορεί να παρέχει όλες τις λειτουργίες που θέλετε για την ανάπτυξη κώδικα, τα IDE συχνά αισθάνονται «βαρύ». Με άλλα λόγια, μπορεί να χρειαστεί πολύς χρόνος για να ξεκινήσουν, να χρησιμοποιήσουν πολλή μνήμη και μερικές φορές να μην ανταποκρίνονται καθώς πληκτρολογείτε κώδικα επειδή κάνουν πάρα πολλά στο παρασκήνιο. Οι συντάκτες κώδικα μπορεί μερικές φορές να είναι προτιμότεροι, ειδικά για σύντομες περιόδους σύνδεσης, αρκεί να μην σας ενοχλεί να μεταβείτε σε ξεχωριστό παράθυρο κελύφους γραμμής εντολών για μεταγλώττιση.

Οι προσθήκες μερικές φορές μπορούν να προσθέσουν λειτουργίες τύπου IDE σε επεξεργαστές κώδικα. Αυτό είναι συνήθως καλό, εφ 'όσον η περιοδική επιβάρυνση της διατήρησης των προσθηκών ενημερωμένη και η συνεχής επιβάρυνση των προσθηκών που εκτελούν διαδικασίες στο παρασκήνιο δεν επιβραδύνουν την επεξεργασία σας.

Οι Atom, Brackets και Visual Studio Code είναι οι τρεις συντάκτες που ξεχώρισαν για τη δουλειά μου στη γλώσσα Go. Όλα είναι δωρεάν και ανοιχτού κώδικα. Παρ 'όλα αυτά, τα BBEdit, Emacs, Notepad ++, Sublime Text, TextMate και Vim ενσωματώνονται όλα με τα πρόσθετα γλωσσών Go και όλα έχουν τους υποστηρικτές τους. Τα Emacs, Notepad ++ και Vim είναι δωρεάν και ανοιχτού κώδικα. Το BBEdit είναι εμπορικό, αλλά ο μικρός αδελφός του TextWrangler είναι δωρεάν.

Ο συντάκτης Atom από το GitHub αποστέλλει το πακέτο γλώσσας-go, το οποίο υποστηρίζει γραμματική και αποσπάσματα Go. Πρόσθετα πακέτα για Go προσφέρουν περισσότερη λειτουργικότητα. Για παράδειγμα, το go-plus ενσωματώνεται με πολλά τυπικά εργαλεία Go (για αυτόματη συμπλήρωση, μορφοποίηση, χνούδι, δοκιμή) για την παροχή περιβάλλοντος τύπου IDE και το go-debug ενσωματώνεται με το delve debugger.

Ο επεξεργαστής αγκυλών από την Adobe έχει πολλές επεκτάσεις κοινότητας για υποστήριξη Go. Αυτά περιλαμβάνουν το Go-IDE, το οποίο χρησιμοποιεί gocode για αυτόματη συμπλήρωση Go-Syntax, το οποίο χρησιμοποιεί CodeMirror για επισήμανση σύνταξης. και βελτιωμένο Go Formatter, το οποίο χρησιμοποιεί γοφτ για τη μορφοποίηση κώδικα και goimports για τη διαχείριση των εισαγωγών.

Το Visual Studio Code υποστηρίζει την επισήμανση σύνταξης Go έξω από το κουτί. Πρόσθετες δυνατότητες παρέχονται από το πρόσθετο vscode-go, το οποίο ενσωματώνεται με περισσότερα από δώδεκα τυπικά εργαλεία Go. Εάν δεν έχετε ορίσει το GOPATH, η προσθήκη θα σας ζητήσει να το ορίσετε μόλις προσπαθήσετε να επεξεργαστείτε ένα αρχείο γλώσσας Go. μπορείτε να το ορίσετε για το έργο ή / και το περιβάλλον του συστήματος. Εάν δεν έχετε εγκαταστήσει τα εργαλεία Go, η προσθήκη θα σας ζητήσει να τα εγκαταστήσετε στα τυπικά μέρη, όπως καθορίζεται από το GOPATH σας.

Go IDE που βασίζονται σε σύννεφο

Τα IDE που βασίζονται σε σύννεφο είναι μια σχετικά πρόσφατη καινοτομία στον χώρο ανάπτυξης λογισμικού. Έχουν δύο εγγενή πλεονεκτήματα: Δεν απαιτούν καμία τοπική ρύθμιση εκτός από ένα συμβατό πρόγραμμα περιήγησης και αυτά ενδέχεται επιτρέψτε την επεξεργασία από πολλούς προγραμματιστές, εάν έχουν σχεδιαστεί για αυτό. Στο μειονέκτημα, τα IDE που βασίζονται σε σύννεφο συχνά υποφέρουν από καθυστέρηση, γεγονός που μπορεί να οδηγήσει τους προγραμματιστές να παραλείψουν και να επηρεάσουν τη «ροή» που επιτρέπει στους κωδικοποιητές να είναι πιο παραγωγικοί. Τρία IDE που βασίζονται σε σύννεφο υποστηρίζουν επί του παρόντος τη γλώσσα Go: Cloud9, CodeEnv και Wide.

Το Cloud9 είναι ένα πολύγλωσσο βασισμένο σε σύννεφο IDE που υποστηρίζει το Go out of the box. Συνδέεται με τα αποθετήρια GitHub, Bitbucket και Google Cloud Platform και διαθέτει χώρους εργασίας που μπορείτε να μοιραστείτε και να κλωνοποιήσετε. Εκτός από έναν επεξεργαστή κώδικα με ένα εκτεταμένο σύνολο χαρακτηριστικών και ένα ηλεκτρονικό σύστημα αρχείων, διαθέτει MySQL και άλλες βάσεις δεδομένων, τερματικά και άμεσα παράθυρα και προσαρμόσιμες συνδέσεις πληκτρολογίου, με τις βασικές λειτουργίες Vim, Emacs και Sublime Text. Η αυτόματη συμπλήρωση και ο εντοπισμός σφαλμάτων για το Go εξακολουθούν να είναι πειραματικές, αλλά η επισήμανση σύνταξης, το πλαίσιο εκτέλεσης, η προβολή περιγράμματος και το χνούδι υποστηρίζονται πλήρως.

Το CodeEnv είναι επίσης ένα πολυγλωσσικό IDE που βασίζεται σε σύννεφο. Υπάρχει μια εικόνα περιβάλλοντος βάσης Go για ιδιωτικά περιβάλλοντα, καθώς και μια δημόσια εικόνα περιβάλλοντος Go. Κάθε περιβάλλον αποτελείται από ένα σύστημα αρχείων, έναν απλό επεξεργαστή κώδικα με επισήμανση σύνταξης και ένα παράθυρο τερματικού. Υπάρχουν επί του παρόντος οκτώ επιλογές βασικής εικόνας και έξι επιλογές εικόνας back-end.

Το Wide είναι ένα διαδικτυακό IDE για ομάδες που είναι γραμμένες στη γλώσσα προγραμματισμού Go και. Χρησιμοποιεί έναν επεξεργαστή προγραμματισμού με βάση κώδικα CodeMirror με επισήμανση σύνταξης υποβοηθούμενη από gocode, αυτόματη συμπλήρωση, μορφοποίηση κώδικα και συνεργασία σε πραγματικό χρόνο. Ο Wide αναφέρει το LiteIDE ως εξάρτηση.

Γκόγκλαντ

Το JetBrains Gogland, που βρίσκεται σε κατάσταση πρόωρης προεπισκόπησης, φαίνεται να είναι το πιο πλήρες διαθέσιμο ID ID, αν και δεν έχει κυκλοφορήσει ακόμη εμπορικά. Ο ενσωματωμένος εντοπιστής εντοπισμού σφαλμάτων, η ανάλυση κάλυψης και η δοκιμαστική λειτουργία προχωρούν σε μεγάλο βαθμό προς τη διάκρισή του από τους επεξεργαστές του μύλου που έχουν μερικές ενσωματώσεις εργαλείων.

Στο παρακάτω στιγμιότυπο οθόνης, όπου χρησιμοποιώ το Gogland για να εξετάσω μερικούς από τον πηγαίο κώδικα του έργου γλώσσας Go, μπορείτε να δείτε πολλές δυνατότητες επεξεργασίας του Gogland, όπως το δέντρο έργου, μια υπόδειξη επιθεώρησης (η λάμπα), την επισήμανση σημείου εξόδου και τη γρήγορη περιήγηση χρησιμοποιώντας τη γραμμή πλοήγησης στα δεξιά (το πλαίσιο του κώδικα με αριθμούς γραμμής εκτός λειτουργίας). Για περισσότερα στιγμιότυπα οθόνης που δείχνουν τι μπορεί να κάνει το Gogland, θα σας παραπέμψω στον οδηγό λειτουργιών του JetBrains.

Το Gogland χρησιμοποιεί το ίδιο οικοσύστημα plugin JetBrains με τα IntelliJ IDEA και WebStorm και περιλαμβάνει ήδη πολλές σχετικές δυνατότητες που κληρονομούνται από αυτά τα προϊόντα. Για παράδειγμα, μπορείτε να χρησιμοποιήσετε το Gogland για εργασία με HTML και γλώσσες και πλαίσια διεπαφής, ακριβώς όπως το WebStorm. Το Gogland σάς επιτρέπει επίσης να εργάζεστε με βάσεις δεδομένων SQL, όπως το IntelliJ IDEA και το DataGrip. Εάν πρέπει να συνδυάσετε την υποστήριξη Node.js με την κωδικοποίηση Go ή χρειάζεστε υποστήριξη Subversion εκτός από την ενσωμάτωση του Git, είναι γρήγορο να προσθέσετε τις προσθήκες.

Κωδικός Visual Studio

Το Visual Studio Code με το vscode-go plugin είναι ένας καλός επεξεργαστής Go που λειτουργεί καλά και έχει καλή ενσωμάτωση Git. Το Visual Studio Code χρειάζεται ενημερώσεις και επανεκκίνηση τουλάχιστον κάθε μήνα, αλλά σπάνια φαίνεται αργό κατά την επεξεργασία. Στο παρακάτω στιγμιότυπο οθόνης βλέπουμε τον εξερευνητή στα αριστερά, την εγκατάσταση εργαλείων Go κάτω δεξιά και την επεξεργασία κώδικα επάνω δεξιά.

Τα εργαλεία Go επιτρέπουν την προσθήκη vscode-go, η οποία παρέχει πολλές δυνατότητες επεξεργασίας και ελέγχου κώδικα. Αυτές περιλαμβάνουν λίστες ολοκλήρωσης (χρήση gocode), βοήθεια υπογραφής (χρήση gogetdoc ή Γκονφ συν Γκόντακ), αποσπάσματα, γρήγορες πληροφορίες (χρήση gogetdoc ή Γκονφ συν Γκόντακ), μεταβείτε στον ορισμό (χρησιμοποιώντας gogetdoc ή Γκονφ συν Γκόντακ), βρείτε αναφορές (χρησιμοποιώντας γκουρού), περίγραμμα αρχείων (χρησιμοποιώντας διάγραμμα), αναζήτηση συμβόλων χώρου εργασίας (χρησιμοποιώντας go-σύμβολα), μετονομασία (χρησιμοποιώντας gorename), build-on-save (χρησιμοποιώντας πήγαινε να χτίσεις και πάω δοκιμή), lint-on-save (χρήση γκολφ ή gometalinter), μορφή (χρησιμοποιώντας goreturns ή goimports ή γοφτ), δημιουργήστε σκελετό δοκιμών μονάδας (χρησιμοποιώντας καταλαβαίνω), προσθέστε εισαγωγές (χρησιμοποιώντας gopkgs), και μερικώς εφαρμοσμένος εντοπισμός σφαλμάτων (χρήση σκάβω).

Αυτή είναι μια πολύ χρήσιμη λειτουργικότητα, αν και όχι τόσο πολύ στο Gogland IDE. Το screencast στο αρχείο vscode-go readme κάνει καλή δουλειά για να δείξει πώς λειτουργούν τα περισσότερα από τα χαρακτηριστικά.

Σύννεφο 9

Από τα τρία IDE cloud που υποστηρίζουν το Go, το πιο ενδιαφέρον σήμερα φαίνεται να είναι το Cloud9. Διαθέτει τον πιο λειτουργικό επεξεργαστή προγραμματισμού των τριών και υποστηρίζει περίπου 17 γλώσσες εκτός από το Go. Παρόλο που η ολοκλήρωση του κωδικού γλώσσας Go χαρακτηρίζεται πειραματική, βρήκα ότι λειτούργησε αρκετά καλά και δεν προκάλεσε καθόλου καθυστερήσεις στην πληκτρολόγηση.

Το πρόγραμμα επεξεργασίας Ace του Cloud9 υποστηρίζει αυτήν τη στιγμή την επισήμανση σύνταξης για περισσότερες από 100 γλώσσες προγραμματισμού. Ο αριθμός 17 παραπάνω αφορά γλώσσες που έχουν και άλλη υποστήριξη, όπως εκτέλεση κώδικα, χνούδι, περίγραμμα, ολοκλήρωση κώδικα και εντοπισμός σφαλμάτων.

Οι χώροι εργασίας Cloud9 εκτελούν επί του παρόντος το Ubuntu 14.04 και το Go 1.7.3. Μπορείτε να ενημερώσετε την εγκατάσταση Go από το κέλυφος Bash (δείτε το κάτω μέρος του στιγμιότυπου οθόνης), καθώς και να εκτελέσετε το Go και άλλα προγράμματα από το Bash.

Όπως έχουμε δει, έχετε πολλές πιθανές επιλογές περιβάλλοντος προγραμματισμού για ανάπτυξη Go. Ενώ διάλεξα το Gogland ως το καλύτερο πλήρες χαρακτηριστικό Go IDE, το Visual Studio Code με το vscode-go ως το καλύτερο πρόγραμμα επεξεργασίας Go και το Cloud9 ως το καλύτερο Go cloud IDE για μένα, υπάρχουν περισσότερες από 30 άλλες δυνατότητες. Δεδομένου του πόσο προσωπική μπορεί να είναι η επιλογή των περιβαλλόντων ανάπτυξης λογισμικού, πρέπει να δοκιμάσετε μερικά και να δείτε ποια ταιριάζει καλύτερα στις ανάγκες και τις προτιμήσεις σας.