dc.contributor.advisor |
Παπασπύρου, Νικόλαος |
el |
dc.contributor.author |
Βάθης, Νικόλαος Κ.
|
el |
dc.contributor.author |
Vathis, Nikolaos K.
|
en |
dc.date.accessioned |
2013-02-12T09:19:35Z |
|
dc.date.available |
2013-02-12T09:19:35Z |
|
dc.date.copyright |
2012-12-04 |
- |
dc.date.issued |
2013-02-12 |
|
dc.date.submitted |
2012-12-04 |
- |
dc.identifier.uri |
https://dspace.lib.ntua.gr/xmlui/handle/123456789/7615 |
|
dc.identifier.uri |
http://dx.doi.org/10.26240/heal.ntua.5050 |
|
dc.description |
61 σ. |
el |
dc.description.abstract |
Ο προγραμματισμός ηλεκτρονικών υπολογιστών είναι μία επιστήμη που έχει γνωρίσει ραγδαία ανάπτυξη τις τελευταίες δεκαετίες. Τη σημερινή μέρα είναι εύκολο για τον οποιονδήποτε να γράψει κάποιο πρόγραμμα σε κάποια γλώσσα προγραμματισμού. Αντίθετα, οι τεχνικές απόδειξης οτι ένα πρόγραμμα όντως κάνει αυτό που θέλει ο προγραμματιστής δεν είναι εξίσου ανεπτυγμένες. Η πιο απλή μορφή απόδειξης για τη σωστή λειτουργία ενός προγράμματος είναι ο έλεγχος ορθότητας από ένα σύστημα τύπων. Σε αυτή τη διπλωματική κατασκευάζουμε ένα στατικό σύστημα τύπων που να εντοπίζει σφάλματα τύπου σε αντικειμενοστρεφείς γλώσσες προγραμματισμού με δυναμικό σύστημα τύπων. Στη συνέχεια, υλοποιούμε αυτό το σύστημα τύπων για ένα υποσύνολο της γλώσσας προγραμματισμού Ruby, το οποίο εν συνεχεία επεκτείνουμε ώστε να καλύψει μεγαλύτερο μέρος της γλώσσας Ruby.
Το σύστημα τύπων που κατασκευάζουμε είναι βασισμένο στα Success Typings, τη θεωρία πίσω από το εργαλείο Dialyzer που βρίσκει σφάλματα τύπου σε προγράμματα της γλώσσας Erlang. Η βασική του ιδιότητα είναι οτι δεν υπάρχει περίπτωση να εντοπίσει σφάλμα σε πρόγραμμα το οποίο δεν έχει σφάλμα. Δηλαδή, εντοπίζει μόνο υπαρκτά σφάλματα. Το εργαλείο που εντοπίζει τα σφάλματα στο υποσύνολο της γλώσσας Ruby είναι εύκολο στη χρήση του, καθώς δεν χρειάζεται καμία υποσημείωση τύπων για να λειτουργήσει σωστά.
Τέλος, παρουσιάζουμε μία βήμα προς βήμα σύγκριση με τον κύριο ανταγωνιστή στον εντοπισμό σφαλμάτων τύπου στη γλώσσα Ruby, Diamondback Ruby, σχολιάζοντας τις εξόδους των δύο εργαλείων. |
el |
dc.description.abstract |
Computer programming is a very widespread science, practiced by many individuals. Nowadays, it is easy for almost anyone to write a computer program. Unfortunately, it is still very difficult to prove that a computer program will behave as it is supposed to, when executed. The most basic form of such a proof is type checking. So, in this thesis, we present a static type system that detects type errors in dynamically typed object oriented languages. Also, we implement this type system for a subset of the Ruby programming language, which we try to extend to cover a bigger part of Ruby.
The type system that we present is based on Success Typings, the theory behind the Dialyzer, a tool that detects type errors in the Erlang programming language. Its most interesting property is that it detects only definite errors, and it will never detect a false positive. The tool that we propose should be easy to use, as it requires no intervention of the programmer, as for example in the form of type annotations.
Finally, we present a step by step comparison between our tool and our main competitor in the field of type checking in Ruby, Diamondback Ruby, commenting on the outputs of the tools in the process. |
en |
dc.description.statementofresponsibility |
Νικόλαος Κ. Βάθης |
el |
dc.language.iso |
el |
en |
dc.rights |
ETDRestricted-policy.xml |
en |
dc.subject |
Στατική ανάλυση |
el |
dc.subject |
Έλεγχος τύπων |
el |
dc.subject |
Εντοπισμός σφαλμάτων |
el |
dc.subject |
Σύστημα τύπων |
el |
dc.subject |
Ruby |
el |
dc.subject |
Static analysis |
en |
dc.subject |
Type checking |
en |
dc.subject |
Error detection |
en |
dc.subject |
Type system |
en |
dc.subject |
Ruby |
en |
dc.title |
Στατική ανάλυση για έλεγχο λαθών στη γλώσσα Ruby |
el |
dc.type |
bachelorThesis |
el (en) |
dc.date.accepted |
2012-11-23 |
- |
dc.date.modified |
2012-12-04 |
- |
dc.contributor.advisorcommitteemember |
Σαγώνας, Κωστής |
el |
dc.contributor.advisorcommitteemember |
Κοντογιάννης, Κώστας |
el |
dc.contributor.committeemember |
Παπασπύρου, Νικόλαος |
el |
dc.contributor.committeemember |
Σαγώνας, Κωστής |
el |
dc.contributor.committeemember |
Κοντογιάννης, Κώστας |
el |
dc.contributor.department |
Εθνικό Μετσόβιο Πολυτεχνείο. Σχολή Ηλεκτρολόγων Μηχανικών & Μηχανικών Υπολογιστών |
el |
dc.date.recordmanipulation.recordcreated |
2013-02-12 |
- |
dc.date.recordmanipulation.recordmodified |
2013-02-12 |
- |