Tι είναι η γλώσσα προγραμματισμού Go, γιατί δημιουργήθηκε, πού χρησιμοποιείται και γιατί τα τελευταία χρόνια γίνεται όλο και πιο δημοφιλής. Τέλος, μέσα από 16 μαθήματα θα μάθετε τον βασικό κορμό της Go φτιάχνοντας μικρά προγράμματα.

Η Go (ή GoLang) είναι μια σύγχρονη (10 ετών), ανοιχτού κώδικα, γλώσσα προγραμματισμού που γεννήθηκε την περίοδο των πρώτων πολυπύρηνων επεξεργαστών και του εμβρυϊκού τότε Cloud Computing.

Ξεκίνησε ως «αγανάκτηση» για την ταχύτητα μεταγλώττισης των μεγάλων εσωτερικών projects της Google, που ήταν γραμμένες σε C/C++. Οι βασική ομάδα αρχικά αποτελούνταν από μηχανικούς όπως ο Robert Griesemer (Java HotSpot),  Rob Pike (Unix, Plan 9) και Ken Thompson (Unix) που εργάζονταν τότε στη Google ενώ στην συνέχεια δημιουργήθηκε γρήγορα μια ανοιχτή κοινότητα που αποφασίζει για την πορεία της γλώσσας.

Στο παρόν άρθρο θα μάθουμε

  • Ποιες συνθήκες οδήγησαν στην εμφάνιση της Go;
  • Γιατί όχι C++, Python ή Java ;
  • Που χρησιμοποιείται η Go ;
  • Πως κάνω εγκατάσταση τη Go
  • Εγκατάσταση περιβάλλοντος ανάπτυξης για τη Go
  • Βασική δομή ενός Go project και του κώδικα
  • Μαθήματα προγραμματισμού με τη Go
Advertisements

Γιατί άλλη μια γλώσσα προγραμματισμού;

Η Go χρησιμοποιεί σύνταξη υψηλού επιπέδου παρόμοια με γλώσσες όπως η Python. Είναι δημοφιλής για την μινιμαλιστική σύνταξη, τον ενσωματωμένο ταυτοχρονισμό (concurrency), καθώς και για τα ενσωματωμένα εργαλεία, testing, documentation και τη δημιουργία εκτελέσιμων αρχείων για όλες σχεδόν της πλατφόρμες (π.χ. από Linux δημιουργία εκτελέσιμου για Windows).

Ποιες συνθήκες οδήγησαν στην εμφάνιση της Go;

Η δημιουργία της Go μπορεί να κάνει εντύπωση σε κάποιους, αλλά θα πρέπει να δούμε την γέννησή της από την σκοπιά και την περίοδο που δημιουργήθηκε:

  • Η Google έχει εκατοντάδες προγραμματιστές που συχνά αλλάζουν θέση και αρμοδιότητες.
  • Όλα τα projects της έχουν να κάνουν με δικτυακές εφαρμογές (Borg – πρόγονος του kubernetes) που τρέχουν σε μεγάλα Compute Centers με πολυπύρηνους επεξεργαστές σε πολύπλοκα δικτυωμένες δομές.

Επομένως, για εκείνη την περίοδο η ανάγκη για

  • ταχύτατη ανάληψη από κάποιον ενός έργου με κώδικα,
  • που θα είναι εύκολα αναγνώσιμος,
  • «επιβάλει» τυποποιημένες καλές πρακτικές στην σύνταξη κώδικα,
  • διαθέτει ενσωματωμένες δυνατότητες ταυτοχρονισμού
  • και ταχύτατο μεταγλωττισμό

οδήγησαν εν τέλη στην δημιουργία της Go. Βλέποντας το ζήτημα υπό την σκοπιά εκείνης της περιόδου, είναι εύλογο να σκεφτεί κανείς ότι υπάρχουν και άλλες γλώσσες προγραμματισμού (π.χ. C++, Python, Java κλπ) που ακόμα και το 2007-2009 ήταν σε τεράστια ζήτηση και μπορούσαν να καλύψουν ό, τι και αν χρειάζεται μια εταιρεία όπως η Goolge.

Θυμηθείτε όμως, ότι τότε εμφανίστηκε κάτι που έμελλε να αλλάξει την ροή των πραγμάτων για τους μηχανικούς…. ο κόσμος των προγραμματιστών είδε για πρώτη φορά το iPhone και το Android και τα πράγματα άλλαξαν άρδην.

Οι ανάγκες στο Cloud Computing και στο πως οι προγραμματιστές χειρίζονται, αλλά και καταναλώνουν πόρους άλλαξε, με αποτέλεσμα να γεννηθούν οι DevOps και παράλληλα τα έργα όπως το Docker, τα LXC και Kubernetes.

Ναι… αλλά γιατί όχι C++, Python ή Java ;

Οι 3 αυτές γλώσσες προγραμματισμού είναι ακόμα και σήμερα από τις πιο δημοφιλείς και περιζήτητες στην αγορά εργασίας. Παρόλο που αδιαμφισβήτητα θεωρούνται οι «ντε φάκτο» γλώσσες για πολλών ειδών έργα, σύμφωνα με τους δημιουργούς της Go, είναι γλώσσες όμως που φτιάχτηκαν σε μια διαφορετική εποχή – συνθήκες και φαίνεται δεν έλυναν κάποια προβλήματα που αντιμετώπιζε η Google όπως αναφέρθηκα πιο πάνω.

Η Go λοιπόν, έξυπνα «αντέγραψε» όλα τα θετικά αυτών των γλωσσών προγραμματισμού:

Θετικά και Αρνητικά χαρακτηριστικά των C++, Java και Pyhton

και πρόσθεσε κάποια «εξτραδάκια»:

  • Ταχύτητα εκτέλεσης και μεταγλώττισης
  • Built-in Concurrency για Multithreading
  • Απλότητα στην σύνταξη
  • Single Executable για εύκολη μεταφορά με απλή αντιγραφή-επικόλληση
  • Built-in εργαλεία για Testing και Profiling

Built-in Cross-platform Compiler

Μια άλλη επιπλέον σημαντική «κληρονομιά» που έχει τσιμπήσει η Go είναι η ιδιότητες στην δημιουργία εκτελέσιμου αρχείου από τον κώδικά μας.

Όταν μεταγλωττίζετε (compiling) τον κώδικά σας στη Go, το τελικό αποτέλεσμα είναι ένα στατικά συνδεδεμένο (statically linked) εκτελέσιμο (binary) που τρέχει εγγενώς (native) στην πλατφόρμα για την οποία το προορίζετε. Αυτό σημαίνει ότι σε αντίθεση με τις άλλες γλώσσες, με τη Go δεν χρειάζεται να εγκαταστήσετε π.χ. την Java (VM & Εξαρτήσεις), την Python, Ruby + Gems κλπ και απλά τρέχετε το πρόγραμμά σας.

Η Go υποστηρίζει seamless cross compilation για (Windows, OS X, Linux και BSD). Επομένως, δεν έχει σημασία σε ποια πλατφόρμα αναπτύσσετε και μεταγλωττίζετε τον κώδικα. Ακολουθεί ένα παράδειγμα της σύνταξης που χρησιμοποιούμε για να δημιουργήσουμε εκτελέσιμα αρχεία για Windows και Linux σε macOS περιβάλλον:

Για Windows 32bit μπορούμε να δημιουργήσουμε εκτελέσιμα όπως παρακάτω:

GOOS=windows GOARCH=386 go build -o appname.exe

Για Linux 64bit μπορούμε να δημιουργήσουμε εκτελέσιμα όπως παρακάτω:

GOOS=linux GOARCH=amd64 go build -o appname.linux

Που χρησιμοποιείται η Go ;

Η Go όπως είναι φυσικό, λόγο του περιβάλλοντος στο οποίο γεννήθηκε, αποτελεί γλώσσα προγραμματισμού για:

  • Web Services: Back-end υπηρεσίες στο Cloud
  • Microservices: Είτε αυτούσια είτε ως συνδετικοί κρίκοι για άλλες υπηρεσίες
  • Web Apps: Εφαρμογές που χειρίζονται πολλαπλές συναλλαγές – αιτήματα παράλληλα και ταυτόχρονα.

Τα τελευταία όμως χρόνια, η Go αρχίζει να χρησιμοποιείται από την κοινότητα του και στα παρακάτω :

  • System Task Automation: Λόγο της εύκολης και απλής σύνταξης του είναι εύκολη η συντηρησιμότητα του κώδικα
  • Machine Learning: Λόγο του multi-threading και concurrency που διαθέτει είναι ιδιαίτερα χρήσιμη για τεχνητή νοημοσύνη

Αυτά φυσικά είναι πεδία που η Python είναι ο βασιλιάς και η Go είναι ακόμα στην εφηβεία. Μπορείτε να ρίξετε μια ματιά στην παρακάτω λίστα με τα projects που έχουν υλοποιηθεί σε Go, ανά κατηγορία:

Advertisements

Πως κάνω εγκατάσταση το περιβάλλον προγραμματισμού σε Go

Η Go αποτελείται από πακέτα – packages τα οποία παρέχουν διάφορα εργαλεία για χρήση από το τερματικό ( άντε πάλι το τερματικό !!!…)

Αυτά τα εργαλεία μπορούν να χρησιμοποιηθούν ως έχουν, ή από έναν editor της αρεσκείας σας.

Πως κάνω εγκατάσταση τη Go

Το πρώτο πράγμα που χρειάζεται να κάνετε είναι να εγκαταστήσετε τη Go. Ο τρόπος αλλάζει ανάλογα με το λειτουργικό σας.

Για παράδειγμα οι χρήστες Linux μπορούν να έχουν τη Go εγκαθιστώντας (μέσω snapstore) την τελευταία σταθερή έκδοση κάνοντας αναζήτηση στο Κέντρο Λογισμικού της διανομής τους. π.χ. σε Ubuntu:

Εγκατάσταση Go σε Ubuntu

ή από το τερματικό για τις διανομές που έχετε ρυθμίσει το snapstore:

sudo snap install go --classic

Ενώ οι χρήστες Windows μπορούν να το εγκαταστήσουν από παρόμοιο κέντρο λογισμικού που λέγεται Chocolatey. Εναλλακτικά μπορείτε να πάτε στην σελίδα της Go και να κατεβάσετε τον εγκαταστάτη για το λειτουργικό σας (Windows, macOS, Linux, BSD):

Την χρονική περίοδο σύνταξης του οδηγού, η Go ήταν στην έκδοση 1.14.1

Σημείωση: Κατά την εγκατάσταση σε Windows είναι σημαντικό για αρχή να αποδεχτείτε τα default βήματα και κυρίως μην αλλάξετε το installation path το οποίο σας προτείνει το πρόγραμμα εγκατάστασης, το οποίο είναι η εγκατάσταση στον C:\ drive.

Αφού το εγκαταστήσετε, ανοίξτε ένα τερματικό στο λειτουργικό σας και δώστε :

go version

Αν όλα έχουν πάει καλά τότε θα δείτε κάτι σαν το παρακάτω:

Η go version μας επιστρέφει την έκδοση της Go
Η go version μας επιστρέφει την έκδοση της Go

Σε περίπτωση που δεν το δείτε, ίσως να χρειαστεί να κάνετε μια επανεκκίνηση. Για να δείτε τα built in εργαλεία της Go δώστε:

go

Μια χρήσιμη εντολή είναι όταν θέλουμε να δούμε όλες τις μεταβλητές που ορίζουν το περιβάλλον της Go

go env

Για περισσότερες πληροφορίες σχετικά με κάποια παράμετρο μπορείτε π.χ. να δώσετε :

go help doc

Η doc είναι ιδιαίτερα σημαντική διότι μπορεί να χρησιμοποιηθεί για την παραγωγή τεκμηρίωσης του προγράμματός μας. Συγκεκριμένα η doc εξάγει τα σχόλια μέσα από τον κώδικά μας και τα παρουσιάζει σε μορφή documentation. Για παράδειγμα αν θέλουμε να δούμε πως δουλεύει η μέθοδος json.Decoder.Decode δίνουμε

go doc json.Decoder

Γιαυτό τον λόγο είναι σημαντικό να παρέχουμε χρήσιμα σχόλια μέσα στον κώδικα μας.

Τέλος, αν δεν χρησιμοποιείτε κάποιο IDE/Code editor, μια χρήσιμη εντολή είναι :

go fmt ο-super-kodikas-mou.go

το οποίο θα εφαρμόσει το απαραίτητο styling στον κώδικα με βάση τα Style guides της Go.

Οργάνωση του κώδικα στη Go

Κάτι που πρέπει να διευκρινιστεί εξαρχής και μπορεί να μπερδέψει τους νέους χρήστες της Go, είναι το πως οργανώνονται ο κώδικας, τα πακέτα και τα εκτελέσιμα των προγραμμάτων μας.

Τα προγράμματα στη Go οργανώνονται σε πακέτα (packages). Ένα πακέτο είναι μια συλλογή αρχείων πηγαίου κώδικα σε έναν κοινό φάκελο. Οι συναρτήσεις, οι τύποι δεδομένων, οι μεταβλητές και οι σταθερές που ορίζονται σε ένα πηγαίο κώδικα είναι ορατές σε όλα τα άλλα αρχεία μέσα στο ίδιο πακέτο (φάκελο).

Επομένως, ένα module είναι μια συλλογή τέτοιων πακέτων που σχετίζονται μεταξύ τους και δημοσιεύονται (released) μαζί.

Τέλος, ένα αποθετήριο (repository) περιέχει ένα ή περισσότερα modules και μπορεί να είναι δημοσιευμένο (σε απομακρυσμένο repository) ή και όχι. Διαβάστε την επίσημη τεκμηρίωση για το Organizing your Code:

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

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

Linux / macOS:

Ανοίξτε το τερματικό σας και στο αρχείο .bashrc του home φακέλου σας προσθέστε το παρακάτω:

export GOPATH=$HOME/go

αν έχετε zsh κάντε το ίδιο στο .zshrc

Windows 10

Ανοίξτε το τερματικό σας (Win + r και γράψτε cmd) και δώστε την παρακάτω εντολή:

setx GOPATH %USERPROFILE%\go

Εγκατάσταση περιβάλλοντος ανάπτυξης Go

Αφού έχετε εγκαταστήσει τη Go το μόνο που μένει είναι να χρησιμοποιήσετε κάποιον επεξεργαστή κειμένου ή έναν code editor της αρεσκείας σας για να γράφετε κώδικα.

Η Go δεν διαθέτει κάποιο «επίσημο» IDE διότι πολύ απλά είναι λογισμικό για χρήση από τερματικό. Το πως θα αναπτύσσει κάποιος κώδικα είναι στην ελεύθερη επιλογή του καθενός και ευτυχώς η κοινότητα της Go και άλλοι έχουν αναπτύξει όλα τα απαραίτητα εργαλεία για να αναπτύσσουμε κώδικα στον editor της επιλογής μας. Ρίξτε μια ματιά στην παρακάτω λίστα:

Σε γενικές γραμμές όμως, θα παρατηρήσετε ότι οι περισσότεροι χρησιμοποιούν το Visual Studio Code.

Εγκατάσταση Visual Studio Code

Μπορείτε να το κάνετε εγκατάσταση από την σελίδα του:

Αν έχετε Ubuntu μπορείτε να το κάνετε εγκατάσταση από το Ubuntu Store

Εγκατάσταση VSCode από το Ubuntu Store
Εγκατάσταση VSCode από το Ubuntu Store

Μόλις το εγκαταστήσετε, ανοίξτε το και πάμε να εγκαταστήσουμε τα απαραίτητα extensions κάνοντας κλικ στο αντίστοιχο εικονίδιο. Έπειτα κάντε αναζήτηση για Go και πατήστε install.

Εγκατάσταση Go extension από την Microsoft
Εγκατάσταση Go extension από την Microsoft

Μόλις το κάνετε εγκατάσταση πατήστε τον συνδυασμό πλήκτρων CTRL+SHIFT+P ή κάντε κλικ στο μενού View –> Command Pallet και κάντε αναζήτηση γράφοντας Go: Install/Update Tools. Μόλις το βρείτε και κάνετε κλικ σε αυτό, θα σας εμφανίσει μια λίστα με εργαλεία στα οποία θα κάνετε κλικ στο πρώτο κουτάκι για να γίνουν όλα εγκατάσταση πατώντας το ΟΚ:

Εγκατάσταση εργαλείων Go
Εγκατάσταση εργαλείων Go

Μπορεί να πάρει λίγο χρόνο για να ολοκληρωθεί η διαδικασία, οπότε κάντε λίγο υπομονή. Μόλις τελειώσει η εγκατάσταση αυτών των εργαλείων είμαστε έτοιμοι !

Θυμηθείτε, πιο πάνω είχαμε μιλήσει για την οργάνωση κώδικα οπότε πάμε στον αρχικό μας κατάλογο (Home) και θα δούμε έναν φάκελο με όνομα go και μέσα σε αυτόν δύο φακέλους bin και pkg (υπάρχει και το src στην εικόνα αλλά θα μιλήσουμε σε λίγο για αυτό).

Δομή ριζικού καταλόγου των modules στην Go
Δομή ριζικού καταλόγου των modules στη Go

Οι φάκελοι αυτοί χρησιμεύουν ως :

  • bin: Εδώ «εμφανίζεται» το εκτελέσιμο αρχείο του κώδικα μας όταν τρέχουμε την εντολή go install
  • pkg: Ο φάκελος αυτός διατηρεί έξτρα modules (π.χ. τα εργαλεία του VSCode) που επεκτείνουν τις δυνατότητες του κώδικα μας. Αυτά κατεβαίνουν όταν κάνουμε import «github.com/username/somecode».
  • src: Εδώ δημιουργούμε φακέλους με το όνομα του package μέσα στο οποίο γράφουμε τα δικά μας προγράμματα ή δημιουργείται αυτόματα όταν τρέχουμε την εντολή go get github.com/username/somecode

Βασική δομή ενός Go project

Ας δούμε με ένα έτοιμο παράδειγμα μια δομή ενός project για να κατανοήσουμε καλύτερα την οργάνωση του κώδικα μας

Δομή των πακέτων Go

Ανοίξτε το τερματικό σας και δώστε την παρακάτω εντολή:

go get github.com/CerebruxCode/Go

Μετά από λίγο θα δείτε ότι ο φάκελος src δημιουργήθηκε αυτόματα και έχει τους παρακάτω υπό φακέλους:

github.com
    ├── CerebruxCode
          ├── Go
              ├── go.mod
              ├── main.go
              |
              |...

Αυτή είναι η δομή με την οποία οργανώνουμε τον πηγαίο κώδικά μας. Προσωρινά αγνοείστε όλους τους άλλους φακέλους με τα μαθήματα και κρατήστε στο μυαλό σας ότι το project αυτό αποτελείται από το όνομα του πακέτου – φακέλου (εδώ Go), το αρχείο go.mod και τον κώδικα του προγράμματος (εδώ main.go).

Η εντολή που δώσαμε, πήρε λοιπόν την δομή των φακέλων του αποθετηρίου και την «έφερε» αυτούσια στο σημείο που πρέπει να είναι, ήτοι στην src/github.com/CerebruxCode/Go.

Επομένως ένα αποθετήριο του κώδικά μας περιλαμβάνει συνήθως μόνο ένα module (π.χ. το main.go), το οποίο βρίσκεται στη ρίζα του αποθετηρίου. Επίσης περιλαμβάνει και το αρχείο με όνομα go.mod που δηλώνει τη διαδρομή του module και χρησιμοποιείται ως πρόθεμα διαδρομής import για όλα τα εξωτερικά πακέτα μέσα στο module μας.

Πως δημιουργείται αυτό το αρχείο go.mod;

Ας το δούμε με ένα υποθετικό παράδειγμα. Έστω λοιπόν ότι θέλουμε να ξεκινήσουμε ένα νέο project με το όνομα hello το οποίο θα είναι και το όνομα του παραγόμενου εκτελέσιμου αρχείου!. Η διαδικασία περιλαμβάνει τα παρακάτω βήματα:

  1. Αποφασίζουμε το module path που θέλουμε για το project μας: πχ. example.com/user/hello και τον δημιουργούμε
  2. Μπαίνουμε μέσα στον φάκελο και τον αρχικοποιούμε:
cd ~/go/src
mkdir -p example.com/user/hello 
cd example.com/user/hello
touch main.go
git init -q
go mod init example.com/user/hello

Η εντολή mkdir -p θα δημιουργήσει και τους υποκείμενους φακέλους. Έτσι, τώρα μπορούμε να ξεκινήσουμε το υποθετικό hello project μας στον φάκελο src/example.com/user/hello. Όταν τελειώσουμε τον «υποθετικό» κώδικα θα μπορούμε να κάνουμε build/install (θα τα δούμε ποιο κάτω) το project μας χωρίς καν να ήμαστε στην διαδρομή του project αφού η Go θα ψάξει με βάση το module path και θα «χτίσει» το εκτελέσιμο αρχείο και θα το μεταφέρει στον bin φάκελο που αναφέραμε πιο πάνω.

Φυσικά δεν χρειάζεται να δημοσιεύσετε τον κώδικα σας σε κάποιο github/gitlab ή απομακρυσμένο χώρο αποθήκευσης. Ένα module (o κώδικάς σας) μπορεί να οριστεί η διαδρομή του τοπικά χωρίς να ανήκει σε ένα αποθετήριο. Ωστόσο, είναι μια καλή συνήθεια να οργανώσετε τον κώδικα σας με το σκεπτικό ότι θα το δημοσιεύσετε κάποια στιγμή.

Δομή του κώδικα σε Go

Αρκετά με την θεωρία… Όσοι αντέξατε μέχρι εδώ είστε ήρωες !. Πάμε όμως να δούμε πως θα είναι αυτό το «υποθετικό» σούπερ πρότζεκτ μας.

Έχοντας ανοιχτό τον VSCode, ανοίγουμε τον φάκελο που κατέβηκε με την εντολή go get για να δούμε το πρώτο πρόγραμμα μας σε Go το οποίο είναι ένα κλασσικό hello world:

Θυμίζω το αρχείο είναι στην διαδρομή go/src/github.com/CerebruxCode/Go/main.go

package main

import (
	"fmt"
)

func main() {
	fmt.Println("Γειά σου από Go")
}

Η παραπάνω δομή αποτελείται απο 3 τμήματα:

  • Package declaration: Όλα τα αρχεία κώδικα ενός προγράμματος στη Go πρέπει να έχουν δήλωση για το σε πιο πακέτο ανήκουν. Στο παράδειγμά μας βλέπουμε την main.
  • Import Block: Με την import εισάγουμε κώδικα από άλλα πακέτα ώστε να τα χρησιμοποιήσουμε της μεθόδους του στο πρόγραμμα μας. Αυτά μπορεί να είναι από την standard library ή από τρίτους και δηλώνονται με το «module path» που αναφέραμε πιο πάνω
  • Main function: Αποτελεί την βασική συνάρτηση που εκτελεί το πρόγραμμά μας.

Για να το εκτελέσουμε, είτε τρέχουμε στο τερματικό go run main.go είτε από το VSCode --> Run --> Run Without Debugging το οποίο θα ανοίξει ένα DEBUG CONSOLE στο κάτω τμήμα του VSCode και θα το προβάλει:

Γεια σου από Go

Για να φτιάξουμε εκτελέσιμο από το πρόγραμμά μας, στο τερματικό δίνουμε:

go install github.com/CerebruxCode/Go

Με την παραπάνω εντολή, η Go θα ψάξει το go.mod με βάση την παράμετρο που δώσαμε, θα μεταγλωττίσει την main.go και θα φτιάξει ένα εκτελέσιμο με όνομα Go στον φάκελο go/bin.

Τέλος, είναι σημαντικό να αναφέρουμε ότι με το καιρό, όταν αρχίσετε να χρησιμοποιείτε εξωτερικές βιβλιοθήκες μέσα στον κώδικά σας, θα χρειάζεται να τρέχετε και την go mod tidy για να τα προσθέσει στο αρχείο go.mod

Advertisements

Μαθήματα προγραμματισμού σε Go

Στον φάκελο που κατέβηκε με το go get θα βρείτε φακέλους τα οποία περιλαμβάνουν κώδικα γραμμένο σε Go που προέρχονται από εδώ :

Προσπαθήσαμε να δημιουργήσουμε τα μαθήματα με διαφορετικό concept. Κάθε μάθημα είναι μέσα στον κώδικα του κάθε φακέλου, οπότε ανοίγετε τον κώδικα στο VSCode, διαβάζετε, το τρέχετε και πειραματίζεστε απευθείας από τον πηγαίο κώδικα.

Το παραπάνω αποθετήριο, αν δούμε ότι υπάρχει ενδιαφέρον, θα εμπλουτίζεται όσο μαθαίνετε και εσείς αλλά και εμείς σχετικά με τη Go και επομένως κάθε feedback και pull request στο repository, δεν είναι απλά ευπρόσδεκτο, είναι αναγκαίο !

Αφού ολοκληρώσετε τα μαθήματα, θα έχετε αποκτήσει μια βασική γνώση προγραμματισμού σε Go για να μπορέσετε να προχωρήσετε σε πιο Intermediate και Advanced θέματα και να μπορείτε να την χρησιμοποιήσετε σε πρακτικό επίπεδο. Σας προτείνω επίσης να ολοκληρώσετε και το επίσημο Golang Tour:

Επίλογος

Φυσικά η Go δεν είναι πανάκεια και χωρίς τα αρνητικά του. Για κάποιους που δεν μπορούν χωρίς Object Oriented προγραμματισμό προφανώς η Go θα τους δυσκολέψει. Επίσης η «εμμονή» του στο code style και τα error που θα πετάει για «declared variable, but not used» ίσως σπάσει τα νεύρα σας.

Παρόλα αυτά, μια από τις πιο σημαντικές πτυχές της Go είναι το πόσο γρήγορα την μαθαίνει κάποιος. Ειδικά οι έμπειροι προγραμματιστές θα «πιάσουν» το νόημα εντός ωρών.

Επίσης, μετά την Python, η Go είναι και αυτή μια γλώσσα προγραμματισμού για αρχάριους. Δεν πρέπει να εκπλαγείτε εάν μάθετε ότι όλα τα χαρακτηριστικά της Go είναι περίπου 50 σελίδες spec. Προφανώς, αφού μάθετε αυτά τα βασικά χαρακτηριστικά, πρέπει να μάθετε για τις καλύτερες πρακτικές προγραμματισμού με τη Go για συγκεκριμένες ανάγκες και φυσικά την standard library.

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

Είναι λογικό λοιπόν, να βρείτε αμέτρητα άρθρα για τα υπέρ και τα κατά, τα θετικά και τα αρνητικά της Go και το παρόν άρθρο σε καμία περίπτωση δεν έχει σκοπό να σας αφήσει με την εντύπωση ότι με τη Go σωθήκαμε όλοι !

https://github.com/golang/go/wiki/WhyGo

Το να συζητά κανείς σχετικά με το ποια γλώσσα είναι καλύτερη δεν έχει καμία σημασία. Αν και στις περισσότερες περιπτώσεις φαίνεται ότι η Golang να έχει το πάνω χέρι μιας και έχει όλα τα θετικά από τις γλώσσες προγραμματισμού που αναφέραμε πιο πάνω. Επί του παρόντος, μπορεί να μην έχει τα φώτα πάνω της όπως η Python, σίγουρα όμως θα φτάσει εκεί κάποια μέρα. Για την ιστορία, χρειάστηκαν είκοσι χρόνια για να φτάσει η Python εκεί που είναι σήμερα. Η Python παρέμεινε απαρατήρητη στα πρώτα δέκα χρόνια και μόνο από το 2001 και έπειτα άρχισε να προσελκύει κόσμο, αργά και σταθερά. Ως εκ τούτου, η Go σίγουρα θα καλύψει τη διαφορά. Ίσως, για να συγκεντρώσει την προσοχή αρκετών το τελευταίο διάστημα, κάνει ήδη μια φανταστική δουλειά πλησιάζοντας αργά και σταθερά τις πιο δημοφιλείς γλώσσες προγραμματισμού.

Παραπομπές: