Μεταφρασμένες γλώσσες (Γλώσσες που έχουν μεταγλωττίσει):
* Διαδικασία μετάφρασης: Ο A * Compiler * παίρνει ολόκληρο το πρόγραμμα πηγαίου κώδικα ως είσοδο και το μεταφράζει σε ένα πλήρες πρόγραμμα κώδικα μηχανής (ή μια ενδιάμεση αναπαράσταση που μεταφράζεται στη συνέχεια στον κώδικα μηχανής) * πριν εκτελεστεί το πρόγραμμα. Αυτή η διαδικασία ονομάζεται συχνά *σύνταξη *. Ο προκύπτων κώδικα μηχανής είναι ένα ξεχωριστό αρχείο (όπως ένα `.exe` σε Windows ή ένα εκτελέσιμο αρχείο σε άλλα συστήματα).
* Εκτέλεση: Ο κώδικας μηχανής που καταρτίζεται στη συνέχεια εκτελείται απευθείας από τον επεξεργαστή του υπολογιστή.
* ταχύτητα: Γενικά ταχύτερη εκτέλεση επειδή η μετάφραση γίνεται εκ των προτέρων και ο επεξεργαστής εκτελεί βελτιστοποιημένο κωδικό μηχανής απευθείας.
* Ανίχνευση σφαλμάτων: Τα σφάλματα μεταγλωττιστή εντοπίζονται * πριν από το χρόνο εκτέλεσης. Ο μεταγλωττιστής θα εντοπίσει σφάλματα σύνταξης και κάποια σημασιολογικά σφάλματα κατά τη διάρκεια της διαδικασίας συλλογής.
* Φορητότητα: Συνήθως λιγότερο φορητό. Ένα πρόγραμμα που έχει καταρτιστεί για ένα λειτουργικό σύστημα ή αρχιτεκτονική δεν θα τρέχει συνήθως σε άλλο χωρίς ανασυγκρότηση.
* Παραδείγματα: C, C ++, GO, RUSH, FORTRAN
ερμηνευμένες γλώσσες:
* Διαδικασία μετάφρασης: Ένας *διερμηνέας *παίρνει τη γραμμή πηγαίου κώδικα ανά γραμμή (ή μερικές φορές σε μεγαλύτερα κομμάτια) και μεταφράζει και εκτελεί κάθε κομμάτι *αμέσως *. Δεν υπάρχει ξεχωριστό βήμα συλλογής που παράγει ένα αυτόνομο εκτελέσιμο.
* Εκτέλεση: Ο διερμηνέας διαβάζει, μεταφράζει και εκτελεί ταυτόχρονα τον κώδικα. Δεν παράγει ξεχωριστό αρχείο κώδικα μηχανής.
* ταχύτητα: Γενικά πιο αργή εκτέλεση λόγω της μετάφρασης. Κάθε γραμμή (ή κομμάτι) πρέπει να ερμηνεύεται κάθε φορά που εκτελείται.
* Ανίχνευση σφαλμάτων: Τα σφάλματα συχνά ανιχνεύονται μόνο κατά τη διάρκεια του χρόνου εκτέλεσης. Ο διερμηνέας ενδέχεται να μην πιάσει όλα τα σφάλματα μέχρι να εκτελεστεί ο προβληματικός κώδικας.
* Φορητότητα: Συχνά πιο φορητό. Όσο ο διερμηνέας είναι διαθέσιμος για μια συγκεκριμένη πλατφόρμα, ο πηγαίος κώδικας μπορεί συνήθως να εκτελεστεί.
* Παραδείγματα: Python, Javascript, Ruby, Perl, PHP
υβριδικά προσεγγίσεις:
Είναι σημαντικό να σημειωθεί ότι η διάκριση δεν είναι πάντα ξεκάθαρη. Ορισμένες γλώσσες χρησιμοποιούν μια υβριδική προσέγγιση:
* Compilation: Οι γλώσσες όπως η Java και η C# αρχικά καταρτίζουν τον πηγαίο κώδικα σε μια ενδιάμεση αναπαράσταση (κωδικός byte). Ένας μεταγλωττιστής JIT μεταφράζει τότε αυτή την ενδιάμεση αναπαράσταση στον κωδικό μηχανής *κατά τη διάρκεια του χρόνου εκτέλεσης *. Αυτό συνδυάζει τα πλεονεκτήματα τόσο των ερμηνευμένων όσο και των καταρτισμένων γλωσσών:η αρχική φορητότητα (όπως η ερμηνεία) και η ταχύτερη εκτέλεση των συχνά χρησιμοποιούμενων τμημάτων κώδικα (όπως το Compile).
Συνοπτικά:Η συλλογή μεταφράζει ολόκληρο το πρόγραμμα ταυτόχρονα * πριν * την εκτέλεση, οδηγώντας σε ταχύτερη εκτέλεση, αλλά μικρότερη φορητότητα και ανίχνευση σφαλμάτων εκ των προτέρων. Η ερμηνεία μεταφράζει και εκτελεί τη γραμμή κώδικα ανά γραμμή, παρέχοντας καλύτερη φορητότητα αλλά βραδύτερη εκτέλεση και ανίχνευση σφαλμάτων χρόνου εκτέλεσης. Πολλές σύγχρονες γλώσσες χρησιμοποιούν υβριδικές προσεγγίσεις για να αποκτήσουν το καλύτερο και των δύο κόσμων.
Πνευματικά δικαιώματα © Γνώση Υπολογιστών Όλα τα δικαιώματα κατοχυρωμένα