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

30
Αυτόματη Συγγραφή Κώδικα με χρήση Λογικής Δευτέρου Επιπέδου Κρασανάκης Εμμανουήλ Επιβλέπων: Συμεωνίδης Ανδρέας Αριστοτέλειο Πανεπιστήμιο Θεσσαλονίκης Πολυτεχνική Σχολή Τμήμα Ηλεκτρολόγων Μηχανικών και Μηχανικών Υπολογιστών Εργαστήριο Επεξεργασίας Πληροφοριών και Υπολογισμών

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

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

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

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

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

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

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

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

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

2

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

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

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

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

3

1. Περιγραφή

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

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

4

Στόχος

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

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

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

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

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

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

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

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

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

6

Ανάδραση

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

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

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

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

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

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

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

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

8

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

algorithm verification

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

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

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

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

9

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

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

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

11

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

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

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

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

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

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

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

13

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

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

:Παράδειγμα

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

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

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

14

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

(π.χ. )

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

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

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

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

16

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

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

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

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

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

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

17

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

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

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

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

19

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

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

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

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

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

20

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

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

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

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

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

21

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

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

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

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

22

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

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

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

23

Ορισμός

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

Περιγραφή

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

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

24

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

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

να έχει

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

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

25

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

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

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

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

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

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

26

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

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

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

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

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

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

27

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

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

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

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

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

29

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

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

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

30

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

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

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

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

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

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

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

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

31

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

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

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

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

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

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

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

32

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

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

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

33

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

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

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

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

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

34

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

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

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

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

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

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

35

Επίδειξη

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

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

36

?Ερωτήσεις