Κρασανάκης Εμμανουήλ

Post on 05-Apr-2017

35 views 1 download

Transcript of Κρασανάκης Εμμανουήλ

Αυτόματη ΣυγγραφήΚώδικα με χρήσηΛογικής Δευτέρου

ΕπιπέδουΚρασανάκης ΕμμανουήλΕπιβλέπων: Συμεωνίδης Ανδρέας

Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή

ΤμήμαΗλεκτρολόγωνΜηχανικών καιΜηχανικώνΥπολογιστών

Εργαστήριο Επεξεργασίας Πληροφοριών καιΥπολογισμών

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

2

Διάρθρωσηπαρουσίασης

1. Περιγραφή2. Ανάπτυξη θεωρίας3. Παρουσίαση αλγορίθμου4. Δημιουργία βάσης δεδομένων5. Μελλοντικές επεκτάσεις

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

3

1. Περιγραφή

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

4

Στόχος

Περιγραφή προβλήματος

Συσχέτιση με σχόλια κώδικα

Παραγωγή νέου κώδικα

Βάση δεδομένων σχολιασμένου κώδικα

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

5

Παράδειγμαfunction func

return a random positive number

…# get a random numbera = random( )…

…# make b positiveif(b<0):

b = -b;…

def func ( ):temp = random( )if(temp<0):

temp = -tempreturn temp

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

6

Ανάδραση

Περιγραφή προβλήματος

Συσχέτιση με σχόλια κώδικα

Εισαγωγή κώδικαστην περιγραφή

του προβλήματος

Βάση δεδομένων σχολιασμένου κώδικα

Επιλογή κώδικα ώστεμεγιστοποίηση μετρικής

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

8

ΣκοπόςΒιβλιογραφία:• Καλώς ορισμένη λογική χαμηλών επιπέδων• Υπάρχουν μόνο proof machines και μέθοδοι

algorithm verification

Κενά:• Δεν υπάρχουν μαθηματικά εργαλεία για λογική

υψηλότερου επιπέδου• Μαθηματική διαχείριση ισοδύναμου κώδικα

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

9

2. Ανάπτυξη θεωρίας

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

11

Λογική 2ου (Επιπέδου SOL)

Χαρακτηριστικά:• Μοντελοποιεί ανθρώπινο λόγο

(στη χείριστη περίπτωση ως συλλογή κατηγορημάτων)

• Turing-complete για κατάλληλες συναρτήσεις (θεωρώντας την εκχώρηση ως επιβεβαίωση-assertion)

Μπορεί δηλαδή να χρησιμοποιηθεί για συνδυασμό ανθρώπινου λόγου και κώδικα

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

13

ΠολυπλοκότηταΠοσοτικοποίηση πληροφορίας SOL έκφρασης

ΠολυπλοκότηταΠλήθος μη ισοτικών συμβόλων (με επανάληψη) που απαιτούνται για την αναπαράσταση μιας έκφρασης.

:Παράδειγμα

• ( ’ )το σύμβολο κατ εξαίρεση δεν υπολογίζεται

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

14

Ισοτιμία• Διπλή συνεπαγωγή για λογική σύγκριση

(π.χ. )

• Σύγκριση εκφράσεων από προγραμματιστική άποψη:

Ισοτιμία σημαίνει ότι για ισότιμες δεσμευμένες μεταβλητές (δηλ. που υπόκεινται σε ) έχουμε ισότιμες ελεύθερες μεταβλητές.

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

16

Ισότιμες μεταβλητές• Όχι ακριβής ορισμός

(π.χ. μπορεί να εξαρτάται από το αν η επιστροφή μεταβλητής αντιστοιχίζεται σε ή αν απλά οι ελεύθερες μεταβλητές επιστρέφονται)

• Απαραίτητες ιδιότητες ισοτιμίας μεταβλητών:

( oι ελεύθερες, οι δεσμευμένες και όλες οι μεταβλητές)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

17

ΛογικάΜοντέλαΜοντέλα: Σύνολα εκφράσεων• Παράθεση:

Υπομοντέλα: τμήματα αυτοτελούς λογικής(αλγόριθμος μεγίστων συνδεδεμένων υπογράφων στο γράφο μεταβλητών)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

19

ΑλγεβροποίησηΣύνδεση ισοτιμίας με διπλή συνεπαγωγή:

ΟρθόAν τότε ώστε

ΑντίστροφοΑν τότε ώστε

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

20

ΜετασχηματισμοίΟμογενοποίησηΑφαιρεί εμφώλευση από εκφράσεις SOL μοντέλου(π.χ. γίνεται )

Ανεξαρτητοποίηση (independent)Μετονομάζει μεταβλητές ώστε να είναι μοναδικές για κάθε μοντέλο(π.χ. μεταβλητή σε μοντέλο γίνεται ενώ σε μοντέλο γίνεται )

Ισότιμη αφαίρεση δίνει τα στοιχεία του εκτός από αυτά που είναι ισότιμα με κάποιο στοιχείο του

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

21

Εκτέλεση υποθέσεων• Γενίκευση ορθής αλγεβροποίησης • Δημιουργία λογικών συσχετισμών• Συνδέει τις πράξεις

Εκτέλεση υποθέσεωνΓια τυχαία μοντέλα ώστε

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

22

3. Παρουσίαση αλγορίθμου

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

23

Ορισμός

σχόλια και κώδικας

Περιγραφή

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

24

ΟρισμόςΕπιλογή ακολουθίας ώστε η ακολουθία

με ( περιέχει μόνο ισότητες και ποσοδείκτες)

να έχει

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

25

ΒελτιστοποίησηΠοσότητα προς βελτιστοποίηση:

όπου το τετριμμένο μοντέλο

Αυτό σημαίνει:

όπου • εκφράσεις του υλοποιημένου κώδικα • εκχωρήσεις • ποσοδείκτες ( έξοδοι, είσοδοι)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

26

ΒελτιστοποίησηΕφαρμογή άπληστης μεθόδου στη μέση περίπτωση:

για σταθερά (εξαρτάται αλλά δεν ισούται με ),

• αν και δεν περιέχουν κοινές εκφράσεις, τότε ολικό ελάχιστο σε πεπερασμένο αριθμό βημάτων

• αν εφαρμοστεί ομογενοποίηση στα και το ολικό ελάχιστο έχει τη μικρότερη δυνατή τιμή

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

27

Υλοποίηση ΙσοτιμίαςΠαραδοχές για ισότιμες εκφράσεις:• Ίδιο πλήθος μεταβλητών• Ίδιο νόημα

– Σχόλια: μεγάλη λεξικογραφική ομοιότητα– Κώδικας: ταυτόσημη έκφραση αν αντικατασταθούν οι μεταβλητές με την

τρέχουσα διάταξή τους

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

29

4. Δημιουργία βάσης δεδομένων

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

30

Εισαγωγήαπό βιβλιοθήκες Python

Απλοϊκή αντιμετώπιση:1. Εντοπισμός συναρτήσεων2. Σχόλια , κώδικας

Προβλήματα:• Κατηγορήματα που έχουν αντίστροφο νόημα

(π.χ. table A sorts table B, table B is sorted by A)

• Ελλιπής διατύπωση σχολίων (μπορεί να εννοούνται οι μεταβλητές, π.χ. get random value)

• Εκφράσεις επιστροφής που δεν επιστρέφουν απευθείας μεταβλητές(π.χ. return a+b)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

31

Εισαγωγήαπό βιβλιοθήκες Python

Αντιμετώπιση προβλημάτων:• Αντιστροφή δεξιού και αριστερού μέρους για

συγκεκριμένα κατηγορήματα(π.χ. B by A Α Β)

• Προσθήκη όλων των εισόδων και των εξόδων σε σχόλια χωρίς μεταβλητές

• Ομογενοποίηση της έκφρασης επιστροφής (δηλ. επιπλέον μεταβλητές για εξόδους που δεν είναι μεταβλητές)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

32

5. Μελλοντικές Επεκτάσεις

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

33

Επεκτάσειςβελτιστοποίησης

• Order-dependent κώδικας• Χρήση μεθόδων Service Composition• Χρήση τύπου και ονόματος μεταβλητών

(για κατάλληλες γλώσσες προγραμματισμού)

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

34

Επεκτάσειςβιβλιοθηκών

• Εισαγωγή αντικειμενοστραφή κώδικα• Καλύτερος μετασχηματισμός δεδομένων

(γενικότερα: ‘εξυπνότερος’ εντοπισμός ισότιμων εκφράσεων)

• Δέντρο φυσικής γλώσσας για καλύτερο υπολογισμό πολυπλοκότητας

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

35

Επίδειξη

Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου

36

?Ερωτήσεις