dc.contributor.author | Σακκάς, Γεώργιος | el |
dc.contributor.author | Sakkas, Georgios | en |
dc.date.accessioned | 2018-07-25T08:54:36Z | |
dc.date.available | 2018-07-25T08:54:36Z | |
dc.date.issued | 2018-07-25 | |
dc.identifier.uri | https://dspace.lib.ntua.gr/xmlui/handle/123456789/47411 | |
dc.identifier.uri | http://dx.doi.org/10.26240/heal.ntua.15625 | |
dc.rights | Αναφορά Δημιουργού-Μη Εμπορική Χρήση-Όχι Παράγωγα Έργα 3.0 Ελλάδα | * |
dc.rights.uri | http://creativecommons.org/licenses/by-nc-nd/3.0/gr/ | * |
dc.subject | Ταυτόχρονος προγραμματισμός | el |
dc.subject | Δηλωτική σημασιολογία | el |
dc.subject | Μετασχηματιστές μονάδων επανόδου | el |
dc.subject | JavaScript | el |
dc.subject | Συναρτησιακός προγραμματισμός | el |
dc.subject | Concurrent programming | en |
dc.subject | Denotational semantics | en |
dc.subject | Resumption monad transformers | en |
dc.subject | JavaScript | en |
dc.subject | Functional programming | el |
dc.title | Ο μετασχηματιστής μονάδων επανόδου και η υλοποίησή του σε JavaScript | el |
dc.title | The resumption monad transformer and its implementation in JavaScript | en |
heal.type | bachelorThesis | |
heal.classification | Γλώσσες προγραμματισμού | el |
heal.classification | Programming languages | en |
heal.classificationURI | http://data.seab.gr/concepts/983b34771fb7185d04c9603559c9e46f4b70496d | |
heal.classificationURI | http://data.seab.gr/concepts/983b34771fb7185d04c9603559c9e46f4b70496d | |
heal.language | el | |
heal.language | en | |
heal.access | free | |
heal.recordProvider | ntua | el |
heal.publicationDate | 2018-07-06 | |
heal.abstract | Οι επάνοδοι (resumptions) είναι ένα πολύτιμο εργαλείο για την ανάλυση και το σχεδιασμό σημασιολογικών μοντέλων για ταυτόχρονες γλώσσες προγραμματισμού, στους οποίους οι υπολογισμοί αποτελούνται από αλληλουχίες ατομικών βημάτων (atomic steps) που μπορεί να παρεμβληθούν μεταξύ τους. Εν συντομία, μία επάνοδος είναι είτε μια υπολογισμένη τιμή κάποιου πεδίου (domain) είτε ένας ατομικός υπολογισμός (atomic computation) που παράγει μια νέα επάνοδο. Σε μια κατάλληλη κατηγορία σημασιολογικών πεδίων ορίζουμε έναν μετασχηματιστή μονάδων (monad transformer) R, ο οποίος, δεδομένου μιας αυθαίρετης μονάδας (monad)M που αντιπροσωπεύει τους ατομικούς υπολογισμούς, κατασκευάζει μία μονάδα R(M) για διαφυλλώμενους υπολογισμούς (interleaved computations). Επι πλέον, οι μετασχηματιστές μονάδων επιτρέπουν στις μονάδες να κατασκευάζονται με ”στρώσεις”. Αυτό μας επέτρεψε στη δουλειά μας, αν, για παράδειγμα, το D είναι ο μετασχηματιστής μονάδων κατάστασης (state monad transformer), να εφαρμόσουμε την προσέγγιση της άμεσης σημασιολογίας (direct semantics approach), όπου R(M)(D) θα είναι μία μονάδα που θα λαμβάνει υπόψη την κατάσταση του προγράμματος (state) αλλά και των επανόδων. Επομένως, αν τοM επιλέξει είναι η μονάδα δυναμοπεδίου P (αυτή μπορεί να είναι η μονάδα λίστας (list monad) στη Haskell για να συγκεντρώνει όλα τα αποτελέσματα) μπορούμε να ορίσουμε τη σημασιολογία των παράλληλων γλωσσών προγραμματισμού στις οποίες επιτρέπεται η παρεμβολή των διάφορων υπολογισμών. Επιπλέον, χρησιμοποιούμε τον δικό μας ορισμένο μετασχηματιστή μονάδων για να ορίσουμε τη δηλωτική σημασιολογία (denotational semantics) μιας απλής προστακτικής γλώσσας που χαρακτηρίζεται από μη-ντετερμινισμό και ταυτοχρονισμό. Αυτή η γλώσσα υλοποιήθηκε στη JavaScript και είναι στην πραγματικότητα ένα υποσύνολο της. Στη συνέχεια, καθορίζουμε τη δική μας εκδοχή των μονάδων και των μετασχηματιστών μονάδων στη JavaScript προκειμένου να υλοποιήσουμε αποτελεσματικά τους μετασχηματιστές μονάδων επανόδου. Επιπλέον, μπορούμε τώρα να ορίσουμε νέους τελεστές (operators) που μας επιτρέπουν να επεκτείνουμε αυτή την απλή γλώσσα και να εισάγουμε μη-ντετερμινισμό και διαφυλλισμό των υπολογισμών (interleaving of computation) σε αυτή. Ο στό- χος μας είναι να αξιολογήσουμε τα αποτελέσματα των μετασχηματιστών μονάδων σε μία γλώσσα ενός νήματος (single-threaded language), η οποία δεν υποστηρίζει ταυτοχρονισμό εγγενώς, και να δείξουμε ότι μπορεί να είναι μια χαμηλού κόστους και πολύ εκφραστική προσέγγιση για τη σημασιολογία του ταυτοχρονισμού. Κάναμε πειράματα σε JavaScript για να δείξουμε αυτά τα σημεία, όπου τα προγράμματα γράφονται σε απλή JavaScript και στη δική μας γλώσσα που χρησιμοποιεί το μετα- σχηματιστή μονάδων επανόδου (RMTs). Επίσης, συγκρίνουμε την απόδοσή τους με τα Promises της JavaScript, η σημασιολογία των οποίων μοιάζει με αυτή των μετασχηματιστών μονάδων επανόδου. | el |
heal.abstract | Resumptions are a valuable tool in the analysis and design of semantic models for concurrent programming languages, in which computations consist of sequences of atomic steps that may be interleaved. Briefly, a resumption is either a computed value of some domain or an atomic computation that produces a new resumption. In an appropriate category of semantic domains we define a monad transformer R which, given an arbitrary monadM that represents the atomic computations, constructs a monad R(M) for interleaved computations. What is more, monad transformers allow monads to be constructed in a “layered” fashion. This allowed us in our work, if, for example, D is the state monad transformer, to implement the direct semantics approach, where R(M)(D) will be a monad aware of a state and resumptions. Therefore, if M is chosen to be the power-domain monad P (this can be the list monad in Haskell in order to accumulate results) we can define the semantics of concurrent programming languages where the interleaving of computations is allowed. Furthermore, we use our introduced Resumption Monad Transformer (RMT) to define the denotational semantics of a simple imperative language featuring non-determinism and concurrency. This language is being implemented on JavaScript and is actually a subset of it. We then define our own version of monads and monad transformers in JavaScript in order to implement resumption monad transformers efficiently. Additionally, we can now define new operators that let us extend this simple language and insert non-determinism and interleaving of computations into it. Our goal is to evaluate the results of RMTs on a single-threaded language, that doesn’t support concurrency natively, and show that they can be a low-overhead and very expressive approach for the semantics of concurrency. We did tests in JavaScript to prove these points, where programs are written on plain JavaScript and in our language that uses RMTs. We also compare their performance against the JavaScript Promises, whose semantics resemble those of our resumption monad transformer. | en |
heal.advisorName | Παπασπύρου, Νικόλαος | el |
heal.committeeMemberName | Παπασπύρου, Νικόλαος | el |
heal.committeeMemberName | Γκούμας, Γεώργιος | el |
heal.committeeMemberName | Παγουρτζής, Αριστείδης | el |
heal.academicPublisher | Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών | el |
heal.academicPublisherID | ntua | |
heal.numberOfPages | 82 σ. | |
heal.fullTextAvailability | true |
Οι παρακάτω άδειες σχετίζονται με αυτό το τεκμήριο: