Facebook entwickelt TransCoder, um Code von einer Programmiersprache in eine andere zu übersetzen

Facebook-Ingenieure haben einen Transcompiler veröffentlicht TransCoder, das Techniken des maschinellen Lernens verwendet, um Quellcode von einer höheren Programmiersprache in eine andere umzuwandeln. Derzeit wird die Übersetzung von Code zwischen Java, C++ und Python unterstützt. Mit TransCoder können Sie beispielsweise Java-Quellcode in Python-Code und Python-Code in Java-Quellcode konvertieren. Projektentwicklungen werden in die Tat umgesetzt theoretische Forschung über die Schaffung eines neuronalen Netzwerks zur effizienten automatischen Transkompilierung von Code und Ausbreitung lizenziert unter einer Creative Commons Attribution-NonCommercial 4.0-Lizenz nur für nichtkommerzielle Nutzung.

Die Implementierung des maschinellen Lernsystems basiert auf Pytorch. Es werden zwei fertige Modelle zum Download angeboten: erste zum Übersetzen von C++ nach Java, Java nach C++ und Java nach Python und zweite zur Ausstrahlung
C++ zu Python, Python zu C++ und Python zu Java. Um die Modelle zu trainieren, haben wir die Quellcodes der auf GitHub veröffentlichten Projekte verwendet. Auf Wunsch können auch Übersetzungsmodelle für andere Programmiersprachen erstellt werden. Um die Qualität der Übertragung zu überprüfen, wurde eine Sammlung von Unit-Tests sowie eine Testsuite erstellt, die 852 parallele Funktionen umfasst.

Es wird behauptet, dass TransCoder in Bezug auf die Konvertierungsgenauigkeit kommerziellen Übersetzern, die auf Konvertierungsregeln basierende Methoden verwenden, deutlich überlegen ist und im Arbeitsprozess auf die Expertenbewertung von Experten für die Ausgangs- und Zielsprache verzichten kann. Die meisten Fehler, die beim Betrieb des Modells auftreten, können durch einfache Einschränkungen des Decoders beseitigt werden, um sicherzustellen, dass die generierten Funktionen syntaktisch korrekt sind.

Facebook entwickelt TransCoder, um Code von einer Programmiersprache in eine andere zu übersetzen

Forscher haben eine neue neuronale Netzwerkarchitektur „Transformer“ zur Modellierung von Sequenzen vorgeschlagen, in der Wiederholung durch „Aufmerksamkeit„(seq2seq-Modell mit Aufmerksamkeit), das es Ihnen ermöglicht, einige Abhängigkeiten im Rechendiagramm zu beseitigen und das zu parallelisieren, was zuvor nicht für die Parallelisierung geeignet war. Alle unterstützten Sprachen verwenden ein einziges gemeinsames Modell, das anhand von drei Prinzipien trainiert wird: Initialisierung, Sprachmodellierung und Rückübersetzung.

Facebook entwickelt TransCoder, um Code von einer Programmiersprache in eine andere zu übersetzen

Source: opennet.ru

Kommentar hinzufügen