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

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

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

Πέμπτη 15:00 17:00 (αίθουσα Α2)

 

Πριν την έναρξη του ακαδημαϊκού έτους, θα πρέπει να εγγραφείτε στο μάθημα στο eclass.

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

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

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

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

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

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

της λογικής (λογική 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.

 

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

Ο Alain Colmerauer και o Robert Kowalski, δύο πρωτεργάτες του Λογικού Προγραμματισμού.

 

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

Διαφάνειες του Άγγελου Χαραλαμπίδη για πιο προχωρημένα χαρακτηριστικά της Haskell.

 

 

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

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

Εργασίες

Οι εργασίες ανακοινώνονται μέσω eclass.

Hall of Fame

Τα τελευταία χρόνια έχει γίνει παράδοση να ετοιμάζουν την 3η εργασία κάποιοι από τους φοιτητές που πήραν το μάθημα

το προηγούμενο ακαδημαϊκό έτος:

       2022-2023: Νικόλαος Αλεξανδρής, Χαράλαμπος Μαραζιάρης, Γεώργιος Σίττας, Κωνσταντίνος Τσικούρης [Project: MiniHaskell]

       2021-2022: Μαρκέλλα Γκιόκα [Project: Κανονικές Εκφράσεις]

       2020-2021: Κωνσταντίνος Λάκης [Project: Santorini]

       2019-2020: Νίκος Καρυστινός, Ηλίας Τσατίρης [Project: Turing Machines]

       2018-2019: Μάρκος Βολίκας, Μιχάλης Μπιζίμης [Project: Pancakes]

       2017-2018: Σπύρος Αυλωνίτης, Γιάννος Χατζηαγάπης [Project: Rush-Hour]

       2016-2017: Κωνσταντίνος Τριανταφύλλου, Νίκος Φιλιππάκης [Project: Perfect Mazes]

       2015-2016: Γιάννος Βαστάκης [Project: Lambda Calculus]

Εξετάσεις

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

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

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

Στις 28/12/2022 (ώρα έναρξης 10.00πμ), θα λάβει χώρα το ετήσιο Σεμινάριο σε Γλώσσες Προγραμματισμού (Athens Programming Language Seminar), που διοργανώνεται από το SoftLab του ΕΜΠ. Το σεμινάριο θα γίνει στο αμφιθέατρο Πολυμέσων, το οποίο βρίσκεται στο ισόγειο της κεντρικής βιβλιοθήκης του ΕΜΠ. Ο σχετικός χάρτης υπάρχει εδώ.

Ευχαριστίες

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