Για τη διεκπεραίωση ενός προβλήματος πρέπει να ακολουθηθεί η εξής διαδικασία: να γραφεί ο αλγόριθμος να συνταχθεί το πρόγραμμα σε γλώσσα υψηλού επιπέδου να μεταφραστεί σε γλώσσα μηχανής να γίνει η επεξεργασία από την CPU να εκτελεστεί η διεργασία.
Γλώσσες προγραμματισμού Γλώσσες μηχανής Συμβολικές γλώσσες ή γλώσσες χαμηλού επιπέδου ή γλώσσες Assembly Γλώσσες υψηλού επιπέδου Γλώσσες 4ης γενιάς
Γλώσσες υψηλού επιπέδου FORTRAN COBOL ALGOL LISP PROLOG BASIC PASCAL C C++ JAVA
Γλώσσα υψηλού επιπέδου vs. Γλώσσα μηχανής Γλώσσες προγραμματισμού υψηλού επιπέδου Ευκολότερη κατανόηση Προστασία από λάθη κατά την έκφραση αλγορίθμων Μεταφερσιμότητα / φορητότητα Γλώσσες Μηχανής Γρηγορότερα και συντομότερα προγράμματα Άμεση πρόσβαση σε στοιχεία του υλικού Συντονισμός
Πλεονεκτήματα των γλωσσών υψηλού επιπέδου Πλεονεκτήματα των γλωσσών υψηλού επιπέδου Φυσικότερος και «ανθρώπινος» τρόπος έκφρασης των προβλημάτων. Η ανεξαρτησία από τον τύπο του υπολογιστή Η ευκολία της εκμάθησης Η διόρθωση λαθών και η συντήρηση προγραμμάτων σε γλώσσα υψηλού επιπέδου είναι πολύ ευκολότερο έργο.
Ειδικά προγράμματα μεταγλωττιστές (compilers) διερμηνευτές (interpreters) συνδέτης-φορτωτής (linker-loader)
Διερμηνευτής (interpreter) Ο διερμηνευτής είναι ένα πρόγραμμα το οποίο διαβάζει, μεταφράζει και εκτελεί δήλωση προς δήλωση προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδου
Μεταγλωττιστής (compiler) Ο μεταγλωττιστής είναι ένα πρόγραμμα το οποίο διαβάζει προγράμματα που έχουν γραφτεί σε μια γλώσσα υψηλού επιπέδου– την πηγαία (source) γλώσσα – και τα μεταφράζει σε ισοδύναμα προγράμματα σε μια άλλη γλώσσα – γλώσσα μεταφοράς (target )
Μεταφραστές vs. Μεταγλωττιστές Πολλαπλή μετάφραση ίδιων δηλώσεων προγράμματος (επιβάρυνση στην ταχύτητα εκτέλεσης) Μεγαλύτερη ικανότητα εντοπισμού σφαλμάτων Ενδείκνυται κατά την ανάπτυξη Μεταγλωττιστές Επαναληπτική εκτέλεση μεταγλωττισμένων προγραμμάτων Ταχύτητα Ενδείκνυται για παραγωγική χρήση
Μεταγλώττιση και σύνδεση του προγράμματος Αρχικό Πρόγραμμα Μεταγλωττιστής Τελικό Συνδέτης Εκτελέσιμο
Διαδικασία μεταγλώττισης Αρχή Συγγραφή/Επεξεργασία Πηγαίου Κώδικα Μεταγλώττιση Πηγαίου Κώδικα ναι Συντακτικά Λάθη; Βιβλιοθήκες Object αρχεία όχι Σύνδεση (Link) Εκτέλεση ναι Λάθη; όχι ΤΕΛΟΣ
Το εκτελέσιμο πρόγραμμα δημιουργείται μόνο αν το αρχικό πρόγραμμα (πηγαίο) δεν περιέχει συντακτικά λάθη. Τα λάθη είναι συντακτικά (λάθος εντολές, αναγραμματισμοί, παράληψη δήλωσης μεταβλητών κλπ) και λογικά (λάθη λογικής, αλγορίθμου κλπ). Τα συντακτικά λάθη ανιχνεύονται από το μεταγλωττιστή (ή τον διερμηνευτή) και εμφανίζονται κατάλληλα διαγνωστικά μηνύματα. Το πρόγραμμα πρέπει να διορθωθεί και να μεταγλωττισθεί ξανά . Η διαδικασία επαναλαμβάνεται μέχρις ότου δεν ανιχνεύονται άλλα λάθη και δημιουργηθεί το αντικείμενο πρόγραμμα. Τα λογικά λάθη δεν ανιχνεύονται από τους μεταγλωττιστές και εμφανίζονται κατά την εκτέλεση και τον έλεγχο του προγράμματος με πραγματικά δεδομένα. Πρέπει να διορθωθεί ο αλγόριθμος και φυσικά να επαναληφθεί η μεταγλώττιση. 12
Ο διερμηνευτής (interpreter) έχει το πλεονέκτημα της άμεσης εκτέλεσης των εντολών και συνεπώς της άμεσης διόρθωσης σε περίπτωση λάθους. Μειονεκτεί στην ταχύτητα σε σχέση με το μεταγλωττιστή. Ο μεταγλωττιστής (compiler) μειονεκτεί σε σχέση με το διερμηνευτή αφού δεν εκτελεί αμέσως τις εντολές, αλλά πρέπει το πρόγραμμα να περάσει από τη διαδικασία της μεταγλώττισης και σύνδεσης για να γίνει εκτελέσιμο. Ένα προγραμματιστικό περιβάλλον πρέπει να περιέχει τουλάχιστον συντάκτη, μεταγλωττιστή και συνδέτη για τη δημιουργία, μετάφραση και εκτέλεση του προγράμματος. Τα σύγχρονα προγραμματιστικά περιβάλλοντα συνήθως χρησιμοποιούν διερμηνευτή κατά τη φάση της δημιουργίας του προγράμματος και μεταγλωττιστή για την τελική δημιουργία του εκτελέσιμου προγράμματος. 13
Ταξινόμηση γλωσσών προγραμματισμού Αντικειμενοστραφείς γλώσσες (object-oriented languages). Συναρτησιακές γλώσσες (functional languages) π.χ LISP. Μη διαδικασιακές γλώσσες (non procedural languages) π.χ PROLOG. Χαρακτηρίζονται επίσης ως γλώσσες πολύ υψηλού επιπέδου. Γλώσσες ερωταπαντήσεων (query languages) π.χ SQL
Ταξινόμηση βάσει της περιοχής χρήσης Γλώσσες γενικής χρήσης Γλώσσες επιστημονικής κατεύθυνσης (science oriented languages) π.χ FORTRAN Γλώσσες εμπορικής κατεύθυνσης (business-oriented language) π.χ COBOL
Τεχνικές σχεδίασης προγραμμάτων Ιεραρχική σχεδίαση προγράμματος Τμηματικός προγραμματισμός Δομημένος προγραμματισμός
Πλεονεκτήματα του δομημένου προγραμματισμού Δημιουργία απλούστερων προγραμμάτων Άμεση μεταφορά των αλγορίθμων σε προγράμματα Διευκόλυνση ανάλυσης του προγράμματος σε τμήματα Περιορισμός των λαθών κατά την ανάπτυξη του προγράμματος Διευκόλυνση στην ανάγνωση και κατανόηση του προγράμματος από τρίτους Ευκολότερη διόρθωση και συντήρηση
ΑΝΤΙΚΕΙΜΕΝΟΣΤΡΑΦΗΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Θεωρεί ως πρωτεύοντα δομικά στοιχεία τα δεδομένα από τα οποία δημιουργούνται με κατάλληλη μορφοποίηση τα αντικείμενα. Τα δεδομένα αποτελούν τα χαρακτηριστικά ενός αντικειμένου. Το πρόγραμμα περιγράφει ενέργειες που εφαρμόζονται πάνω στα δεδομένα. Οι ενέργειες περιγράφουν τη συμπεριφορά των αντικειμένων. Τα προγράμματα που προκύπτουν είναι πιο ευέλικτα και επαναχρησιμοποιήσιμα. Ο ΑΠ χρησιμοποιεί την ιεραρχική σχεδίαση, τον τμηματικό προγραμματισμό και ακολουθεί τις αρχές του δομημένου προγραμματισμού.
ΠΑΡΑΛΛΗΛΟΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΣ Το πρόγραμμα εκτελείται σε Η/Υ που διαθέτει παράλληλους επεξεργαστές οι οποίοι χρησιμοποιούν κοινή μνήμη. Το πρόγραμμα διαιρείται σε τμήματα που εκτελούνται παράλληλα. Τα τμήματα αυτά προγραμματίζονται σε περιβάλλον που επιτρέπει τον παράλληλο προγραμματισμό.