Μια πρόσφατη πρόταση από μηχανικό της Google αναστάτωσε την κοινότητα της JavaScript, προτείνοντας τη διάσπασή της σε δύο ξεχωριστές γλώσσες. Σύμφωνα με την πρόταση αυτή, η γλώσσα JavaScript θα πρέπει να διαχωριστεί σε έναν «πυρήνα» (JS0) που θα εκτελείται απευθείας από τις μηχανές χρόνου εκτέλεσης και μια πιο προηγμένη έκδοση (JSSugar), που θα εξαρτάται από εργαλεία που τη μεταγλωττίζουν σε αυτόν τον βασικό πυρήνα.
Αυτή η πρόταση παρουσιάστηκε στην TC39, την επιτροπή της Ecma International που ασχολείται με την ανάπτυξη της προδιαγραφής της JavaScript. Ο Shu-yu Guo, ανώτερος μηχανικός λογισμικού στην Google, εξειδικευμένος σε JITs (Just-in-Time Compilers), VM (Virtual Machines) και προτυποποίηση, μαζί με άλλους ειδικούς από Mozilla, Apple και Moddable, ανέπτυξαν μια επιχειρηματολογία ότι οι νέες δυνατότητες στη JavaScript συχνά επιδεινώνουν ζητήματα ασφάλειας και απόδοσης αντί να τα βελτιώνουν.
Τα μειονεκτήματα των νέων χαρακτηριστικών της JavaScript
Οι υποστηρικτές της πρότασης ισχυρίζονται ότι οι συνεχείς προσθήκες στη γλώσσα προκαλούν περισσότερο κακό παρά καλό στους χρήστες. Αν και τα νέα χαρακτηριστικά μπορεί να διευκολύνουν ορισμένους προγραμματιστές, ενισχύοντας την αποτελεσματικότητα του κώδικα, ο αντίκτυπος στην ασφάλεια, την απόδοση και τη σταθερότητα είναι συχνά αρνητικός. Ένα παράδειγμα είναι το BigInt, ένα χαρακτηριστικό για μεγάλες αριθμητικές τιμές, το οποίο δεν έχει σημειώσει τη χρήση που αναμενόταν.
Οι ερευνητές υποστηρίζουν ότι η πολυπλοκότητα της JavaScript αυξάνει τις πιθανότητες για σφάλματα ασφάλειας και μειώνει τη σταθερότητα των εφαρμογών. Αυτά τα ζητήματα έχουν σημαντικές συνέπειες, καθώς η JavaScript είναι διαδεδομένη παγκοσμίως και η βελτίωση των πυρήνων της είναι αναγκαία για την ασφάλεια δισεκατομμυρίων χρηστών. Από την άλλη πλευρά, μόνο ένα μικρό ποσοστό εφαρμογών χρειάζεται αυτή την επιπλέον πολυπλοκότητα που προσφέρουν οι νέες δυνατότητες της γλώσσας.
Η πρόταση για JS0 και JSSugar
Η πρόταση της Google δεν προτείνει την αφαίρεση υπαρχόντων χαρακτηριστικών, αλλά προσανατολίζεται στο να διαχωρίσει τα νέα χαρακτηριστικά σε δύο επίπεδα. Το πρώτο επίπεδο, JS0, θα είναι η γλώσσα που υποστηρίζουν οι μηχανές χρόνου εκτέλεσης (runtime engines). Το δεύτερο επίπεδο, JSSugar, θα προσφέρει νέα χαρακτηριστικά και πιο περίπλοκες δυνατότητες, τα οποία όμως θα βασίζονται σε εργαλεία μεταγλώττισης (compilers) για να μετατραπούν σε JS0 και να εκτελεστούν.
Αυτή η προσέγγιση εκμεταλλεύεται το γεγονός ότι πολλοί προγραμματιστές ήδη χρησιμοποιούν εργαλεία όπως το TypeScript, το Babel και το Webpack, τα οποία μεταγλωττίζουν σε JavaScript, πριν ο κώδικας εκτελεστεί από τη μηχανή του περιηγητή. Με αυτή την αλλαγή, η JavaScript που γράφουν οι προγραμματιστές (JSSugar) θα μετατρέπεται σε JS0, προσφέροντας μια απλοποιημένη βάση εκτέλεσης.
Πιθανά οφέλη και προκλήσεις
Η αλλαγή αυτή θα μείωνε τις απαιτήσεις των μηχανών χρόνου εκτέλεσης, βελτιώνοντας την απόδοση και την ασφάλεια, αφού θα εκτελούσαν έναν πιο απλό πυρήνα JavaScript. Οι νέες δυνατότητες θα εφαρμόζονταν κυρίως στο JSSugar, ενώ οι συμβατές μηχανές θα υποστήριζαν μόνο το JS0.
Αυτό θα μετέφερε το βάρος στους κατασκευαστές εργαλείων μεταγλώττισης, οι οποίοι θα έπρεπε να συμμορφώνονται με τα νέα πρότυπα για να υποστηρίξουν τα χαρακτηριστικά του JSSugar. Καθώς οι εξελίξεις της JavaScript θα βασίζονται όλο και περισσότερο σε αυτά τα εργαλεία, ενδέχεται να χρειαστεί και μια νέα επιτροπή που θα ασχολείται αποκλειστικά με την ανάπτυξη των μεταγλωττιστών και τη συμμόρφωσή τους με τα πρότυπα.
Η αντίδραση της κοινότητας
Η πρόταση της Google προκάλεσε διχασμένες απόψεις μεταξύ των προγραμματιστών. Ορισμένοι φοβούνται ότι αυτή η αλλαγή θα απομακρύνει την JavaScript από τον πρωταρχικό της ρόλο ως «γλώσσα του περιηγητή» και θα την κάνει εξαρτώμενη από εξωτερικά εργαλεία μεταγλώττισης. Προγραμματιστές που προτιμούν την «καθαρή» JavaScript (Vanilla JS), χωρίς εργαλεία μεταγλώττισης, εκφράζουν την ανησυχία ότι θα δυσκολευτούν να εργαστούν χωρίς να αναγκάζονται να χρησιμοποιούν πρόσθετα εργαλεία.
Η πρόταση έρχεται σε μια εποχή όπου η ασφάλεια, η απόδοση και η σταθερότητα είναι σημαντικά ζητούμενα για τις διαδικτυακές εφαρμογές. Ωστόσο, το ενδεχόμενο η JavaScript να εξαρτάται από εργαλεία όπως το TypeScript και το Babel δεν βρίσκει όλους τους προγραμματιστές σύμφωνους. Κάποιοι εκφράζουν την ανησυχία ότι η ανάγκη για μεταγλώττιση ίσως απομακρύνει την JavaScript από την απλότητά της και την ανεξαρτησία της ως μια γλώσσα άμεσης εκτέλεσης στον περιηγητή.
Τι σημαίνει αυτή η πρόταση για το digital marketing
Η πιθανή διάσπαση της JavaScript σε δύο επίπεδα, JS0 και JSSugar, θα μπορούσε να επηρεάσει και το digital marketing, καθώς η ταχύτητα και η ασφάλεια των ιστοσελίδων αποτελούν πλέον βασικούς παράγοντες επιτυχίας. Μια πιο σταθερή και απλή JavaScript, όπως η JS0, μπορεί να συμβάλει στη μείωση των χρόνων φόρτωσης και να βελτιώσει την εμπειρία χρήστη, κάτι που θα επηρεάσει θετικά την κατάταξη στις μηχανές αναζήτησης.
Από την άλλη πλευρά, το αυξημένο βάρος στις εργαλειοθήκες μεταγλώττισης ίσως οδηγήσει σε πιο σύνθετες διαδικασίες ανάπτυξης και συντήρησης για τους προγραμματιστές, με ενδεχόμενο κόστος σε χρόνο και πόρους. Οι εταιρείες digital marketing και ανάπτυξης ιστοσελίδων θα πρέπει να παρακολουθούν στενά τις εξελίξεις, καθώς η αποδοχή της πρότασης αυτής θα μπορούσε να αλλάξει σημαντικά το πώς δημιουργούνται και βελτιστοποιούνται οι εφαρμογές που χρησιμοποιούνται για το μάρκετινγκ.
Η πρόταση της Google για τη διάσπαση της JavaScript σε JS0 και JSSugar είναι αμφιλεγόμενη, καθώς αποσκοπεί στη βελτίωση της ασφάλειας και της απόδοσης, αλλά εξαρτά τη γλώσσα από εργαλεία μεταγλώττισης. Αν και η πρόταση δεν έχει υιοθετηθεί ακόμα, δείχνει μια τάση για μείωση της πολυπλοκότητας των πυρήνων της JavaScript, μια εξέλιξη που θα μπορούσε να αποβεί ευεργετική για το digital marketing, με την προϋπόθεση ότι η κοινότητα θα την αποδεχθεί και θα προσαρμοστεί στην αλλαγή.