Ο μεταγλωττιστής είναι ένα πρόγραμμα λογισμικού που μετατρέπει κώδικα προγραμματισμού υπολογιστή γραμμένο από έναν ανθρώπινο προγραμματιστή σε δυαδικό κώδικα (κώδικας μηχανής) που μπορεί να κατανοηθεί και να εκτελεστεί από έναν συγκεκριμένο επεξεργαστή. Η πράξη μετασχηματισμού πηγαίου κώδικα σε κώδικα μηχανής ονομάζεται "σύνταξη". Όταν ολόκληρος ο κώδικας μετασχηματίζεται ταυτόχρονα πριν φτάσει στις πλατφόρμες που το εκτελούν, η διαδικασία ονομάζεται μεταγλώττιση πριν από το χρόνο (AOT).
Ποιες γλώσσες προγραμματισμού χρησιμοποιούν έναν μεταγλωττιστή AOT;
Πολλές γνωστές γλώσσες προγραμματισμού απαιτούν έναν μεταγλωττιστή που περιλαμβάνει:
- Fortran
- Pascal
- Συμβολική γλώσσα
- ντο
- C ++
- Ταχύς
Πριν από την Java και το C #, όλα τα προγράμματα υπολογιστών είτε μεταγλωττισμένα είτε ερμηνεύονται.
Τι γίνεται με τον ερμηνευμένο κώδικα;
Ο ερμηνευμένος κώδικας εκτελεί τις οδηγίες σε ένα πρόγραμμα χωρίς να τις μεταγλωττίζει σε γλώσσα μηχανής. Ο ερμηνευμένος κώδικας αναλύει απευθείας τον πηγαίο κώδικα, συνδυάζεται με ένα εικονικό μηχάνημα που μεταφράζει τον κώδικα για το μηχάνημα τη στιγμή της εκτέλεσης ή εκμεταλλεύεται τον προσυμπλεγμένο κώδικα.
Javascript συνήθως ερμηνεύεται.Ο συντάκτης κώδικα τρέχει πιο γρήγορα από τον ερμηνευμένο κώδικα, επειδή δεν χρειάζεται να κάνει οποιαδήποτε εργασία τη στιγμή που λαμβάνει χώρα η ενέργεια. Η εργασία έχει ήδη γίνει.
Ποιες Γλώσσες Προγραμματισμού Χρησιμοποιήστε έναν Μεταγλωττιστή JIT;
Ιάβα και το C # χρησιμοποιούν μεταγλωττιστές just-in-time. Οι μεταγλωττιστές Just-in-Time είναι ένας συνδυασμός μεταφραστών και διερμηνέων AOT. Αφού γράψει ένα πρόγραμμα Java, ο μεταγλωττιστής JIT μετατρέπει τον κώδικα σε bytecode αντί σε κώδικα που περιέχει οδηγίες για έναν επεξεργαστή συγκεκριμένης πλατφόρμας υλικού. Ο bytecode είναι ανεξάρτητος από την πλατφόρμα και μπορεί να αποσταλεί και να εκτελεστεί σε οποιαδήποτε πλατφόρμα που υποστηρίζει την Java. Κατά μία έννοια, το πρόγραμμα καταρτίζεται σε μια διαδικασία δύο σταδίων.
Ομοίως, το C # χρησιμοποιεί έναν μεταγλωττιστή JIT που είναι μέρος του Common Language Runtime, ο οποίος διαχειρίζεται την εκτέλεση όλων των εφαρμογών .NET. Κάθε πλατφόρμα προορισμού έχει έναν μεταγλωττιστή JIT. Όσο η ενδιάμεση μετατροπή γλώσσας bytecode μπορεί να γίνει κατανοητή από την πλατφόρμα, το πρόγραμμα εκτελείται.
Πλεονεκτήματα και μειονεκτήματα της σύνταξης AOT και JIT
Η μεταγλώττιση "Ahead-of-time" (AOT) παρέχει πιο γρήγορο χρόνο εκκίνησης, ιδιαίτερα όταν ένα μεγάλο μέρος του κώδικα εκτελείται κατά την εκκίνηση. Ωστόσο, απαιτεί περισσότερη μνήμη και περισσότερο χώρο στο δίσκο. Η συλλογή JOT πρέπει να στοχεύει τις λιγότερο ικανές από όλες τις πιθανές πλατφόρμες εκτέλεσης.
Τα προφίλ σύνταξης του Just-in-Time (JIT) της πλατφόρμας στόχου, ενώ εκτελείται και εκ νέου εκτελείται εκ νέου, παρέχοντας βελτιωμένες επιδόσεις. Το JIT δημιουργεί βελτιωμένο κώδικα επειδή στοχεύει στην τρέχουσα πλατφόρμα, παρόλο που συνήθως χρειάζεται περισσότερος χρόνος για να τρέξει από τον συντάκτη κώδικα AOT.