HEAL DSpace

Ο μετασχηματιστής μονάδων επανόδου και η υλοποίησή του σε JavaScript

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

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

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


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

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

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

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

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