Το τελικό στάδιο της δημιουργίας ενός προγράμματος είναιμετάφραση ενός αλγορίθμου γραμμένου σε μία από τις γλώσσες προγραμματισμού (C / C ++, Pascal κ.λπ.) σε γλώσσα μηχανής χαμηλού επιπέδου. Αυτό οφείλεται στο γεγονός ότι οι υπολογιστές, προκειμένου να εκτελέσουν οποιαδήποτε εργασία, πρέπει να ορίσουν εντολές σε μια γλώσσα που κατανοούν, κοντά στο δυαδικό και να λειτουργούν με πρωτόγονες δομές δεδομένων (bit, byte ή word). Η διαδικασία της μετάφρασης των χειριστών υψηλού επιπέδου με γνώμονα το πρόβλημα σε δυαδικό κώδικα ονομάζεται μετάφραση. Υπάρχουν δύο μέθοδοι μετάφρασης - συλλογή και ερμηνεία.
Μεταγλωττιστής - τι είναι αυτό;
Η ανάλυση των πολλών ερμηνειών των όρων "μεταγλωττιστής" και "συλλογή" μας επιτρέπει να επισημάνουμε τον ακόλουθο ορισμό. Μεταγλωττιστής Είναι ένα πρόγραμμα σχεδιασμένο για μετάφρασητο κείμενο του αρχικού αλγορίθμου από μια γλώσσα υψηλού επιπέδου σε ένα ισοδύναμο σύνολο οδηγιών σε μια γλώσσα προσανατολισμένη στη μηχανή. Αυτός είναι ο λεγόμενος κωδικός αντικειμένου, για την επόμενη συναρμολόγηση του προκύπτοντος κώδικα αντικειμένου σε μια έτοιμη προς χρήση ενότητα προγράμματος.
Μεταγλωττιστής και διερμηνέας - ομοιότητες και διαφορές
Διερμηνέας Είναι ένα βοηθητικό πρόγραμμα, ακριβώς όπως ένας μεταγλωττιστής,σχεδιασμένο για να μεταφράζει τον πηγαίο κώδικα σε μηχάνημα. Ωστόσο, σε αντίθεση με τον μεταγλωττιστή, ο διερμηνέας ξεκινά κάθε φορά με το πρόγραμμα και εκτελεί τη μετάφραση γραμμή προς γραμμή.
Μπορούμε να πούμε ότι ένας μεταγλωττιστής και ένας διερμηνέας είναι επεξεργαστές γλωσσών που επιτρέπουν σε μια υπολογιστική μηχανή να αναγνωρίζει και να εκτελεί οδηγίες που δίδονται από έναν προγραμματιστή.
Ταξινόμηση μεταγλωττιστή
Οι μεταγλωττιστές ταξινομούνται κυρίως με χαρακτηριστικά που σχετίζονται με τους τομείς πρακτικής εφαρμογής τους.
Μεταγλωττιστής διανύσματος Είναι ένα βοηθητικό πρόγραμμα που μεταφράζει τον πηγαίο κώδικα σε αντικειμενικό κώδικα και είναι προσαρμοσμένο για υπολογιστές εξοπλισμένους με διανυσματικούς επεξεργαστές.
Ευέλικτος μεταγλωττιστής προγραμματιστεί σε γλώσσα υψηλού επιπέδου σε αρθρωτή βάση. Η διαχείρισή του γίνεται με πίνακες. Είναι επίσης δυνατό να το εκτελέσετε με μεταγλωττιστή μεταγλωττιστή.
Αυξητικός μεταγλωττιστής Είναι ένας επεξεργαστής γλωσσών που μεταφράζει εκ νέου μεμονωμένα τμήματα του πηγαίου κώδικα και προσθήκες σε αυτόν. Ωστόσο, αποτρέπει την αναδιάταξη ολόκληρης της εφαρμογής.
Μεταγλωττιστής ερμηνείας (βήμα προς βήμα) Είναι ένα βοηθητικό πρόγραμμα που καταρτίζει ανεξάρτητα κάθε δήλωση ή εντολή του πηγαίου κώδικα υψηλού επιπέδου διαδοχικά.
Μεταγλωττιστής μεταγλωττιστών - ένας μεταφραστής ικανός να αποδεχτεί μια επίσημη περιγραφή για μια γλώσσα προγραμματισμού και να δημιουργήσει ανεξάρτητα έναν μεταγλωττιστή για οποιαδήποτε γλώσσα.
Μεταγλωττιστής εντοπισμού σφαλμάτων σας επιτρέπει να βρείτε και να εξαλείψετε ορισμένους τύπους συντακτικών σφαλμάτων που έγιναν κατά τη σύνταξη του πηγαίου κώδικα
Μεταγλωττιστής κατοίκων καταλαμβάνει μόνιμη θέση στη μνήμη RAM και, ως εκ τούτου, διατίθεται για επαναχρησιμοποίηση από ένα ευρύ φάσμα εργασιών.
Αυτο-μεταγλωττιστής μεταγλωττιστής γράφεται στην ίδια γλώσσα από την οποία πραγματοποιείται η μετάδοση.
Γενικός μεταγλωττιστής βασίζεται σε μια επίσημη περιγραφή των σημασιολογικών και συντακτικών παραμέτρων της γλώσσας εισαγωγής. Τα κύρια συστατικά ενός τέτοιου βοηθητικού προγράμματος είναι οι φορτωτές πυρήνα, συντακτικοί και σημασιολογικοί.
Συσκευή μεταγλωττιστή
Κάθε μεταγλωττιστής βασίζεται σε μεταφραστή καισύνδεσμος. Συχνά κατά τη μεταγλώττιση, χρησιμοποιείται ένας εξωτερικός σύνδεσμος και ο ίδιος ο μεταγλωττιστής εκτελεί μόνο τη λειτουργία μετάφρασης. Συμβαίνει επίσης ότι ο μεταγλωττιστής υλοποιείται ως ένα είδος προγράμματος διαχειριστή που σχετίζεται με τον μεταφραστή (ή μεταφραστές, εάν χρησιμοποιήθηκαν διαφορετικές γλώσσες προγραμματισμού κατά τη σύνταξη του πηγαίου κώδικα) και του συνδέσμου και ξεκινώντας την εκτέλεση τους, εάν είναι απαραίτητο.
Γλώσσες προγραμματισμού και μέθοδοι μετάφρασης
Παρά το γεγονός ότι το πρόγραμμα γράφτηκεοποιαδήποτε γλώσσα προγραμματισμού, μπορείτε να μεταγλωττίσετε και να ερμηνεύσετε, πολλές γλώσσες υψηλού επιπέδου έχουν προδιάθεση για τη μία ή την άλλη μέθοδο μετάφρασης. Έτσι, η γλώσσα C σχεδιάστηκε αρχικά για συλλογή και Java - για την ερμηνεία του γραπτού προγράμματος. Οι μεταγλωττιστές C αναπτύσσονται αρκετά εύκολα, λόγω του σχετικά χαμηλού επιπέδου και ενός μικρού αριθμού δομικών στοιχείων.
Πλεονεκτήματα και μειονεκτήματα των μεταγλωττιστών και των διερμηνέων. Περιοχές χρήσης
Σημειώστε ότι οι μεταγλωττισμένες εφαρμογές έχουνυψηλότερη ταχύτητα σε σύγκριση με τα ερμηνευμένα, αλλά ταυτόχρονα ο προκύπτων κωδικοποιημένος κωδικός μηχανήματος εξαρτάται από την πλατφόρμα υλικού Έτσι, ένα πρόγραμμα γραμμένο και μεταγλωττισμένο για Windows δεν θα λειτουργήσει, για παράδειγμα, στο Linux. Επομένως, στην περίπτωση εφαρμογών Διαδικτύου, όταν είναι αδύνατο να πούμε εκ των προτέρων σε ποιο περιβάλλον θα λειτουργήσουν, χρησιμοποιούν ερμηνεία ή bytecode (στην περίπτωση αυτή, το αρχικό πρόγραμμα μετατρέπεται σε ενδιάμεση μορφή που μπορεί να εκτελεστεί σε διάφορα υλικά πλατφόρμες).