Έννοια της ερμηνείας ή της σύνταξης στο JavaScript

click fraud protection

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

Προφανώς, κώδικα μηχανής γραφής ήταν δύσκολο για τους ανθρώπους να κάνουν (είναι 125 μια πρόσθετη εντολή ή είναι 126 ή ίσως 27). Για να ξεπεράσουμε αυτό το πρόβλημα δημιουργήθηκαν οι γνωστές ως γλώσσες συναρμολόγησης. Αυτές οι γλώσσες χρησιμοποίησαν πιο προφανή ονόματα για τις εντολές (όπως ADD για προσθήκη) και έτσι απομακρύνθηκαν από την ανάγκη να θυμηθούν τους ακριβείς κώδικες μηχανών. Οι γλώσσες συναρμολόγησης εξακολουθούν να έχουν σχέση ενός προς έναν με τον συγκεκριμένο επεξεργαστή και τον κώδικα μηχανής στον οποίο ο υπολογιστής μετατρέπει τις εντολές αυτές.

Οι γλώσσες συναρμολόγησης πρέπει να συντάσσονται ή να ερμηνεύονται

instagram viewer

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

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

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

Δύο παραλλαγές για την κατάρτιση και τη διερμηνεία

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

Η άλλη παραλλαγή ονομάζεται μεταγλωττιστής Just in Time (ή JIT). Με αυτήν την προσέγγιση, στην πραγματικότητα δεν τρέχετε τον μεταγλωττιστή αφού έχετε γράψει τον κωδικό σας. Αντίθετα, αυτό συμβαίνει αυτόματα όταν εκτελείτε τον κώδικα. Χρησιμοποιώντας έναν μεταγλωττιστή Just in Time, ο κώδικας δεν ερμηνεύεται με δήλωση, καταρτίζεται όλα σε ένα πηγαίνετε κάθε φορά που καλείται να τρέξει και στη συνέχεια η μεταγλωττισμένη έκδοση που μόλις δημιουργήθηκε είναι αυτό που παίρνει τρέξιμο. Αυτή η προσέγγιση το κάνει να μοιάζει πολύ όπως ο κώδικας ερμηνεύεται εκτός από το ότι αντί για τα λάθη που βρέθηκαν μόνο όταν η δήλωση με το σφάλμα, τα τυχόν σφάλματα που ανιχνεύονται από τον μεταγλωττιστή δεν έχουν ως αποτέλεσμα την εκτέλεση κανενός κώδικα αντί του συνόλου του κώδικα μέχρι το σημείο αυτό τρέξιμο. PHP είναι ένα παράδειγμα μιας γλώσσας που συνήθως χρησιμοποιεί τη σύνταξη της χρονικής στιγμής.

Συντάσσεται ή ερμηνεύεται το JavaScript;

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

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

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

Παραδείγματα για την ταχύτερη εκτέλεση του JavaScript

Ένα παράδειγμα αυτού είναι ότι μερικά αλλά όχι όλα τα προγράμματα περιήγησης έχουν εφαρμόσει μια μέθοδο document.getElementsByClassName () μέσα στη μηχανή JavaScript, ενώ άλλα δεν έχουν ακόμη κάνει κάτι τέτοιο. Όταν χρειαζόμαστε αυτή τη συγκεκριμένη λειτουργικότητα, μπορούμε να κάνουμε τον κώδικα να τρέχει γρηγορότερα σε εκείνους τους browsers όπου ο μηχανισμός JavaScript το παρέχει χρησιμοποιώντας τη λειτουργία ανιχνεύοντας αν η μέθοδος υπάρχει ήδη και δημιουργώντας μόνο τη δική μας έκδοση αυτού του κώδικα σε JavaScript, όταν ο μηχανισμός JavaScript δεν την παρέχει μας. Όπου ο μηχανισμός JavaScript παρέχει αυτές τις λειτουργίες, θα πρέπει να τρέχει γρηγορότερα αν το χρησιμοποιούμε αντί να εκτελούμε τη δική μας έκδοση γραμμένη στο JavaScript. Το ίδιο ισχύει και για οποιαδήποτε επεξεργασία την οποία διαθέτει ο μηχανισμός JavaScript για να μπορέσουμε να καλέσουμε άμεσα.

Θα υπάρξουν επίσης περιπτώσεις όπου το JavaScript παρέχει πολλαπλούς τρόπους να κάνει το ίδιο αίτημα. Σε αυτές τις περιπτώσεις, ένας από τους τρόπους πρόσβασης στις πληροφορίες μπορεί να είναι πιο συγκεκριμένος από τον άλλο. Για παράδειγμα, document.getElementsByTagName ('table') [0] .tBodies και document.getElementsByTagName ('table') [0] .getElementsByTagName ('tbody') και τα δύο να ανακτήσει τον ίδιο μοτίβο των ετικετών tbody στον πρώτο πίνακα της ιστοσελίδας, ωστόσο η πρώτη από αυτές είναι μια συγκεκριμένη εντολή για την ανάκτηση οι ετικέτες tbody όπου το δεύτερο αναγνωρίζει ότι ανακτάμε ετικέτες tbody σε μια παράμετρο και ότι άλλες τιμές μπορούν να αντικατασταθούν για να ανακτήσουν άλλες ετικέτες. Στα περισσότερα προγράμματα περιήγησης, η συντομότερη και πιο συγκεκριμένη παραλλαγή του κώδικα θα τρέξει γρηγορότερα (σε ορισμένες περιπτώσεις πολύ πιο γρήγορα) από τη δεύτερη παραλλαγή και έτσι είναι λογικό να χρησιμοποιούμε το βραχύτερο και ειδικότερο εκδοχή. Κάνει επίσης τον κώδικα πιο εύκολο να διαβαστεί και να διατηρηθεί.

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

instagram story viewer