Περιεχόμενο
- Χρόνος κατασκευής
- Χρόνος εκτέλεσης
- Διαφορά
- Σφάλματα χρόνου μεταγλώττισης
- Καταστροφικά σφάλματα χρόνου εκτέλεσης
- Λογικά σφάλματα χρόνου εκτέλεσης
Το πώς λειτουργεί ένα πρόγραμμα υπολογιστή είναι ένα μυστήριο για τον τυπικό χρήστη που εμπιστεύεται τη δουλειά των προγραμματιστών. Ο προγραμματιστής πρέπει να καταλάβει πώς ο υπολογιστής αναμένει να λάβει εντολές στα δύο βήματα εκτέλεσης (χρόνος σύνταξης και χρόνος εκτέλεσης), εκτός από άλλες έννοιες.
Χρόνος κατασκευής
Το πρώτο στάδιο εκτέλεσης ενός προγράμματος, ο χρόνος σύνταξης, περιλαμβάνει τη μετάφραση της γλώσσας που είναι κατανοητή από τον άνθρωπο, ή "πηγαίος κώδικας", σε μια γλώσσα που κατανοεί ο υπολογιστής ή "κωδικός μηχανής". Ο πηγαίος κώδικας περιέχει λέξεις που αναγνωρίζετε, αριθμούς σε δεκαδική μορφή και οργανωμένες δομές που διευκολύνουν την κατανόηση της ροής των οδηγιών. Το βήμα συλλογής ολοκληρώνεται όταν το νέο πρόγραμμα είναι ένα εκτελέσιμο αρχείο.
Χρόνος εκτέλεσης
Ο υπολογιστής χρησιμοποιεί τις οδηγίες που παράγονται κατά το χρόνο μεταγλώττισης για την εκτέλεση του προγράμματος. Κατά τη διάρκεια του χρόνου εκτέλεσης, ο υπολογιστής διαβάζει τη μετάφραση του πηγαίου κώδικα για την εκτέλεση των εργασιών που ενσωματώνονται από τον προγραμματιστή. Κάθε φορά που κάποιος εκτελεί το πρόγραμμα, το κάνει κατά την εκτέλεση.
Διαφορά
Ο χρόνος σύνταξης διασχίζεται μόνο μία φορά για να μεταφραστεί ο πηγαίος κώδικας σε ένα εκτελέσιμο αρχείο, το οποίο μπορεί να κληθεί όσες φορές χρειάζεται χωρίς να μεταγλωττιστεί ξανά, εκτός εάν το πρόγραμμα χρειάζεται αλλαγές. Οι περισσότεροι χρήστες χρησιμοποιούν μόνο το χρόνο εκτέλεσης.
Σφάλματα χρόνου μεταγλώττισης
Σφάλματα μπορεί να προκύψουν και στα δύο στάδια εκτέλεσης του προγράμματος. Σφάλματα χρόνου μεταγλώττισης, ή σφάλματα σύνταξης, υπάρχουν στον πηγαίο κώδικα. Παραδείγματα αυτών είναι εντολές με ορθογραφικά λάθη, προβλήματα στη σειρά των λειτουργιών, ασύμβατοι συνδυασμοί τύπων μεταβλητών και παραλείψεις των απαραίτητων στοιχείων. Ένας προγραμματιστής μπορεί να εντοπίσει εύκολα σφάλματα χρόνου μεταγλώττισης, επειδή είναι συντακτικό και όχι λογικό. Ο μεταγλωττιστής βρίσκει συνήθως ένα σφάλμα χρόνου μεταγλώττισης και εξηγεί ή δίνει συμβουλές για την επίλυσή του. Εάν ο μεταγλωττιστής παράγει ένα εκτελέσιμο αρχείο από κώδικα, το πρόγραμμα δεν έχει σφάλματα χρόνου μεταγλώττισης.
Καταστροφικά σφάλματα χρόνου εκτέλεσης
Τα σφάλματα χρόνου εκτέλεσης μπορεί να προκαλέσουν διακοπή λειτουργίας προγράμματος και να τερματιστεί νωρίς. Παραδείγματα τέτοιων σφαλμάτων είναι η πρόσβαση σε περιορισμένη μνήμη και η διαίρεση με μηδέν. Η δήλωση "x / y" είναι συντακτικά σωστή, αλλά εάν το "y" περιέχει τιμή 0 στο χρόνο εκτέλεσης, το πρόγραμμα θα αποτύχει. Ένας προγραμματιστής μπορεί να δυσκολεύεται να βρει σφάλματα χρόνου εκτέλεσης λόγω του γεγονότος ότι συμβαίνουν συνήθως υπό ορισμένες συνθήκες.
Λογικά σφάλματα χρόνου εκτέλεσης
Ένα λογικό σφάλμα δεν προκαλεί την αποτυχία του προγράμματος, αλλά το κάνει να λειτουργεί με τρόπο που δεν θέλει ο προγραμματιστής. Εξετάστε ένα πρόγραμμα με ένα μενού επιλογών που αναμένει από τον χρήστη να εισαγάγει τον επιθυμητό αριθμό επιλογών. Εάν ο χρήστης εισαγάγει ένα γράμμα, το πρόγραμμα, περιμένοντας έναν αριθμό, μπορεί να το μετατρέψει σε αριθμητική τιμή και να στείλει το χρήστη σε μία από τις επιλογές, μοιάζοντας με τίποτα δεν είναι λάθος αντί να ενημερώσει ότι ο χρήστης έχει πληκτρολογήσει μια μη έγκυρη επιλογή.