Εθνικό Μετσόβιο Πολυτεχνείο
Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών
Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών

Γλώσσες Προγραμματισμού ΙΙ

https://courses.softlab.ntua.gr/pl2/

Γλώσσες Προγραμματισμού ΙΙ

Κατ' επιλογήν υποχρεωτικό μάθημα ροής Λ, 9ου εξαμήνου, κωδικός 3.4.58.9

Εξάμηνο: Χειμερινό 2005
Διδάσκοντες:
Γιάννης Μαΐστρος   ()   γρ. 2.1.5   τηλ: 210-772-2511
Νίκος Παπασπύρου   ()   γρ. 1.1.21   τηλ: 210-772-3393

 

Ανακοινώσεις

11/4/2006

Ανακοινώθηκε η τελική βαθμολογία της κανονικής εξεταστικής περιόδου (Φεβρουάριος 2006). Όσοι σπουδαστές έχουν ακόμα εκκρεμότητες με τις ασκήσεις, να επικοινωνήσουν άμεσα με τους διδάσκοντες.

13/3/2006

Ανακοινώθηκε η βαθμολογία της κανονικής εξεταστικής περιόδου (Φεβρουάριος 2006).

11/10/2005

Οι διαλέξεις του μαθήματος θα διεξάγονται κάθε Τρίτη, ώρα 15:00-18:00, στην Αίθουσα 0.1.15 του Κτιρίου Ηλεκτρολόγων.

 

Υλικό

Γενικά

Το μάθημα χωρίζεται σε δύο μέρη ως ακολούθως. Το ίδιο και η βαθμολογία (αν και το ποσοστό κάθε μέρους δεν είναι αυστηρά 50%, προκειμένου να πριμοδοτηθούν σπουδαστές με κλίση/ενδιαφέρον σε κάποιο από τα δύο μέρη) .

Χρήσιμο υλικό από τις παραδόσεις του κ. Μαΐστρου, για το μέρος του μαθήματος που σχετίζεται με την επεξεργασία φυσικής γλώσσας, είναι διαθέσιμο στη σελίδα:

http://glotta.ntua.gr/nlp/courses/Lang2.htm

   ΠΡΟΣΟΧΗ: Τα παρακάτω αφορούν μόνο στο μέρος του μαθήματος που σχετίζεται με τη θεωρία γλωσσών προγραμματισμού.

Διαφάνειες

Οι διαφάνειες που θα χρησιμοποιούνται στις διαλέξεις είναι διαθέσιμες από την παρούσα σελίδα για τη διευκόλυνση των σπουδαστών, ώστε αυτοί να μη χρειάζεται να κρατούν εκτενείς σημειώσεις κατά τη διάρκεια των μαθημάτων. Η ύλη των διαφανειών παρουσιάζεται αναλυτικά στις σημειώσεις του μαθήματος. Μη σπεύσετε να εκτυπώσετε τις διαφάνειες στην παρούσα μορφή. Πρόκειται να τροποποιηθούν κατά τη διάρκεια του εξαμήνου.

Προγραμματιστική άσκηση

Παραδώστε τα παρακάτω με e-mail στο διδάσκοντα το αργότερο δέκα ημερολογιακές μέρες μετά το τέλος της εξεταστικής περιόδου. Η άσκηση είναι προαιρετική και μετράει θετικά μέχρι του 20% της βαθμολογίας του μέρους του μαθήματος που σχετίζεται με τη θεωρία γλωσσών προγραμματισμού.

  1. Προδιαγράψτε μια γλώσσα εκφράσεων συνδυάζοντας χαρακτηριστικά που παρουσιάστηκαν στις παραδόσεις με τίτλο Συστήματα Τύπων (25/10 , 8/11 και 29/11, βλ. σχετικές διαφάνειες). Η γλώσσα σας θα πρέπει να περιέχει τουλάχιστον: τους βασικούς τύπους, τον τύπο συναρτήσεων και μία ακόμα επέκταση. Για τη γλώσσα αυτή δώστε:
  2. Στη γλώσσα προγραμματισμού της αρεσκείας σας, υλοποιήστε έναν ελεγκτή τύπων (type checker) και ένα διερμηνέα (interpreter) βασισμένο στη λειτουργική σημασιολογία της παραπάνω γλώσσας. Μην ασχοληθείτε με τη λεκτική και συντακτική ανάλυση των εκφράσεων, αλλά θεωρήστε ότι ο αρχικός κώδικας δίνεται σε κατάλληλη αφηρημένη μορφή.
  3. Ελέγξτε την ορθότητα της υλοποίησής σας με κατάλληλα παραδείγματα εκφράσεων.

Όσοι θα ήθελαν να χρησιμοποιήσουν μια γλώσσα συναρτησιακού προγραμματισμού για την υλοποίηση του ελεγκτή τύπων και του διερμηνέα (μέρος 2 της άσκησης) παραπέμπονται στη βιβλιογραφία, όπου μπορούν να βρούν πληροφορίες για τις γλώσσες Haskell, Ocaml και Clean.

Επίσης, ίσως βρείτε χρήσιμο το περισυνό παράδειγμα υλοποίησης ενός απλού διερμηνέα εκφράσεων σε Haskell: hs (1,6KB)

Παλαιότερα έτη

 

Διαλέξεις

Παράδοση 11/10/2005

Παράδοση 18/10/2005

Παράδοση 25/10/2005

Παράδοση 1/11/2005

Παράδοση 8/11/2005

Παράδοση 22/11/2005

Παράδοση 29/11/2005

Παράδοση 6/12/2005

Παράδοση 13/12/2005

Παράδοση 20/12/2005

Παράδοση 10/1/2006

 

Τελευταία αλλαγή: 31/10/06, 19:53.