Λόγω των περιορισμών εξαιτίας του COVID-19, τα μαθήματα και τα εργαστήρια θα γίνονται online μέσω της πλατφόρμας Microsoft Teams. Για να συνδεθείτε θα χρειαστεί να έχετε κωδικούς πρόσβασης του ΕΜΠ. Το υλικό του μαθήματος θα είναι διαθέσιμο και εκτός του MS Teams. Για να συνδεθείτε με το MS Teams, πριν κάνετε οτιδήποτε άλλο, διαβάστε απαραίτητα τις οδηγίες σύνδεσης και χρήσης. Ο κωδικός του MS Teams για σύνδεση με το μάθημα είναι: 28a4a5e
Το πρώτο μάθημα (διαδικαστικά του μαθήματος και εισαγωγή) θα γίνει την Πέμπτη 25/2, ώρα 12:45.
Τα βίντεο των διαλέξεων του τρέχοντος έτους και περασμένων βρίσκονται συγκεντρωμένα στα παρακάτω αποθετήρια. Σε κάποια από αυτά, είναι πιθανό να πρέπει να συνδεθείτε με τους κωδικούς σας του ΕΜΠ.
Για να εξοικειωθείτε με τη γλώσσα, προσπαθήστε να γράψετε μικρά και μεγαλύτερα προγράμματα σε Llama, είτε απευθείας είτε μεταφράζοντας υπάρχοντα προγράμματά σας από άλλες γλώσσες. Αν στερείστε από ιδέες, δείτε τις εκφωνήσεις των ασκήσεων των εισαγωγικών προγραμματιστικών μαθημάτων εδώ και εδώ (για κάποιες από αυτές, υπάρχουν και υποδειγματικές λύσεις).
Δημοσιεύστε τα προγράμματά σας μέσω του moodle, ώστε να είναι διαθέσιμα και στους υπόλοιπους. Έτσι θα δημιουργηθεί ένα σύνολο προγραμμάτων που αργότερα θα χρησιμεύσουν ως test suite για τους μεταγλωττιστές σας.
Υλοποίηση της γλώσσας Llama, version 1.5 (6/3/2021): εκτελέσιμο bytecode OCaml για εκδόσεις: 3.12.1, 4.01.1, 4.05.0, 4.08.1, 4.10.0.
Θα χρειαστείτε επίσης το μεταγλωττιστή της OCaml (μία από τις παραπάνω εκδόσεις), διαθέσιμο από εδώ.
Λόγω της ομοιότητας μεταξύ OCaml και Llama, ίσως σας φανεί χρήσιμο το υλικό για την OCaml στη σελίδα των εργαλείων.
Γεννήτρια συντακτικά ορθών προγραμμάτων Llama
Πηγαίος κώδικας, σε Erlang, για τη γεννήτρια και την εκτύπωση τυχαίων συντακτικά ορθών προγραμμάτων Llama και ένα μικρό shell script για την εύκολη χρήση τους.
Για να χρησιμοποιήσετε τα παραπάνω, θα χρειαστείτε να έχετε εγκαταστήσει την Erlang και το εργαλείο PropEr.
Βοηθητικά αρχεία που θα σας είναι χρήσιμα στην υλοποίηση:
Πηγαίος κώδικας, σε C (ZIP ή TGZ) και σε OCaml (ZIP ή TGZ). Περιεχόμενα του bonus pack:
Πίνακας κατακερματισμού για ονόματα αναγνωριστικών.
Απλός χειριστής σφαλμάτων.
Πίνακας συμβόλων. Για πληροφορίες σχετικές με τη χρήση του, δείτε το παράδειγμα (symbtest.c ή Symbtest.ml).
Ίσως βρείτε χρήσιμο το συλλέκτη σκουπιδιών (garbage collector) του Hans Boehm, διαθέσιμο από τη σελίδα του. Ίσως χρειαστείτε επίσης τη βιβλιοθήκη libatomic_ops.
Περιβάλλον συμβολομετάφρασης (ZIP) αποτελούμενο από τον Microsoft Macro Assembler 5.10, τον Microsoft Linker 5.10 και τον Microsoft Library Manager 3.17.
Εναλλακτικό περιβάλλον συμβολομετάφρασης (ZIP) αποτελούμενο από τον Microsoft Macro Assembler 6.11d, τον Microsoft Linker 5.31 και τον Microsoft Library Manager 3.20. Αυτή η έκδοση του συμβολομεταφραστή μετασχηματίζει αυτόματα τα relative jumps που είναι εκτός ορίων.
Πιθανώς χρήσιμα scripts (ZIP) για τον έλεγχο του μεταγλωττιστή σας σε Linux με dosbox.