dc.contributor.author |
Γαδ, Νικόλαος
|
el |
dc.contributor.author |
Gad, Nikolaos
|
en |
dc.date.accessioned |
2020-10-16T11:21:30Z |
|
dc.date.available |
2020-10-16T11:21:30Z |
|
dc.identifier.uri |
https://dspace.lib.ntua.gr/xmlui/handle/123456789/51480 |
|
dc.identifier.uri |
http://dx.doi.org/10.26240/heal.ntua.19178 |
|
dc.rights |
Default License |
|
dc.subject |
Μεταγλωττιστές |
el |
dc.subject |
Εξυπηρετητής |
el |
dc.subject |
Φυλλομετρητής |
el |
dc.subject |
Συλλογή μεταγλωττιστών |
el |
dc.subject |
Βάση δεδομένων |
el |
dc.subject |
Γλώσσα φυλλομετρητή |
el |
dc.subject |
Webassembly |
en |
dc.subject |
Compilers |
en |
dc.subject |
Compiler collection |
en |
dc.subject |
Browser |
en |
dc.subject |
Browser language |
en |
dc.subject |
Server |
en |
dc.subject |
Database |
en |
dc.subject |
Docker Containers |
en |
dc.subject |
Backend |
en |
dc.subject |
Frontend |
en |
dc.subject |
Angular |
en |
dc.subject |
Python |
en |
dc.subject |
PostgreSQL |
en |
dc.subject |
Scalability |
en |
dc.subject |
Proof of Concept |
en |
dc.subject |
PoC |
en |
dc.subject |
Κλιμακωσιμότητα |
el |
dc.title |
Μεταγλώττιση σε WebAssembly ως Υπηρεσία |
el |
heal.type |
bachelorThesis |
|
heal.classification |
Τεχνολογία Λογισμικού |
el |
heal.language |
el |
|
heal.access |
free |
|
heal.recordProvider |
ntua |
el |
heal.publicationDate |
2020-10-06 |
|
heal.abstract |
Σκοπός της παρούσας διπλωματικής εργασίας είναι η σχεδίαση ενός συστήματος το οποίο δίνει τη δυνατότητα σε ένα χρήστη να μεταγλωττίσει πηγαίο κώδικα μιας γλώσσας υψηλού επιπέδου σε Webassembly, χωρίς να γνωρίζει ο ίδιος τις εξαρτήσεις που χρειάζεται ο εκάστοτε μεταγλωττιστής ώστε να λειτουργήσει. Τις τελευταίες δεκαετίες, οι άνθρωποι χρησιμοποιούν καθημερινά ένα μεγάλο σύνολο εφαρμογών, οι οποίες επηρεάζουν διάφορους τομείς της ζωή τους. Το είδος των εφαρμογών αυτών εκτείνεται από απλά παιχνίδια έως σύνθετα νευρωνικά δίκτυα και συστήματα τεχνητής νοημοσύνης για ιατρική υποβοήθηση. Συστηματικά, γίνεται προσπάθεια ώστε οι εφαρμογές αυτές να αξιοποιηθούν και σε άλλους τομείς ή να τροποποιηθούν ώστε να ικανοποιήσουν άλλες ανάγκες. Ωστόσο, αυτό δεν είναι πάντοτε εφικτό καθώς πολλές εφαρμογές χρειάζεται να είναι γρήγορες και αποδοτικές αλλά οι τροποποιήσεις που απαιτούνται ώστε να χρησιμοποιηθούν σε άλλους τομείς είτε είναι αδύνατες, είτε είναι δύσκολες, είτε εισάγουν καθυστέρηση στη λειτουργία τους, καθιστώντας τες δύσχρηστες και πιθανώς επικίνδυνες. Η Webassembly αποτελεί μία γρήγορη γλώσσα χαμηλού επιπέδου, η οποία μπορεί να τρέξει σε φυλλομετρητές και, συγχρόνως, να λειτουργήσει ως γλώσσα-στόχος κατά τη μεταγλώττιση γλωσσών υψηλού επιπέδου. Με αυτόν τον τρόπο, επιτρέπεται σε εφαρμογές γραμμένες σε γλώσσες υψηλού επιπέδου που παραδοσιακά δε μπορούσαν να τρέξουν σε φυλλομετρητές, να αξιοποιηθούν από όλες τις συσκευές που διαθέτουν φυλλομετρητή, δίχως να προκαλείται μεγάλη μεταβολή στην απόδοσή τους. Δεδομένου πως υπάρχουν διαφορετικοί μεταγλωττιστές για τις διάφορες γλώσσες, ένας προγραμματιστής χρειάζεται να χρησιμοποιήσει και να μάθει ένα μεγάλο σύνολο εργαλείων προτού μπορέσει να μετατρέψει τους υπάρχοντες κώδικές τους σε Webassembly. Το σύστημα που μελετάται και σχεδιάζεται στην παρούσα διπλωματική εργασία, χρησιμοποιώντας εξυπηρετητές, βάση δεδομένων και containers, αποτελεί μία απόδειξη πως μπορεί να σχεδιαστεί ένα σύστημα το οποίο να κρύβει από τους χρήστες του την πολυπλοκότητα των μεταγλωττιστών, δίνοντάς τους τη δυνατότητα να μεταγλωττίσουν εύκολα γλώσσες υψηλού επιπέδου σε Webassembly μέσω μίας γενικευμένης ”Διεπαφής Προγραμματισμού Εφαρμογής” (API) ή μίας ”Διεπαφής Χρήστη” (UI), επιστρέφοντας τα αποτελέσματα της μεταγλώττισης μέσα σε ένα συμπιεσμένο ZIP αρχείο. |
el |
heal.abstract |
The purpose of this diploma thesis is the design of a system that gives user the ability to compile highlevel language source code to Webassembly, without demanding from him/her to know the software dependencies that are needed from each distinct compiler to work. During the last decades, people are using a large set of applications on a daily base that influence various areas of their lives. The type of applications ranges from simple games to complex neural networks and artificial intelligence systems for medical support. Systematically, efforts are made in order for the applications to be used in other areas or to be modified in order to satisfy other needs. However, this is not always feasible because many applications need to be fast and efficient but the necessary modifications, in order to be applied in other areas, are impossible, difficult or they introduce a latency during their usage, thus making them difficult to use and possibly dangerous. Webassembly is a fast low-level language, capable of running in browsers and, simultaneously, of being used as a target language during high-level language compilation. This way, applications written in high-level languages that couldn’t traditionally run in browsers, are able to be used by every device that has a browser, without a noticeable change in their efficiency. Given the fact that different compilers exist for the various languages, a programmer needs to use and learn a big set of tools before being able to change the existing code to Webassembly. The system that is studied and designed in this diploma thesis, using servers, database and containers, is a proof of concept that it is possible to design a system that can hide the compiler complexity from the user, by giving the user the ability to easily compile high-level languages to Webassembly via a generic Application Programming Interface (API) or a User Interface (UI), returning the compilation results inside a compressed ZIP file. |
en |
heal.advisorName |
Παπασπύρου, Νικόλαος |
el |
heal.committeeMemberName |
Παπασπύρου, Νικόλαος |
el |
heal.committeeMemberName |
Γκούμας, Γεώργιος |
el |
heal.committeeMemberName |
Στάμου, Γεώργιος |
el |
heal.academicPublisher |
Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών. Τομέας Τεχνολογίας Πληροφορικής και Υπολογιστών |
el |
heal.academicPublisherID |
ntua |
|
heal.numberOfPages |
54 σ. |
el |
heal.fullTextAvailability |
false |
|