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 |
Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο: