Αρχές Γλωσσών Προγραμματισμού και Μεταφραστών¶
Επίσημο περίγραμμα μαθήματος του ΤΜΗΥΠ (Πανεπιστήμιο Πατρών), όπως δημοσιεύεται στη σελίδα του μαθήματος και στο συνημμένο αρχείο «Περίγραμμα Μαθήματος». Το κείμενο παρατίθεται αυτούσιο, χωρίς τα πρότυπα οδηγιών του εντύπου.
Στόχοι¶
- Με την ολοκλήρωση της διδασκαλίας του μαθήματος, οι φοιτητές θα είναι ικανοί να:
- Κατανοούν το συνολικό πλαίσιο και ιστορικό της ανάπτυξης και χρήσης των διαφόρων παραδειγμάτων γλωσσών προγραμματισμού.
- Γνωρίζουν τα βασικά κριτήρια καλού σχεδιασμού και επιτυχίας μιας γλώσσας προγραμματισμού.
- Γνωρίζουν τη λειτουργία των μεταφραστών και διερμηνευτών, τις διαφορές τους και τα περιβάλλοντα χρήσης τους.
- Διακρίνουν τα διαφορετικά επίπεδα συντακτικών στοιχείων των γλωσσών προγραμματισμού.
- Κατασκευάζουν τυπικές γραμματικές που είναι μέρος των τυπικών γλωσσών, θεωρητικού μοντέλου περιγραφής του συντακτικού των γλωσσών προγραμματισμού.
- Υλοποιούν λεξικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με πεπερασμένα αυτόματα και κανονικές εκφράσεις, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το flex.
- Υλοποιούν συντακτικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με γραμματικές χωρίς συμφραζόμενα χρησιμοποιώντας σημειογραφία BNF, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το bison.
- Γνωρίζουν τον τρόπο που υλοποιούν και χειρίζονται οι διάφορες γλώσσες προγραμματισμού, τα συντακτικά στοιχεία ανώτερου επιπέδου όπως μεταβλητές, εκφράσεις, εντολές.
- Ορίζουν κατάλληλους τύπους δεδομένων στα προγράμματά τους, αξιοποιώντας τις δυνατότητες που προσφέρουν οι διαφορετικές γλώσσες προγραμματισμού.
- Γνωρίζουν τους δύο βασικούς κανόνες εμβέλειας (στατικός και δυναμικός) και τους τρόπους υλοποίησής τους στις διάφορες γλώσσες προγραμματισμού.
- Γνωρίζουν τους μηχανισμούς δέσμευσης και διαχείρισης μνήμης κατά την εκτέλεση ενός προγράμματος.
- Γνωρίζουν τα είδη, τα συστατικά, τα χαρακτηριστικά και τις σχεδιαστικές προκλήσεις για τη χρήση υποπρογραμμάτων.
- Προγραμματίζουν χρησιμοποιώντας υποπρογράμματα, αξιοποιώντας τους διαφορετικούς τρόπους μεταβίβασης παραμέτρων που υποστηρίζουν οι γλώσσες προγραμματισμού.
- Γνωρίζουν τα βασικά χαρακτηριστικά των διαφορετικών παραδειγμάτων προγραμματισμού, συγκεκριμένα του συναρτησιακού και του λογικού προγραμματισμού. Με την ολοκλήρωση της διδασκαλίας του μαθήματος, οι φοιτητές θα έχουν αναπτύξει τις ακόλουθες δεξιότητες:
- Θα έχουν αποκτήσει μια συνολική άποψη για τη δομή, τον τρόπο λειτουργίας και τις δυνατότητες των σύγχρονων γλωσσών προγραμματισμού.
- Θα μπορούν να κατασκευάζουν τυπικές γραμματικές.
- Θα υλοποιούν λεξικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με πεπερασμένα αυτόματα και κανονικές εκφράσεις, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το flex.
- Θα υλοποιούν συντακτικούς αναλυτές, τόσο τη θεωρητική τους περιγραφή με γραμματικές χωρίς συμφραζόμενα χρησιμοποιώντας σημειογραφία BNF, όσο και προγραμματίζοντας σχετικά εργαλεία όπως το bison.
- Θα ορίζουν κατάλληλους τύπους δεδομένων στα προγράμματά τους, αξιοποιώντας τις δυνατότητες που προσφέρουν οι διαφορετικές γλώσσες προγραμματισμού.
- Θα προγραμματίζουν χρησιμοποιώντας υποπρογράμματα, αξιοποιώντας τους διαφορετικούς τρόπους μεταβίβασης παραμέτρων που υποστηρίζουν οι γλώσσες προγραμματισμού.
Περιεχόμενο (ύλη)¶
- Εισαγωγή στις γλώσσες προγραμματισμού
- Ιστορική εξέλιξη των γλωσσών προγραμματισμού
- Μεταφραστές και διερμηνευτές
- Σύνταξη των γλωσσών προγραμματισμού
- Λεξική ανάλυση
- Συντακτική ανάλυση
- Μεταβλητές, Εκφράσεις, Εντολές
- Τύποι Δεδομένων
- Εμβέλεια και χρόνος δέσμευσης της μνήμης
- Υποπρογράμματα
- Συναρτησιακός προγραμματισμός
- Λογικός προγραμματισμός
Αξιολόγηση¶
- Γλώσσα αξιολόγησης: Ελληνική (Αγγλικά αν χρειαστεί)
- Τελική εξέταση (100% της συνολικής βαθμολογίας). Τα κριτήρια αξιολόγησης είναι αναρτημένα στην ιστοσελίδα του μαθήματος.
- Γραπτή, διαβαθμισμένης δυσκολίας, που μπορεί να περιλαμβάνει: ανάπτυξη και επίλυση σύνθετων προβλημάτων, ερωτήσεις σύντομης απάντησης, ερωτήσεις κρίσεως στη θεωρία.
- Εργασία θεωρητικού και (κυρίως) προγραμματιστικού χαρακτήρα, με σκοπό την εξοικείωση των φοιτητών με το θεωρητικό υπόβαθρο περιγραφής τυπικών γραμματικών και με τα εργαλεία flex, bison για την κατασκευή λεξικών και συντακτικών αναλυτών αντιστοίχως.
Βιβλιογραφία¶
- Michael L. Scott, “Πραγματολογία των Γλωσσών Προγραμματισμού”, 2009, ΚΛΕΙΔΑΡΙΘΜΟΣ
- Robert W. Sebesta, “Αρχές Γλωσσών Προγραμματισμού”, 11η Έκδοση, 2017, Μ. Γκιούρδας
-Συναφή επιστημονικά περιοδικά:
Είναι εισαγωγικό μάθημα, οπότε δεν γίνεται χρήση επιστημονικής βιβλιογραφίας από περιοδικά.