Γλώσσες Προγραμματισμού ΙΙ
Κατ' επιλογήν υποχρεωτικό μάθημα ροής Λ, 9ου εξαμήνου, κωδικός 3.4.58.9
Εξάμηνο:
Χειμερινό 2007
Διδάσκοντες:
Κωστής Σαγώνας
(kostis (AT) cs (DOT) ntua.gr )
γρ. 1.1.21
τηλ: 210-772-2487
Νίκος Παπασπύρου
(nickie (AT) softlab (DOT) ntua.gr )
γρ. 1.1.21
τηλ: 210-772-3393
Ανακοινώσεις
| Υλικό: Γενικά , Moodle , Ασκήσεις , Διαφάνειες , Παλαιότερα έτη
Διαλέξεις: 7/11 | 14/11 | 21/11 | 28/11 | 5/12 | 13/12 | 9/1 | 16/1 | 23/1 | 6/2 | 14/2
Ανακοινώσεις
10/6/2008
Ανακοινώθηκε η βαθμολογία της
κανονικής εξεταστικής περιόδου.
6/2/2008
ΠΡΟΣΟΧΗ: Το (τελευταίο) μάθημα της 13/2 μεταφέρεται την Πέμπτη 14/2, ώρα 12:30 , στην Αίθουσα 04 του Νέου Κτιρίου Ηλεκτρολόγων.
19/12/2007
Το μάθημα της 19/12 δεν έγινε, λόγω της απεργίας των μηχανικών μελών ΔΕΠ.
7/11/2007
Οι διαλέξεις του μαθήματος άρχισαν σήμερα. Θα διεξάγονται κάθε Τετάρτη,
ώρα 11:45-14:30 , στην Αίθουσα 03 του Νέου Κτιρίου Ηλεκτρολόγων.
Υλικό
Γενικά
Ασκήσεις
Οι ασκήσεις πρέπει να παραδοθούν στους διδάσκοντες σε ηλεκτρονική
μορφή μέσω του συνεργατικού συστήματος ηλεκτρονικής μάθησης Moodle .
Η προθεσμία παράδοσης θα τηρείται αυστηρά.
Έχετε δικαίωμα να καθυστερήσετε το πολύ μία άσκηση.
1
λ-λογισμός και εξαγωγή τύπων
28/11/2007
PDF (107KB)
2+3
Συστήματα τύπων
5/12/2007
PDF (99KB)
4+5
Εικονικές μηχανές και υλοποίηση γλωσσών λογικού προγραμματισμού
11/1/2008
PDF (95KB)
6+7
Haskell και υλοποίηση γλωσσών συναρτησιακού προγραμματισμού
11/2/2008
PDF (92KB)
8
Γλώσσες σεναρίων
19/2/2008
PDF (79KB)
9
Ταυτοχρονισμός στη Java
19/2/2008
PDF (98KB)
10
Δηλωτική σημασιολογία
25/3/2008
PDF (124KB)
11
Αξιωματική σημασιολογία
25/3/2008
PDF (70KB)
Διαφάνειες
Οι διαφάνειες που θα χρησιμοποιούνται στις διαλέξεις είναι διαθέσιμες από την παρούσα σελίδα για τη διευκόλυνση των σπουδαστών, ώστε αυτοί να μη χρειάζεται να κρατούν εκτενείς σημειώσεις κατά τη διάρκεια των μαθημάτων. Η ύλη των διαφανειών παρουσιάζεται αναλυτικά στις σημειώσεις του μαθήματος.
λ-λογισμός και εξαγωγή τύπων: PDF (308KB) ή PDF (281KB)
Συστήματα τύπων: PDF (406KB) ή PDF (357KB)
Εικονικές μηχανές, διερμηνείς και δυναμική διαχείριση μνήμης: PDF (530KB)
Στοιχεία υλοποίησης γλωσσών λογικού προγραμματισμού: PDF (215KB)
Η γλώσσα Haskell: PDF και PDF (85+104KB)
Στοιχεία υλοποίησης γλωσσών συναρτησιακού προγραμματισμού: PDF (129KB)
Γλώσσες σεναρίων: PDF και γλώσσα Python: PDF (76+70KB)
Δηλωτική σημασιολογία: PDF (277KB) ή PDF (256KB)
Αξιωματική σημασιολογία: PDF (175KB) ή PDF (169KB)
Σημείωση: PDF — μορφή για παρουσίαση / PDF — μορφή για εκτύπωση.
Παλαιότερα έτη
Διαλέξεις
Παράδοση 7/11/2007
Θέματα διεξαγωγής του μαθήματος
Λάμβδα λογισμός
Εισαγωγή
Διαισθητική περιγραφή
Σύνταξη, ελεύθερες μεταβλητές, αντικατάσταση
Μετατροπές α, β και η, αναγωγές και ισότητα
Κανονικές μορφές
Ιδιότητες του λ-λογισμού
Εκφραστική δύναμη του λ-λογισμού
Εξαγωγή τύπων (type inference)
Παραδείγματα σε OCaml
Εξαγωγή τύπων στην πράξη
Περιορισμοί και επίλυση
Εφαρμογή στο λ-λογισμό
Παράδοση 14/11/2007
Διευκρινίσεις και παραδείγματα για την 1η άσκηση
Συστήματα τύπων
Εισαγωγή
Βασικοί τύποι
Σύνταξη
Λειτουργική σημασιολογία
Κανόνες τύπων
Ιδιότητες του συστήματος τύπων
Τύποι συναρτήσεων
Παράδοση 21/11/2007
Συστήματα τύπων
(συνέχεια)
Απλές επεκτάσεις
Ο τύπος μονάδας — Unit
Ακολουθιακή αποτίμηση
Απόδοση ονομάτων — δομή let
Ζεύγη
Αθροίσματα
Αναδρομή
Αναφορές
Εξαιρέσεις
Υποτύποι
Αναδρομικοί τύποι
Πολυμορφισμός 2ης τάξης
Πολυμορφισμός υψηλής τάξης
Υπαρξιακοί τύποι
Εξαρτώμενοι τύποι
Παράδοση 28/11/2007
Εικονικές μηχανές, διερμηνείς και δυναμική διαχείριση μνήμης
Εικονικές μηχανές
Ορισμός και παραδείγματα
Πλεονεκτήματα και μειονεκτήματα
Επιλογές σχεδιασμού και συστατικά των εικονικών μηχανών
Υλοποίηση των εικονικών μηχανών
Διερμηνείς
Μορφές διερμηνέων
Δομή των bytecode interpreters
Άμεσα και έμμεσα νηματικοί διερμηνείς
(threaded code interpreters)
Συγχώνευση και εξειδίκευση εντολών
Δυναμική διαχείριση μνήμης
Στοίβες (stacks) και σωροί (heaps)
Τρέχοντες σύνδεσμοι στο σωρό
Αλγόριθμοι συλλογής σκουπιδιών
Μαρκάρισμα και σκούπισμα (mark and sweep)
Αντιγραφή (copying)
Μέτρημα αναφορών (reference counting)
Παράδοση 5/12/2007
Στοιχεία υλοποίησης γλωσσών λογικού προγραμματισμού
Ιστορία των υλοποιήσεων της Prolog
Η αφηρημένη μηχανή του Warren
Αναπαράσταση όρων και μεταβλητών
Πέρασμα παραμέτρων
Εντολές της αφηρημένης μηχανής
Υλοποίηση της οπισθοδρόμησης
Διαχείριση μνήμης
Παράδοση 13/12/2007
Η γλώσσα Haskell
Ορισμοί, συναρτήσεις, εκφράσεις και τιμές
Αυστηρό σύστημα τύπων με αυτόματη εξαγωγή τύπων
Δηλώσεις νέων τύπων και αναδρομικές δομές δεδομένων
Συναρτήσεις υψηλής τάξης
Διαφάνεια αναφοράς
Κλάσεις τύπων (type classes)
Οκνηρή αποτίμηση
Παρενέργεις στη Haskell
Παράδοση 9/1/2008
Στοιχεία υλοποίησης γλωσσών συναρτησιακού προγραμματισμού
Συναρτήσεις υψηλής τάξης και closures
Διαφάνεια αναφοράς και βελτιστοποίηση αγνών συναρτήσεων
Inline expansion
Closure conversion
Αποδοτική υλοποίηση αναδρομής ουράς (tail recursion)
Οκνηρή αποτίμηση (lazy evaluation)
Βελτιστοποίηση οκνηρών συναρτήσεων
Strictness analysis
Παράδοση 16/1/2008
Γλώσσες σεναρίων (scripting languages)
Γλώσσες σεναρίων και χαρακτηριστικά τους
Παραδείγματα χρήσης της γλώσσας
Ruby σε εφαρμογές
Σύντομη επισκόπηση των κυριότερων γλωσσών σεναρίων
Η γλώσσα Python
Κύρια χαρακτηριστικά
Στοιχεία σχεδιασμού και υλοποίησης
Demo χρήσης
Παράδοση 23/1/2008
Ταυτοχρονισμός και γλώσσες προγραμματισμού
Παράδοση 6/2/2008
Σημασιολογία
Δηλωτική σημασιολογία
Μια απλή γλώσσα δυαδικών συμβολοσειρών
Μια απλή προστακτική γλώσσα
Σημασιολογία αριθμητικών και λογικών εκφράσεων
Σημασιολογία εντολών
Μεταβλητές και αναθέσεις
Αόριστες επαναλήψεις, εντολή while
Παράδειγμα υλοποίησης δηλωτικής σημασιολογίας σε Haskell: densem.hs (ημιτελές)
Παράδοση 14/2/2008
Θεωρία πεδίων
Ορισμοί
Κατασκευές πεδίων
Μονότονες και συνεχείς συναρτήσεις
Θεώρημα ελάχιστου σταθερού σημείου
Δηλωτική σημασιολογία (συνέχεια)
Μια απλή προστακτική γλώσσα (ξανά)
Σημασιολογία του λ-λογισμού
Αξιωματική σημασιολογία
Τριάδες Hoare
Μια απλή προστακτική γλώσσα
Τελευταία αλλαγή: 10/6/08 15:58.
webmaster (AT) courses (DOT) softlab.ntua.gr