Ερμηνευμένες έναντι μεταγλωττισμένων γλωσσών προγραμματισμού: Ποια είναι η διαφορά;

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

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

Εντάξει ... αλλά τι ότι πραγματικά σημαίνει;

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

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

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

Μεταγλωττισμένες γλώσσες

Οι μεταγλωττισμένες γλώσσες μετατρέπονται απευθείας σε κώδικα μηχανήματος που μπορεί να εκτελέσει ο επεξεργαστής. Ως αποτέλεσμα, τείνουν να είναι ταχύτερα και πιο αποτελεσματικά στην εκτέλεση από τις ερμηνευμένες γλώσσες. Δίνουν επίσης στον προγραμματιστή μεγαλύτερο έλεγχο σε πτυχές υλικού, όπως διαχείριση μνήμης και χρήση CPU.

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

Παραδείγματα καθαρών μεταγλωττισμένων γλωσσών είναι οι C, C ++, Erlang, Haskell, Rust και Go.

Ερμηνευμένες γλώσσες

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

Οι ερμηνευμένες γλώσσες κάποτε ήταν σημαντικά πιο αργές από τις μεταγλωττισμένες γλώσσες. Όμως, με την ανάπτυξη της συλλογής just-in-time, αυτό το κενό μειώνεται.

Παραδείγματα κοινών ερμηνευμένων γλωσσών είναι PHP, Ruby, Python και JavaScript.

Ένα μικρό σπήλαιο

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

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

Πλεονεκτήματα και μειονεκτήματα

Πλεονεκτήματα των μεταγλωττισμένων γλωσσών

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

Μειονεκτήματα των μεταγλωττισμένων γλωσσών

Τα πιο αξιοσημείωτα μειονεκτήματα είναι:

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

Πλεονεκτήματα ερμηνευμένων γλωσσών

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

Μειονεκτήματα ερμηνευμένων γλωσσών

Το πιο αξιοσημείωτο μειονέκτημα είναι η τυπική ταχύτητα εκτέλεσης σε σύγκριση με τις μεταγλωττισμένες γλώσσες.