Μεταγλωττιστής έναντι διερμηνέα: Πλήρης διαφορά μεταξύ μεταγλωττιστή και διερμηνέα

Πίνακας περιεχομένων:

Anonim

Τι είναι ο μεταγλωττιστής;

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

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

Τι είναι ο διερμηνέας;

Ένας διερμηνέας είναι ένα πρόγραμμα υπολογιστή, το οποίο καλύπτει κάθε δήλωση προγράμματος υψηλού επιπέδου στον κωδικό του μηχανήματος. Αυτό περιλαμβάνει τον πηγαίο κώδικα, τον προ-μεταγλωττισμένο κώδικα και τα σενάρια. Τόσο ο μεταγλωττιστής όσο και οι διερμηνείς κάνουν την ίδια δουλειά που μετατρέπει τη γλώσσα προγραμματισμού υψηλότερου επιπέδου σε κώδικα μηχανήματος. Ωστόσο, ένας μεταγλωττιστής θα μετατρέψει τον κωδικό σε μηχάνημα (δημιουργία exe) πριν από την εκτέλεση του προγράμματος. Οι διερμηνείς μετατρέπουν τον κώδικα σε κώδικα μηχανήματος κατά την εκτέλεση του προγράμματος.

ΒΑΣΙΚΗ ΔΙΑΦΟΡΑ

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

Διαφορά μεταξύ μεταγλωττιστή και διερμηνέα

Βάση διαφοράς Μεταγλωττιστής Διερμηνέας
Βήματα προγραμματισμού
  • Δημιουργήστε το πρόγραμμα.
  • Η μεταγλώττιση θα αναλύσει ή θα αναλύσει όλες τις δηλώσεις γλώσσας για την ορθότητά της. Εάν είναι λάθος, ρίχνει ένα σφάλμα
  • Εάν δεν υπάρχει σφάλμα, ο μεταγλωττιστής θα μετατρέψει τον πηγαίο κώδικα σε κώδικα μηχανήματος.
  • Συνδέει διαφορετικά αρχεία κώδικα σε ένα τρέξιμο πρόγραμμα (γνωστό ως exe)
  • Εκτελέστε το πρόγραμμα
  • Δημιουργήστε το πρόγραμμα
  • Χωρίς σύνδεση αρχείων ή δημιουργίας κώδικα μηχανήματος
  • Οι δηλώσεις πηγής εκτελέστηκαν κατά γραμμή κατά τη διάρκεια εκτέλεσης
Πλεονέκτημα Ο κωδικός προγράμματος μεταφράζεται ήδη σε κώδικα μηχανήματος. Έτσι, ο χρόνος εκτέλεσης κώδικα είναι μικρότερος. Οι διερμηνείς είναι ευκολότεροι στη χρήση, ειδικά για αρχάριους.
Μειονέκτημα Δεν μπορείτε να αλλάξετε το πρόγραμμα χωρίς να επιστρέψετε στον πηγαίο κώδικα. Τα ερμηνευμένα προγράμματα μπορούν να εκτελεστούν σε υπολογιστές που έχουν τον αντίστοιχο διερμηνέα.
Κωδικός μηχανήματος Αποθηκεύστε τη γλώσσα του μηχανήματος ως κωδικό μηχανήματος στο δίσκο Δεν αποθηκεύεται καθόλου κωδικός μηχανήματος.
Χρόνος τρεξίματος Ο μεταγλωττισμένος κώδικας εκτελείται πιο γρήγορα Ο ερμηνευμένος κώδικας εκτελείται πιο αργά
Μοντέλο Βασίζεται σε μοντέλο μετάφρασης-φόρτωσης μετάφρασης γλωσσών. Βασίζεται στη Μέθοδο Διερμηνείας.
Δημιουργία προγράμματος Δημιουργεί πρόγραμμα εξόδου (με τη μορφή exe) το οποίο μπορεί να εκτελεστεί ανεξάρτητα από το αρχικό πρόγραμμα. Μην δημιουργείτε πρόγραμμα εξόδου. Έτσι, αξιολογούν το πρόγραμμα προέλευσης κάθε φορά κατά τη διάρκεια της εκτέλεσης.
Εκτέλεση Η εκτέλεση του προγράμματος είναι ξεχωριστή από τη συλλογή. Πραγματοποιήθηκε μόνο μετά την κατάρτιση ολόκληρου του προγράμματος εξόδου. Η Εκτέλεση Προγράμματος είναι μέρος της διαδικασίας Ερμηνείας, οπότε εκτελείται γραμμή προς γραμμή.
Απαίτηση μνήμης Το πρόγραμμα-στόχος εκτελείται ανεξάρτητα και δεν απαιτείται ο μεταγλωττιστής στη μνήμη. Ο διερμηνέας υπάρχει στη μνήμη κατά τη διάρκεια της ερμηνείας.
Ταιριάζει καλύτερα Οριοθετείται στο συγκεκριμένο μηχάνημα-στόχο και δεν μπορεί να μεταφερθεί. Τα C και C ++ είναι μια πιο δημοφιλής γλώσσα προγραμματισμού που χρησιμοποιεί μοντέλο συλλογής. Για περιβάλλοντα ιστού, όπου οι χρόνοι φόρτωσης είναι σημαντικοί. Λόγω της πλήρους ανάλυσης που έχει γίνει, οι μεταγλωττιστές χρειάζονται σχετικά μεγαλύτερο χρόνο για τη μεταγλώττιση ακόμη και μικρού κώδικα που ενδέχεται να μην εκτελείται πολλές φορές. Σε τέτοιες περιπτώσεις, οι διερμηνείς είναι καλύτεροι.
Βελτιστοποίηση κώδικα Ο μεταγλωττιστής βλέπει ολόκληρο τον κώδικα εκ των προτέρων. Ως εκ τούτου, εκτελούν πολλές βελτιστοποιήσεις που κάνουν τον κώδικα να τρέχει γρηγορότερα Οι διερμηνείς βλέπουν τον κώδικα ανά γραμμή, και έτσι οι βελτιστοποιήσεις δεν είναι τόσο ισχυρές όσο οι μεταγλωττιστές
Δυναμική πληκτρολόγηση Δύσκολο να εφαρμοστεί καθώς οι μεταγλωττιστές δεν μπορούν να προβλέψουν τι θα συμβεί στο χρόνο στροφής. Οι ερμηνευμένες γλώσσες υποστηρίζουν τη δυναμική πληκτρολόγηση
Χρήση Ταιριάζει καλύτερα στο περιβάλλον παραγωγής Είναι πιο κατάλληλο για το πρόγραμμα και το περιβάλλον ανάπτυξης.
Εκτέλεση σφάλματος Το πρόγραμμα μεταγλώττισης εμφανίζει όλα τα σφάλματα και την προειδοποίηση κατά τη στιγμή της σύνταξης. Επομένως, δεν μπορείτε να εκτελέσετε το πρόγραμμα χωρίς να διορθώσετε σφάλματα Ο διερμηνέας διαβάζει μία μόνο δήλωση και εμφανίζει το σφάλμα εάν υπάρχει. Πρέπει να διορθώσετε το σφάλμα για να ερμηνεύσετε την επόμενη γραμμή.
Εισαγωγή Χρειάζεται ένα ολόκληρο πρόγραμμα Χρειάζεται μία μόνο γραμμή κώδικα.
Παραγωγή Οι ολοκληρωτές δημιουργούν ενδιάμεσο κώδικα machnie. Ο διερμηνέας δεν δημιουργεί ποτέ ενδιάμεσο κώδικα machnie.
Σφάλματα Εμφάνιση όλων των σφαλμάτων μετά, σύνταξη, όλα ταυτόχρονα. Εμφανίζει όλα τα σφάλματα κάθε γραμμής ένα προς ένα.
Σχετικές γλώσσες προγραμματισμού C, C ++, C #, Scala, Java όλα χρησιμοποιούν συμπληρωματικό πρόγραμμα. PHP, Perl, Ruby χρησιμοποιεί διερμηνέα.

Ο ρόλος του μεταγλωττιστή

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

Ο ρόλος του διερμηνέα

  • Ο διερμηνέας μετατρέπει τον πηγαίο κώδικα γραμμή προς γραμμή κατά τη διάρκεια του χρόνου εκτέλεσης.
  • Το Interpret μεταφράζει πλήρως ένα πρόγραμμα γραμμένο σε γλώσσα υψηλού επιπέδου σε γλώσσα επιπέδου μηχανής.
  • Ο διερμηνέας επιτρέπει την αξιολόγηση και τροποποίηση του προγράμματος ενώ εκτελείται.
  • Σχετικά λιγότερος χρόνος για ανάλυση και επεξεργασία του προγράμματος
  • Η εκτέλεση του προγράμματος είναι σχετικά αργή σε σύγκριση με το μεταγλωττιστή

ΓΛΩΣΣΕΣ ΥΨΗΛΟΥ ΕΠΙΠΕΔΟΥ

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

ΚΩΔΙΚΟΣ ΜΗΧΑΝΗΣ

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

ΚΩΔΙΚΟΣ ΑΝΤΙΚΕΙΜΕΝΟΥ

Κατά τη σύνταξη του πηγαίου κώδικα, ο κωδικός μηχανής που δημιουργείται για διαφορετικούς επεξεργαστές όπως Intel, AMD, ένας ARM είναι διαφορετικός. tΓια να κάνετε τον κώδικα φορητό, ο πηγαίος κώδικας μετατρέπεται πρώτα σε Object Code. Είναι ένας ενδιάμεσος κώδικας (παρόμοιος με τον κωδικό του μηχανήματος) που κανένας επεξεργαστής δεν θα καταλάβει. Κατά το χρόνο εκτέλεσης, ο κώδικας αντικειμένου μετατρέπεται στον κωδικό μηχανήματος της πλατφόρμας.

Η Java μεταγλωττίζεται και ερμηνεύεται.

Για την αξιοποίηση των σχετικών πλεονεκτημάτων των μεταγλωττιστών είναι διερμηνείς κάποια γλώσσα προγραμματισμού όπως η Java συντάσσεται και ερμηνεύεται. Ο ίδιος ο κώδικας Java μεταγλωττίζεται σε Object Code. Κατά το χρόνο εκτέλεσης, το JVM ερμηνεύει τον κώδικα αντικειμένου σε κώδικα μηχανήματος του υπολογιστή προορισμού.