Είναι το JavaScript η καλύτερη γλώσσα για τους νέους κωδικοποιητές;

Παρά τις πολλές αδυναμίες της, το JavaScript ίσως είναι η καλύτερη γλώσσα για παιδιά και νέους μαθητές

Το έτος ήταν το 2007. O'Reilly Media, ένας κορυφαίος τεχνικός εκδότης, με είχε πλησιάσει με μια ιδέα. Θα ήθελα να γράψω ένα βιβλίο που να εισάγει JavaScript για να ολοκληρώσει τους αρχάριους;

Η απάντησή μου ήταν άμεση: Γιατί;

Δεν ήταν ότι το JavaScript ήταν άχρηστο. Αλλά το JavaScript ήταν μόνο ένα συστατικό σε μια προσεκτική διάταξη των τεχνολογιών που απαιτούνται για την οικοδόμηση ενός δικτυακού τόπου - και ήταν μακράν το λιγότερο σημαντικό. Ναι, ένα πασπαλίζωμα της σκόνης Pixie JavaScript θα μπορούσε να επικυρώσει μεγάλες φόρμες ή να κάνει ένα κουμπί λάμψη όταν κάποιος κρατούσε πάνω από αυτό. Αλλά το JavaScript ήταν προαιρετικό - βγάλτε το από μια σελίδα και όλα συνεχίζουν να εργάζονται με τον ίδιο τρόπο.

Το JavaScript έφερε επίσης μερικές σοβαρές αποσκευές. Ήταν δεμένη με τα προβλήματα συμβατότητας του προγράμματος περιήγησης, αργή, ανασφαλής και σαφώς αναξιόπιστη. Δεν είχα κανένα ενδιαφέρον να διδάξω κάποιον πώς να δημιουργήσει ένα άχρηστο γραφικό στοιχείο web που λειτουργεί με JavaScript. Αυτή η ιδέα έμοιαζε τόσο άσκοπη όσο οι κινούμενες gifs των περιστρεφόμενων σφαιρών που ήταν όλοι η οργή στις πρώτες ημέρες του Διαδικτύου.

Ο πιο προφανής τρόπος για να χρησιμοποιήσετε το JavaScript, ή έτσι σκεπτόμουν αφελώς την εποχή εκείνη, ήταν να αφήσετε το μεγάλο πλαίσιο διακομιστή σας¹ να αποδώσει ό, τι απαιτείται JavaScript απευθείας στη σελίδα. Ναι, αυτό το JavaScript μπορεί να είναι λίγο φουσκωμένο, αλλά ήταν προσαρμοσμένο ώστε να ταιριάζει στο πρόγραμμα περιήγησης στο άλλο άκρο και τίποτα δεν έσπασε ποτέ - ακόμα κι αν ο επισκέπτης απενεργοποίησε το JavaScript εντελώς.

Περιττό να πω ότι δεν έγραψα το βιβλίο. Συνέχισα την κωδικοποίηση στον web server και τη γραφή για τις αγαπημένες μου τεχνολογίες (συνήθως C # και .NET Framework). Χρόνια πέρασαν.

Τότε συνέβη κάτι περίεργο.

Το JavaScript ανέλαβε.

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

Η απίστευτη εμβέλεια της JavaScript

Το ένα ασύγκριτο πλεονέκτημα που έχει η JavaScript είναι η εμβέλειά της.

Το JavaScript είναι παντού - υποστηρίζεται σε κάθε λειτουργικό σύστημα, σε κάθε εμπορικό σήμα, σε επιτραπέζιους υπολογιστές και κινητές συσκευές. Εξίσου σημαντικό είναι το γεγονός ότι η JavaScript δεν απαιτεί ανάπτυξη. Στην πραγματικότητα, είναι ήδη δύσκολο να θυμηθούμε το όχι τόσο απομακρυσμένο παρελθόν, όταν οι εταιρείες θα αναπτύσσουν εφαρμογές πελάτη-διακομιστή2 στα εσωτερικά δίκτυά τους, περνώντας εβδομάδες μάχης με θέματα εγκατάστασης και απροσδόκητα σφάλματα. Αντιμέτωποι με αυτούς τους εφιάλτες, μπορείτε να δείτε την έφεση του JavaScript.

Χάρη στην εμβέλειά της, το JavaScript δεν χρειάστηκε να γίνει η καλύτερη γλώσσα προγραμματισμού. Χρειάστηκε να γίνει αρκετά καλός.

Μια παρόμοια δυναμική είναι στην δουλειά όταν πρόκειται να μάθουμε να κωδικοποιούμε. Στην αρχή, το ζήτημα της προσέγγισης δεν φαίνεται να είναι τόσο σημαντικό για ένα άτομο που έχει μόνο στόχο να μάθει καλές πρακτικές προγραμματισμού. Αλλά πολλά από τα ίδια ζητήματα έρχονται στο προσκήνιο με τη μάθηση για το πρόγραμμα, όπως στην επαγγελματική ανάπτυξη. Εάν θέλετε η εργασία σας να έχει παγκόσμια εμβέλεια, η JavaScript είναι ο μόνος υποψήφιος.

Για παράδειγμα, ας πούμε ότι έχετε δημιουργήσει μια καταπληκτική εφαρμογή πρόβλεψης για προσωπικότητα-πρόβλεψη-κουίζ. Η δημιουργία ενός περιβάλλοντος ανάπτυξης είναι σχετικά εύκολη. Αλλά τι συμβαίνει όταν θέλετε να στείλετε το πρόγραμμά σας σε έναν φίλο; Πρέπει να εγκαταστήσουν ένα runtime ή να δημιουργήσουν το ίδιο περιβάλλον ανάπτυξης; Επιβάλλει ο υπολογιστής τους τις ρυθμίσεις ασφαλείας τους, πριν να τους επιτρέψει να κατεβάσουν και να εγκαταστήσουν το πρόγραμμά σας; Ίσως ο φίλος σας χρησιμοποιεί ένα λειτουργικό σύστημα που δεν υποστηρίζει το πρόγραμμά σας - ή μια κινητή πλατφόρμα που επιτρέπει μόνο επαγγελματικές εφαρμογές που διανέμονται στο iTunes ή στο Google Play store. Με το JavaScript και μια βασική ιστοσελίδα (το GitHub θα σας δώσει ένα μικρό κομμάτι χώρου δωρεάν), αυτά τα θέματα εξαφανίζονται.

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

Τώρα για τα προβλήματα ...

Αλλά τι γίνεται με τα προβλήματα; Το JavaScript έχει μερικά σοβαρά μειονεκτήματα και οι ιδιαιτερότητες του, οι ασυνέπειες και οι περιορισμοί μπορεί να είναι ιδιαίτερα οδυνηρές για κάποιον που μαθαίνει να προγραμματίζει για πρώτη φορά. Ευτυχώς, υπάρχουν σύγχρονες λύσεις που μπορούν να αποτρέψουν το μεγαλύτερο μέρος του πόνου.

Ας δούμε τις τέσσερις πιο συχνές καταγγελίες.

1. Η JavaScript δεν είναι ασφαλής

Μια βασική ιδέα που οι νέοι προγραμματιστές μαθαίνουν νωρίς είναι η ιδέα των μεταβλητών, των εμπορευματοκιβωτίων που αποθηκεύουν πληροφορίες κατά τη διάρκεια ενός προγράμματος. Το πρόβλημα με το JavaScript είναι ότι είναι χαλαρό και παραπλανητικό με τις μεταβλητές. Δεχτεί πράγματα που δεν φαίνονται σωστά και αγνοεί προφανή προβλήματα. Η τεμπελιά του μπορεί να μετατρέψει τα μικρά λάθη σε καταστροφές που καταστρέφουν τον κώδικα.

Ακολουθεί ένα παράδειγμα κώδικα που είναι καταδικασμένο να αποτύχει:

var myNumber = 100;
myNumber = myNumbr + 1;

Πήρατε το λάθος; Η δεύτερη γραμμή χρησιμοποιεί στην πραγματικότητα δύο μεταβλητές: τη μεταβλητή myNumber που καθορίστηκε στην πρώτη γραμμή και μια φανταστική μεταβλητή myNumbr. Γνωρίζουμε ότι η δεύτερη μεταβλητή είναι το αποτέλεσμα ενός τυπογραφικού λάθους, αλλά το JavaScript διορθώνει με επιτυχία το πρόβλημα δημιουργώντας μια νέα μεταβλητή myNumbr, η οποία προκαλεί σιωπηλή αποτυχία στον υπολογισμό. Το ίδιο ζήτημα συμβαίνει εάν χρησιμοποιείτε ένα όνομα μεταβλητής με ασυνεπή κεφαλαία (όπως το MyNumber αντί για το myNumber). Ένα παρόμοιο πρόβλημα εμφανίζεται αν νομίζετε ότι μια μεταβλητή κρατά έναν αριθμό όταν έχει πραγματικά ένα κομμάτι κειμένου και ούτω καθεξής. Κάθε προγραμματιστής JavaScript έχει μια ιστορία φρίκης όπως αυτή.

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

Ένας από τους αγαπημένους μου συντάκτες κώδικα - τόσο για εκμάθηση όσο και για επαγγελματική χρήση - είναι ο Visual Studio Code. Είναι δωρεάν, ελαφρύ, ανοικτού κώδικα και ατελείωτα εκτάσιμο. Ένα από τα καλύτερα χαρακτηριστικά του είναι η ικανότητά του να ελέγχει λάθος κώδικα JavaScript για κοινά προβλήματα. Μπορείτε να ενεργοποιήσετε τον έλεγχο σφαλμάτων προσθέτοντας ένα αρχείο ρυθμίσεων ή τοποθετώντας αυτό το σχόλιο στην κορυφή ενός αρχείου JavaScript:

// @ ts-check

Ακολουθεί ένα παράδειγμα που έχει δύο λάθη, κανένα από τα οποία δεν είναι ένα πρόβλημα στα μάτια της JavaScript:

Πιστωτική κάρτα: Matthew MacDonald ©

Εάν χρησιμοποιείτε το σχόλιο ts-check, το Visual Studio υπογραμμίζει με προσοχή αυτά τα πιθανά λάθη:

Τοποθετήστε το δείκτη του ποντικιού πάνω από μία από αυτές τις υπογραμμισμένες περιοχές με το ποντίκι και το Visual Studio παρουσιάζει μια εξήγηση του προβλήματος:

Το καφεδάκι; Παρόλο που η JavaScript αντέχει πολλές κακές πρακτικές προγραμματισμού, αν συνδυάσετε το JavaScript με ένα καλό πρόγραμμα επεξεργασίας κώδικα, μπορείτε να αποκτήσετε μια εμπειρία παρόμοια με άλλες σύγχρονες γλώσσες προγραμματισμού. Και δεν έχετε εγκαταλείψει την εμβέλεια της JavaScript.

2. Η JavaScript δεν κάνει OOP

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

Το JavaScript είναι εμφανώς έλλειψη υποστήριξης για αντικειμενοστραφή προγραμματισμό. Στην πραγματικότητα, οι προγραμματιστές της JavaScript συνήθως παραπλανούν με αμήχανες τεχνικές και περίεργες λύσεις. Αυτές οι τεχνικές μπορεί να έχουν νόημα σε κάποιον που έχει ήδη μάθει να προγραμματίζει (και αν δεν το κάνουν, μπορείτε απλά να αντιγράψετε το μοτίβο στα δικά σας έργα και να μάθετε να ζείτε μαζί του). Αλλά αν είστε εντελώς νέοι στην κωδικοποίηση, χρησιμοποιώντας ένα kludge για μια βασική ιδέα προγραμματισμού είναι μια προφανής αποτυχία.

Ευτυχώς, υπάρχουν καλύτερες, πιο κομψές λύσεις που είναι σωστά ενσωματωμένες στη γλώσσα JavaScript. Το αγαπημένο μου είναι το TypeScript, ένα έργο ανοιχτού κώδικα που ξεκίνησε από τη Microsoft το 2012. Το TypeScript λειτουργεί ως ένα είδος καθαρισμένης έκδοσης της JavaScript που προσθέτει προγραμματισμό αντικειμένων (μαζί με άλλες χρήσιμες βελτιώσεις, όπως τον αυστηρό έλεγχο τύπου).

Κάποιοι μπορεί να αντιτάξουν ότι το TypeScript δεν είναι ακριβώς JavaScript - και αυτό είναι αλήθεια. Αλλά εδώ είναι το μαγικό κομμάτι. Μπορείτε να γράψετε τον κώδικα σας στο TypeScript και, στη συνέχεια, να το μετατρέψετε σε JavaScript προτού το χρησιμοποιήσετε σε μια ιστοσελίδα. Αυτό σας προσφέρει το καλύτερο και των δύο κόσμων: μια σύγχρονη γλώσσα προγραμματισμού για τη σύνταξη του κώδικα και την ίδια καθολική υποστήριξη για τη λειτουργία του κώδικα σας ως συνήθους JavaScript.

Το καλύτερο από όλα, όλη αυτή η διαδικασία γίνεται αυτόματα εάν χρησιμοποιείτε ένα εργαλείο όπως ο κώδικας του Visual Studio. Ναι, ο δημιουργούμενος κώδικας JavaScript θα εξακολουθεί να χρησιμοποιεί περίεργους τρόπους αντιμετώπισης. Αλλά τι; Ο προγραμματιστής παίρνει για να μάθει τις έννοιες OOP, ο τελικός κώδικας λειτουργεί χωρίς hiccup, και οι σύγχρονοι υπολογιστές χειρίζονται όλο το χάος με ευκολία.

Μη με πιστέψεις; Ορισμένες από τις πιο καινοτόμες επιτραπέζιες εφαρμογές του σήμερα χρησιμοποιούν ένα συνδυασμό TypeScript και Electron, ενός πλαισίου που επιτρέπει στο JavaScript να εκτελείται εκτός ενός προγράμματος περιήγησης. Ένα από τα πιο εντυπωσιακά παραδείγματα είναι ο Visual Studio Code. Αυτό είναι σωστό - το ίδιο λεπτό εργαλείο που χρησιμοποιείτε για να γράψετε κώδικα JavaScript γράφτηκε επίσης με κώδικα JavaScript. Συγκεκριμένα, γράφτηκε χρησιμοποιώντας τη σύγχρονη γεύση TypeScript της γλώσσας JavaScript.

Φυσικά, δεν χρειάζεται να χρησιμοποιήσετε το TypeScript και οι νέοι προγραμματιστές JavaScript μπορούν να κάνουν πολλά πράγματα χωρίς να μάθουν τις αρχές OOP, αν το επιλέξουν. Είναι πραγματικά θέμα επιλογής. Είτε έτσι είτε αλλιώς, η ελπίδα είναι στον ορίζοντα: η JavaScript εξακολουθεί να βελτιώνεται και οι νεώτερες εκδόσεις προσθέτουν αργά ορισμένες βελτιώσεις από το TypeScript.

3. Ο κόσμος είναι γεμάτος από κακό κώδικα JavaScript

Έχετε ακούσει ποτέ τη Visual Basic;

4. Το JavaScript χρειάζεται πρόσθετες βιβλιοθήκες και πλαίσια

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

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

Όσο κακή είναι αυτές οι κεφαλαλγίες, δεν επηρεάζουν πραγματικά τους νέους κωδικοποιητές. Αν κάποιος μαθαίνει να κωδικοποιεί με το JavaScript, η καλύτερη προσέγγιση είναι να μείνουμε μακριά από τα πλαίσια και τις βιβλιοθήκες, είτε μιλάμε για jQuery, γωνιακό, React, Vue, είτε κάτι που εφευρέθηκε μεταξύ της στιγμής που έγραψα αυτήν την πρόταση και της στιγμής hit δημοσίευση. Τελικά, αφού ένας νέος κωδικοποιητής έχει μια σωστή εντολή των θεμελιωδών προγραμματισμών, πιθανότατα θα ήθελε να διερευνήσει τουλάχιστον ένα από αυτά τα πλαίσια. Αλλά αυτό είναι ένα θέμα για μια άλλη μέρα.

Έχετε τις δικές σας απόψεις για την καλύτερη πρώτη γλώσσα για τη διδασκαλία των παιδιών στο πρόγραμμα; Δεν υπάρχει σωστή απάντηση (και έχω τα αγαπημένα μου). Αισθανθείτε ελεύθεροι να αφήσετε εξαιρετικά απαντημένες απαντήσεις στην παρακάτω ενότητα σχολίων! Και αν θέλετε να πάρετε δωρεάν αντίγραφο αναθεώρησης των νέων βιβλίων κωδικοποίησης για τα παιδιά, εγγραφείτε στο ενημερωτικό δελτίο ProseTech.

¹ Ο κώδικας από την πλευρά του διακομιστή είναι ο κώδικας που εκτελείται σε έναν διακομιστή ιστού, μακριά από τον υπολογιστή σας. Ο κωδικός πελάτη είναι ο κώδικας που εκτελείται σωστά στο πρόγραμμα περιήγησης. Για παράδειγμα, η αναζήτηση ενός προϊόντος στο Amazon και του κώδικα από την πλευρά του server scours βάσεις δεδομένων Amazon, παράγει το HTML με μια λίστα με πιθανές αντιστοιχίσεις, και το στέλνει στο πρόγραμμα περιήγησής σας.

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