Αρχές Γλωσσών Προγραμματισμού

Ακαδημαϊκό Έτος 2017-2018

Ώρες διδασκαλίας του μαθήματος

Τρίτη 13:00 15:00 (Αίθουσα A1)

Παρασκευή 13:00 15:00 (Αίθουσα A1)

Ύλη του μαθήματος

Ιστορία των γλωσσών προγραμματισμού. Συντακτικό και σημασιολογία. Τύποι δεδομένων, εμβέλεια, διαδικασίες,

μέθοδοι περάσματος παραμέτρων, υλοποίηση διαδικασιών. Βασικές κατηγορίες γλωσσών προγραμματισμού:

διαδικαστικές, αντικειμενοστραφείς, λογικές, συναρτησιακές, παράλληλες (κύρια χαρακτηριστικά της κάθε

κατηγορίας και αντιπροσωπευτικές γλώσσες). Θεωρητικά θέματα γλωσσών προγραμματισμού. Τεχνικές

μετασχηματισμού και βελτιστοποίησης προγραμμάτων. Απόδειξη ορθότητας προγραμμάτων με τη χρήση

της λογικής (λογική Floyd-Hoare). Λάμδα-λογισμός χωρίς τύπους: μετατροπές, κανονικές μορφές, θεώρημα

Church-Rosser, εκφραστική ισχύς, εφαρμογές στις γλώσσες προγραμματισμού. Λάμδα-λογισμός με τύπους.

Θεωρία τύπων και συστήματα εξαγωγής τύπων.

Συγγράμματα

Βαθμολογία

Θα υπάρχουν ασκήσεις (με συντελεστή 30% συνολικά) και ένα τελικό διαγώνισμα (70%). Οι βαθμοί των εργασιών δεν "κρατιούνται" για επόμενες χρονιές.

Διαλέξεις

Οι διαφάνειες που χρησιμοποιούνται στο μάθημα είναι οι ακόλουθες:

Μια ενδιαφέρουσα σύνοψη της ιστορίας των γλωσσών προγραμματισμού.

Μια λίστα με τις περισσότερο γνωστές γλώσσες προγραμματισμού.

Αν οι γλώσσες προγραμματισμού ήταν αυτοκίνητα...

Παράδειγμα περιγραφής μιας απλής γλώσσας προγραμματισμού: specification.pdf

Backus Normal Form vs Backus-Naur Form

 

Ο Danna Scott (δες επίσης και εδώ) και ο Christopher Strachey θεωρούνται οι πρωτεργάτες της Σημασιολογίας

Γλωσσών Προγραμματισμού. Η διάλεξη του Dana Scott για το Turing Award.

 

Για εισαγωγή, διαβάστε το σχετικό άρθρο της wikipedia. Αν θέλετε μπορείτε να

ρίξετε μια ματιά και στο μεταπτυχιακό μάθημα που γίνεται στο τμήμα μας.

 

Μερικά από τα πιο γνωστά προβλήματα που έχουν προκληθεί από απλά προγραμματιστικά

ή αλγοριθμικά σφάλματα: Therac-25, AT&T telephone network collapse, Pentium error, Ariane-5 space explosion.

Ακόμη περισσότερα αλγοριθμικά σφάλματα. Αν ακόμη δεν έχετε πεισθεί για τη χρησιμότητα της λογικής των Floyd-Hoare, διαβάστε και αυτό.

 

Πολύ καλές σημειώσεις για την τεχνική των Floyd-Hoare.

 

Τα πρώτα βήματα του λογικού προγραμματισμού.

 

Διαφάνειες και σημειώσεις του Χρήστου Νομικού για Haskell.

 

 

 

Ενδιαφέρον βίντεο για το (πιθανό) μέλλον των γλωσσών προγραμματισμού.

 

Επιπλέον υλικό για μελέτη

Σημειώσεις και διαφάνειες (του Χ. Νομικού) για το μάθημα Αρχές Γλωσσών Προγραμματισμού του Τμ. Πληροφορικής του Πανεπ. Ιωαννίνων.

Εργασίες 2016-2017

Πρώτη εργασία. Παράδοση 7/12/2017, 23:59μμ.

Βαθμοί πρώτης εργασίας.

Δεύτερη εργασία. Παράδοση xx/yy/20??, 23:59μμ.

Βαθμοί δεύτερης εργασίας.

Τρίτη εργασία. Παράδοση εργασίας: xx/yy/2018, 23.59μμ.

Εξετάσεις

Για να λάβει κάποιος μέρος στην τελική εξέταση του μαθήματος, θα πρέπει να έχει παραδώσει τις δύο πρώτες εργασίες με προβιβάσιμο βαθμό.

Αν συντρέχει κάποιος ιδιαίτερα σοβαρός λόγος για τον οποίο η προηγούμενη συνθήκη δεν ισχύει, παρακαλώ επικοινωνήστε μαζί μου.

Χριστουγεννιάτικο Σεμινάριο σε Γλώσσες Προγραμματισμού

Στις 28/12/2016, θα λάβει χώρα στο ΕΜΠ το 14ο Ετήσιο Σεμινάριο σε Γλώσσες Προγραμματισμού. Οδηγίες για το πώς να έρθετε, υπάρχουν εδώ και εδώ.

Ευχαριστίες

Ευχαριστώ τον Αντώνη Τρουμπούκη που μετέφερε το σύνολο των παραπάνω διαφανειών από Powerpoint σε Latex.