HEAL DSpace

Destructive Update με γραμμικούς τύπους

Αποθετήριο DSpace/Manakin

Εμφάνιση απλής εγγραφής

dc.contributor.author Μόσχος, Αλέξανδρος-Πέτρος el
dc.contributor.author Moschos, Alexandros-Petros en
dc.date.accessioned 2018-10-23T11:17:13Z
dc.date.available 2018-10-23T11:17:13Z
dc.date.issued 2018-10-23
dc.identifier.uri https://dspace.lib.ntua.gr/xmlui/handle/123456789/47834
dc.identifier.uri http://dx.doi.org/10.26240/heal.ntua.15852
dc.rights Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα *
dc.rights.uri http://creativecommons.org/licenses/by-nc-nd/3.0/gr/ *
dc.subject Γραμμικοί τύποι el
dc.subject Linear types en
dc.subject Γλώσσες προγραμματισμού el
dc.subject Programming languages en
dc.subject Functional programming en
dc.subject Συναρτησιακός προγραμματισμός el
dc.subject Συμπερασμός τύπων el
dc.subject Type inference en
dc.subject Destructive update en
dc.subject Μεταγλωττιστές el
dc.title Destructive Update με γραμμικούς τύπους el
heal.type bachelorThesis
heal.classification Επιστήμη υπολογιστών el
heal.classification Γλώσσες προγραμματισμού el
heal.classification Πληροφορική el
heal.classificationURI http://data.seab.gr/concepts/77de68daecd823babbb58edb1c8e14d7106e83bb
heal.classificationURI http://data.seab.gr/concepts/983b34771fb7185d04c9603559c9e46f4b70496d
heal.language el
heal.access free
heal.recordProvider ntua el
heal.publicationDate 2018-08-29
heal.abstract Σκοπός της παρούσας εργασίας είναι η χρήση των γραμμικών τύπων για τον ορισμό και την υλοποίηση μιας γλώσσας που υλοποιεί τις εγγραφές σε πίνακα καταστροφικά με ασφαλή τρόπο. Θέλουμε ο προγραμματιστής να γράφει κώδικα χωρίς επισημειώσεις τύπων με πίνακες χρησιμοποιώντας ένα αγνά συναρτησιακό interface, και ο μεταγλωττιστής, εφόσον είναι ασφαλές, να υλοποιεί τις εγγραφές in-place. Στο πλάισιο της εργασίας ορίστηκε τυπικά, η σύνταξη, το σύστημα τύπων και η λειτουργική σημασιολογία της ενδιάμεσης γλώσσας letdo η οποία βασίζεται σε ένα γραμμικό σύστημα τύπων. Οι γραμμικοί τύποι προσφέρουν την ιδιότητα ότι κάθε πίνακας θα χρησιμοποιηθεί ακριβώς μία φορά. Για να προσαρμόσουμε την γλώσσα στο ζητούμενο συναρτησιακό interface, προσθέτουμε στην γλώσσα το letdo construct που υποστηρίζει πρόσβαση μόνο για ανάγνωση στον πίνακα χωρίς όμως να προσθέτει περιορισμούς στην γλώσσα. Ορίζουμε έναν semantics-preserving μετασχηματισμό που λαμβάνει κώδικα στην αρχική γλώσσα και τον μετασχηματίζει σε κώδικα letdo. Έπειτα, ορίσαμε και υλοποιήσαμε έναν αλγόριθμο συμπερασμού τύπων για την γλώσσα letdo που λειτουργεί παράγωντας και επιλύοντας περιορισμούς σε δύο στάδια. Έχουμε κατασκευάσει έναν μεταγλωττιστή που λαμβάνει κώδικα στην αρχική γλώσσα τον μετασχηματίζει στην γλώσσα letdo και έπειτα γίνεται συμπερασμός των τύπων. Εάν το πρόγραμμα περάσει τον έλεγχο τύπων είναι ασφαλές οι εγγραφές σε πίνακες να γίνουν destructively. el
heal.abstract The purpose of this diploma dissertation is to implement safe destructive update for a functional pro- gramming language. The programmer will write purely functional code without type annotations and the compiler will implement the updates in-place when it is safe to do so. The need for efficient functional code is really important. In most applications, a programmer relies on referential transparency and immutability to prove mathematical properties about a functional program. However, referential transparency states that an update operation to an array should create a completely new array and leave the original array intact. In our language, called letdo, linear types will ensure that the old array is not used after being updated, allowing use to perform the update in place. Α type system of linear and non linear types is presented, alongside a readonly construct that doesn’t have the constraints previous read-only constructs, presented in the bibliography, have. However, since we want the programmer to use a purely functional array interface, we imple- mented a semantics-preserving transformation from a functional language like OCaml to letdo. To avoid having linear type annotations in the original language, we present a type inference algorithm. The algorithm is based on constraint generation and solving in two discrete steps. The type inference algorithm does not support qualifier polymorphism, but it does support polymorphism on Non Linear types. Finally, we have implemented a fully working compiler for our language. It parses, the original language, transforms it and infers the types. Finally, it emits machine code that implements array updates in-place. en
heal.advisorName Παπασπύρου, Νικόλαος el
heal.committeeMemberName Φωτάκης, Δημήτριος el
heal.committeeMemberName Στάμου, Γεώργιος el
heal.academicPublisher Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών el
heal.academicPublisherID ntua
heal.numberOfPages 58 σ.
heal.fullTextAvailability true


Αρχεία σε αυτό το τεκμήριο

Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο:

Αυτό το τεκμήριο εμφανίζεται στην ακόλουθη συλλογή(ές)

Εμφάνιση απλής εγγραφής

Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα Εκτός από όπου ορίζεται κάτι διαφορετικό, αυτή η άδεια περιγράφεται ως Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα