Διδακτικά Βιβλία του Παιδαγωγικού Ινστιτούτου

Αναζήτηση

Βρες
Εμφάνιση

7.3.8 Μεταφραστές

Όπως ήδη αναφέραμε, η ΚΜΕ αναγνωρίζει και εκτελεί εντολές σε γλώσσα μηχανής. Το ερώτημα λοιπόν είναι: πώς τα προγράμματα, που είναι γραμμένα σε οποιαδήποτε άλλη μορφή εκτός της γλώσσας μηχανής, εκτελούνται από την ΚΜΕ του υπολογιστή; Θα πρέπει τα προγράμματα που είναι γραμμένα σε κάποια γλώσσα υψηλού επιπέδου να "μεταφραστούν" σε γλώσσα μηχανής. Το ρόλο αυτό τον αναλαμβάνουν ειδικά προγράμματα. Στην περίπτωση των συμβολικών γλωσσών, χρησιμοποιούνται οι συμβολομεταφραστές, ενώ στις γλώσσες υψηλού επιπέδου, οι μεταγλωττιστές και οι διερμηνευτές.

Συμβολομεταφραστές

Σε προηγούμενο παράδειγμα διαπιστώσαμε ότι οι εντολές των συμβολικών γλωσσών βρίσκονται σε αντιστοιχία μία προς μία με αυτές της γλώσσας μηχανής. Η μετατροπή των προγραμμάτων από συμβολική γλώσσα σε γλώσσα μηχανής γίνεται από ειδικά προγράμματα που ονομάζονται συμβολομεταφραστές (assemblers). Η βασική τους λειτουργία συνίσταται στο να αντικαθιστούν με τη χρήση ενός λεξικού τις συμβολικές εντολές με τις αντίστοιχες της γλώσσας μηχανής. Οι σύγχρονοι συμβολομεταφραστές, χωρίς να απομακρύνονται από αυτήν τη βασική λειτουργία, προσφέρουν διάφορες ευκολίες, όπως: - να δίνονται ονόματα σε θέσεις μνήμης ή σε αριθμητικές αξίες και ο συμβολομεταφραστής αναλαμβάνει να κάνει τις μετατροπές - να επιτρέπουν την κατασκευή μακροεντολών. Έχει παρατηρηθεί ότι σε ένα πρόγραμμα κάποιες ομάδες εντολών επαναλαμβάνονται σε διαφορετικά σημεία αυτούσιες ή με μικρές παραλλαγές. Ο μηχανισμός των μακροεντολών επιτρέπει να ορίσουμε ένα όνομα που να αντιπροσωπεύει την επαναλαμβανόμενη σειρά εντολών, την οποία καταγράφουμε αναλυτικά για μια φορά. Σε κάθε σημείο που χρειαζόμαστε την ίδια σειρά εντολών, αρκεί να γίνεται αναφορά σε αυτό το όνομα και ο συμβολομεταφραστής αναλαμβάνει την αντικατάσταση του ονόματος της μακροεντολής με τις εντολές που αυτή εμπεριέχει.

Μεταγλωτιστές - Διερμηνευτές

Υπάρχουν δύο τρόποι για την εκτέλεση από τον υπολογιστή προγραμμάτων που είναι γραμμένα σε γλώσσες υψηλού επιπέδου: - με τη χρήση μεταγλωττιστή (compiler) - με τη χρήση διερμηνευτή (interpreter).

Μεταγλωττιστής Στο σχήμα φαίνεται η διαδικασία εκτέλεσης ενός προγράμματος με τη χρήση μεταγλωττιστή. Η διαδικασία περιλαμβάνει τα εξής βήματα:

- Γραφή του προγράμματος σε γλώσσα υψηλού επιπέδου -π.χ. PASCAL- με τη βοήθεια ενός συντάκτη κειμένων (editor). Αυτό είναι το πηγαίο πρόγραμμα (source code, source program). - Το πηγαίο αυτό πρόγραμμα μεταγλωττίζεται, από το μεταγλωττιστή της συγκεκριμένης γλώσσας, σε γλώσσα μηχανής. Αυτό είναι το αντικείμενο (object) πρόγραμμα. Κατά τη διαδικασία της μεταγλώττισης, το πρόγραμμα ελέγχεται για συντακτικά λάθη, δηλαδή κατά πόσο το πηγαίο πρόγραμμα είναι γραμμένο σύμφωνα με τους συντακτικούς κανόνες τις γλώσσας. Για να ολοκληρωθεί η μεταγλώττιση το πρόγραμμα πρέπει να είναι συντακτικά σωστό, διαφορετικά η διαδικασία της μεταγλώττισης διακόπτεται. - Το αντικείμενο πρόγραμμα, παρ’ όλο που είναι σε γλώσσα μηχανής, δεν μπορεί να εκτελεστεί από την ΚΜΕ, γιατί δεν είναι αυτόνομο. Συνήθως του λείπει κάποιος κώδικας κοινής χρήσης, που βρίσκεται σε βιβλιοθήκες αντικειμένων προγραμμάτων. Όταν λέμε κώδικα κοινής χρήσης, συνήθως εννοούμε κώδικα που διαχειρίζεται τις λειτουργίες εισόδου εξόδου ή κώδικα που αφορά μαθηματικές συναρτήσεις (sin, cos, κλπ.). Τη σύνδεση του αντικειμένου προγράμματος με τα απαραίτητα προγράμματα από τις βιβλιοθήκες αναλαμβάνει ο συνδέτης (linker), ο οποίος παράγει και το αυτόνομο εκτελέσιμο πρόγραμμα. Αυτό το τελευταίο είναι που εκτελείται από την ΚΜΕ.

Προγραμματισμός υπολογιστή Στο περιβάλλον του ΜS-DOS και των MS-Windows τα εκτελέσιμα προγράμματα διακρίνονται από την επέκταση com ή exe στο όνομα του αρχείου.

Τα βήματα δηλαδή είναι: - Συγγραφή - Μεταγλώττιση - Σύνδεση - Εκτέλεση.

Τα βήματα αυτά μπορεί να γίνονται είτε σαν μια συνεχόμενη διαδικασία είτε το καθένα σε διαφορετικό χρόνο. Στο κάθε βήμα μπορεί να προκύψουν λάθη, οπότε διορθώνουμε το λάθος και η διαδικασία επαναλαμβάνεται. Στην πιο πάνω διαδικασία ο συντάκτης κειμένων, ο μεταφραστής και ο συνδέτης, είναι προγράμματα τα οποία μας βοηθούν να παραγάγουμε το εκτελέσιμο πρόγραμμα. Από τη στιγμή που το εκτελέσιμο πρόγραμμα παραχθεί, μπορεί να εκτελεστεί αυτόνομα από την ΚΜΕ, χωρίς να είναι απαραίτητος ο συντάκτης κειμένων, ο μεταφραστής ή ο συνδέτης.

Διερμηνευτής Τελείως διαφορετική σε αυτό το σημείο είναι η προσέγγιση της εκτέλεσης προγράμματος γραμμένου σε γλώσσα υψηλού επιπέδου με τη χρήση διερμηνευτή.

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