Assembler vs Interpreter
Γενικά, ο μεταγλωττιστής είναι ένα πρόγραμμα υπολογιστή που διαβάζει ένα πρόγραμμα γραμμένο σε μια γλώσσα, η οποία ονομάζεται γλώσσα πηγής, και το μεταφράζει σε μια άλλη γλώσσα, η οποία ονομάζεται γλώσσα στόχος. Παραδοσιακά, η γλώσσα πηγής είναι μια γλώσσα υψηλού επιπέδου όπως η C++ και η γλώσσα στόχος είναι μια γλώσσα χαμηλού επιπέδου όπως η γλώσσα Assembly. Ωστόσο, υπάρχουν μεταγλωττιστές που μπορούν να μετατρέψουν ένα πρόγραμμα πηγής γραμμένο σε γλώσσα Assembly και να το μετατρέψουν σε κώδικα μηχανής ή κώδικα αντικειμένου. Οι συναρμολογητές είναι τέτοια εργαλεία. Από την άλλη πλευρά, οι διερμηνείς είναι εργαλεία που εκτελούν εντολές γραμμένες σε κάποια γλώσσα προγραμματισμού. Ο διερμηνέας μπορεί είτε να εκτελέσει απευθείας τον πηγαίο κώδικα υψηλού επιπέδου ή να τον μεταφράσει σε ενδιάμεσο κώδικα και στη συνέχεια να τον ερμηνεύσει ή να εκτελέσει προμεταγλωττισμένο κώδικα.
Τι είναι ένα Assembler;
Το Το Assembler είναι λογισμικό ή εργαλείο που μεταφράζει τη γλώσσα Assembly σε κώδικα μηχανής. Έτσι, ένας assembler είναι ένας τύπος μεταγλωττιστή και ο πηγαίος κώδικας είναι γραμμένος στη γλώσσα Assembly. Η συναρμολόγηση είναι μια γλώσσα αναγνώσιμη από τον άνθρωπο, αλλά συνήθως έχει μια προς ένα σχέση με τον αντίστοιχο κώδικα μηχανής. Επομένως, ένας assembler λέγεται ότι εκτελεί ισομορφική (ένα προς ένα αντιστοίχιση) μετάφραση. Οι προηγμένες συναρμολογητές παρέχουν πρόσθετες δυνατότητες που υποστηρίζουν την ανάπτυξη προγραμμάτων και τις διαδικασίες εντοπισμού σφαλμάτων. Για παράδειγμα, ο τύπος συναρμολογητών που ονομάζονται συναρμολογητές μακροεντολών παρέχει μια δυνατότητα μακροεντολής.
Τι είναι Διερμηνέας;
Ο διερμηνέας είναι ένα πρόγραμμα υπολογιστή ή ένα εργαλείο που εκτελεί εντολές προγραμματισμού. Ένας διερμηνέας μπορεί είτε να εκτελέσει τον πηγαίο κώδικα απευθείας είτε να μετατρέψει την πηγή σε έναν ενδιάμεσο κώδικα και να τον εκτελέσει απευθείας ή να εκτελέσει προμεταγλωττισμένο κώδικα που παράγεται από έναν μεταγλωττιστή (ορισμένα συστήματα διερμηνείας περιλαμβάνουν έναν μεταγλωττιστή για αυτήν την εργασία). Γλώσσες όπως η Perl, η Python, το MATLAB και η Ruby είναι παραδείγματα γλωσσών προγραμματισμού που χρησιμοποιούν έναν ενδιάμεσο κώδικα. Το UCSD Pascal ερμηνεύει έναν προμεταγλωττισμένο κώδικα. Γλώσσες όπως η Java, η BASIC και η Samlltalk πρώτα μεταγλωττίζουν την πηγή σε έναν ενδιάμεσο κώδικα που ονομάζεται bytecode και στη συνέχεια τον ερμηνεύουν.
Ποια είναι η διαφορά μεταξύ ενός Assembler και ενός Interpreter;
Ένας assembler μπορεί να θεωρηθεί ένας ειδικός τύπος μεταγλωττιστή, ο οποίος μεταφράζει μόνο τη γλώσσα Assembly σε κώδικα μηχανής. Οι διερμηνείς είναι εργαλεία που εκτελούν οδηγίες γραμμένες σε κάποια γλώσσα. Τα συστήματα διερμηνέων μπορεί να περιλαμβάνουν έναν μεταγλωττιστή για προμεταγλώττιση κώδικα πριν από την ερμηνεία, αλλά ένας διερμηνέας δεν μπορεί να ονομαστεί ειδικός τύπος μεταγλωττιστή. Οι συναρμολογητές παράγουν έναν κώδικα αντικειμένου, ο οποίος μπορεί να χρειαστεί να συνδεθεί χρησιμοποιώντας προγράμματα σύνδεσης προκειμένου να εκτελεστεί σε μια μηχανή, αλλά οι περισσότεροι διερμηνείς μπορούν να ολοκληρώσουν την εκτέλεση ενός προγράμματος μόνοι τους. Ένας assembler θα κάνει τυπικά μια μετάφραση ένα προς ένα, αλλά αυτό δεν ισχύει για τους περισσότερους διερμηνείς. Επειδή η γλώσσα Assembly έχει μια αντιστοίχιση ενός προς ένα με τον κώδικα μηχανής, ένας assembler μπορεί να χρησιμοποιηθεί για την παραγωγή κώδικα που εκτελείται πολύ αποτελεσματικά σε περιπτώσεις όπου η απόδοση είναι πολύ σημαντική (π.χ. μηχανές γραφικών, ενσωματωμένα συστήματα με περιορισμένους πόρους υλικού σε σύγκριση με έναν προσωπικό υπολογιστή όπως φούρνοι μικροκυμάτων, πλυντήρια ρούχων κ.λπ.). Από την άλλη πλευρά, οι διερμηνείς χρησιμοποιούνται όταν χρειάζεστε υψηλή φορητότητα. Για παράδειγμα, ο ίδιος bytecode Java μπορεί να εκτελεστεί σε διαφορετικές πλατφόρμες χρησιμοποιώντας τον κατάλληλο διερμηνέα (JVM).