
Ξεκίνησα να προγραμματίζω σε γλώσσα PHP το 2010. Τότε η PHP έκδοση 5.x αποτελούσε ιδανική λύση για μικρά και μεσαία web projects. Σήμερα η έκδοση 7/8.x έχει αναβαθμιστεί σημαντικά προσφέροντας πλήρη υποστήριξη σε αντικειμενοστραφή προγραμματισμό (OOP), ισχυρά frameworks όπως το Laravel και ένα τεράστιο community υποστήριξης σε παγκόσμιο επίπεδο. Η ταχύτητα εκτέλεσης και η υψηλή κατανάλωση πόρων που για χρόνια αποτελούσε το αδύναμο σημείο της PHP έχει επίσης βελτιωθεί σε εντυπωσιακό βαθμό.
Μου αρέσει να προγραμματίζω σε PHP ακόμα και σήμερα, όχι όμως την PHP των εκδόσεων 5.x και πίσω η οποία βασίστηκε στην λογική των scripts και του “χύμα” κώδικα. Το website μου αναπτύχθηκε σε PHP 8, Laravel 8.x.
Τον τελευταίο 1.5 χρόνο ξεκίνησα να ασχολούμαι με την Go, μια σύγχρονη και ισχυρή γλώσσα της Google η οποία αναπτύχθηκε με στόχο να καλύψει τις ανάγκες της cloud εποχής. Η Go ή GoLang ειναι μια γλώσσα απλή σε σύνταξη, κάνει compile τον κώδικα ενώ οι εφαρμογές που κατασκευάζεις τρέχουν σε υψηλές ταχύτητες καταναλώνοντας παράλληλα ελάχιστους πόρους συστήματος.
Παρακάτω θα περιγράψω κάποια επιπλέον ελκυστικά χαρακτηριστικά της γλώσσας σε σχέση με την PHP.
- Built-in dependency manager: Δεν χρειαζόμαστε επιπλέον εγκαταστάσεις προγραμμάτων. Η Go διαθέτει built-in DM.
- Built-in web server: Δεν χρειαζόμαστε (απαραίτητα) web servers όπως ο Apache ή ο nginx ούτε γνώσεις για να κάνουν manage και σχετικό configuration. Η Go διαθέτει built-in web server.
- Built-in template engines: Δεν χρειαζόμαστε να εγκαταστήσουμε ξεχωριστές βιβλιοθήκες για να μπορέσουμε να έχουμε (html) template engines όπως είναι η twig ή η blade. Η Go διαθέτει built-in template engine.
- Built-in testing package: Δεν χρειαζόμαστε να εγκαταστήσουμε ξεχωριστές βιβλιοθήκες για να κάνουμε testing τον κώδικα μας όπως ειναι το PHPUnit. Η Go διαθέτει built-in testing package.
- Memory Caching: Στην Go έχουμε την δυνατότητα να κρατήσουμε τιμές στην μνήμη ακόμα και με το πέρας ενός request χωρίς την δυνατότητα να αποθηκεύσουμε τις τιμές σε αρχείο, σε βάση δεδομένων ή στο redis. Αυτό το χαρακτηριστικό στην PHP δεν μπορεί να υπάρξει τουλάχιστον στην βασική της εγκατάσταση.
- Package installation: Πολλές φορές στην PHP για να εγκαταστήσουμε ένα πακέτο όπως για παράδειγμα αυτό της mongoDB, είναι απαραίτητο αφενός να εγκαταστήσουμε το πακέτο μέσα από τον composer, αφετέρου να κατεβάσουμε, εγκαταστήσουμε - παραμετροποιήσουμε και την αντίστοιχη βιβλιοθήκη κάτι που οδηγεί συχνά σε ένα περιττό complexity. Στην Go η παραπάνω διαδικασία είναι εξαιρετικά πιο απλή.
- Ταχύτητα και κατανάλωση πόρων : Όπως είπαμε και παραπάνω η Go κάνει άριστη χρήση του hardware προσφέροντας όμως εντυπωσιακές ταχύτητες. Αυτό φυσικά μπορεί να ανιχνευθεί και εκτιμηθεί σε μεσαίου+ μεγέθους project.
- Dockerfile : Εξαιτίας των παραπάνω ένα Dockerfile στην Go μπορεί να σεταριστεί πιο εύκολα απαιτώντας λιγότερες γραμμές κώδικα.
- Coding standards: Στην Go υπάρχουν βασικά coding standards τα οποία είναι απαραίτητο να εφαρμόσεις διαφορετικά ο κώδικας δεν θα κάνει compile. Αυτό είναι απαραίτητο και σημαντικό καθώς σε μεγάλες εφαρμογές με πολλούς προγραμματιστές ολοι εφαρμόζουν παρόμοιο τρόπο γραφής.
- Microservices : Η Go σχεδιάστηκε όπως είπαμε για τις ανάγκες του σήμερα και αποτελεί ιδανική λύση για την ανάπτυξη microservices, εξαιτίας όλων όσων περιγράψαμε παραπάνω.
Η go λοιπόν, ειναι μια γλώσσα που με έχει γοητεύσει και σκοπεύω να επενδύσω χρόνο και projects πάνω της. Εσείς;