Το TransCoder AI του Facebook μετατρέπει τον κώδικα από τη μία γλώσσα προγραμματισμού σε άλλη
1 min readΟι ερευνητές του Facebook λένε ότι έχουν αναπτύξει αυτό που αποκαλούν νευρωνικό μεταγλωττιστή με τη βοήθεια της τεχνητής νοημοσύνης, ένα σύστημα που μετατρέπει κώδικα από μια γλώσσα προγραμματισμού υψηλού επιπέδου όπως C ++, Java και Python σε άλλη.
Αναζητά μοτίβα που δεν είχαν εντοπιστεί στο παρελθόν σε σύνολα δεδομένων κώδικα και με ελάχιστο ποσό ανθρώπινης εποπτείας ξεπερνά τις βασικές αρχές βάσει κανόνων με ένα «σημαντικό» περιθώριο.
Η μετεγγραφή κώδικα σε μια σύγχρονη ή πιο αποτελεσματική γλώσσα όπως η Java ή το C ++ απαιτεί εξειδίκευση τόσο στις πηγές όσο και στις γλώσσες προορισμού και συχνά είναι δαπανηρή.
Οι transcompilers θα μπορούσαν να βοηθήσουν θεωρητικά – εξαλείφουν την ανάγκη να ξαναγραφεί κώδικας από το μηδέν – αλλά είναι δύσκολο να δημιουργηθεί στην πράξη επειδή διαφορετικές γλώσσες μπορούν να έχουν διαφορετική σύνταξη και να βασίζονται σε διαφορετικά API , βιβλιθήκες, μεταβλητές και άλλα.
Το TransCoder του Facebook – , το οποίο μπορεί να μεταφράσει μεταξύ των άλλων γλωσσών C ++, Java και Python – αντιμετωπίζει την πρόκληση με μια μη εποπτευόμενη μαθησιακή προσέγγιση. Το TransCoder αρχικοποιείται με τα βασικά μοντέλα γλωσσών και στη συνέχεια χαρτογραφεί κομμάτια κώδικα που εκφράζουν τις ίδιες οδηγίες σε πανομοιότυπες αναπαραστάσεις ανεξάρτητα από τη γλώσσα προγραμματισμού.
Οι ερευνητές του Facebook εκπαίδευσαν το TransCoder στο δημόσιο αποθετήριο GitHub με πάνω από 2,8 εκατομμύρια γραμμές ανοιχτού κώδικα, στοχεύοντας τη μετάφραση σε επίπεδο λειτουργίας. Μετά την προπόνηση του TransCoder σε όλους τους διαθέσιμους πηγαίους κώδικες, το σύστημα αυτόματης κωδικοποίησης και μετάφρασης εκπαιδεύτηκε μόνο σε λειτουργίες, εναλλάσσοντας μεταξύ στοιχείων από 6.000 περίπου κομμάτια κώδικα.
Για να αξιολογήσουν την απόδοση του TransCoder, οι ερευνητές εξήγαγαν 852 παράλληλες λειτουργίες σε C ++, Java και Python από το GeeksforGeeks, μια διαδικτυακή πλατφόρμα που συγκεντρώνει προβλήματα κωδικοποίησης και παρουσιάζει λύσεις σε διάφορες γλώσσες προγραμματισμού.
Το επίπεδο ακριβείας ήταν
- Από C ++ σε Java, 74,8%
- Από C ++ σε Python, 67,2%
- Από Java σε C ++, 91,6%
- Από την Python σεJava, 56,1%
- Από Python σε C ++, 57,8%
- Από Java σε Python, 68,7%
Σύμφωνα με τους ερευνητές, το TransCoder απέδειξε την κατανόηση της σύνταξης για κάθε γλώσσα, καθώς και τις δομές δεδομένων των γλωσσών και τις μεθόδους τους κατά τη διάρκεια των πειραμάτων, ενώ κατάφερε να αποκωδικοποιήσει σωστά τις βιβλιοθήκες μεταξύ των γλωσσών προγραμματισμού και προσαρμόστηκε με μικρές τροποποιήσεις.
«Το TransCoder μπορεί εύκολα να γενικευτεί σε οποιαδήποτε γλώσσα προγραμματισμού, δεν απαιτεί γνώσεις ειδικών και ξεπερνά τις εμπορικές λύσεις σε μεγάλο βαθμό», έγραψαν οι συντάκτες. “Τα αποτελέσματά υποδηλώνουν ότι πολλά λάθη που έγιναν θα μπορούσαν εύκολα να επιδιορθωθούν προσθέτοντας απλούς περιορισμούς στον αποκωδικοποιητή για να διασφαλίσουμε ότι οι παραγόμενες συναρτήσεις είναι σωστές ή χρησιμοποιώντας ειδικές αρχιτεκτονικές.”
[via]