Facebook ontwikkelt TransCoder om code van de ene programmeertaal naar de andere te vertalen

Facebook-ingenieurs hebben een transcompiler gepubliceerd Transcoder, dat machine learning-technieken gebruikt om de broncode van de ene programmeertaal op hoog niveau naar de andere te transformeren. Momenteel wordt ondersteuning geboden voor het vertalen van code tussen Java, C++ en Python. Met TransCoder kunt u bijvoorbeeld Java-broncode converteren naar Python-code, en Python-code naar Java-broncode. Projectontwikkelingen worden in de praktijk gebracht theoretisch onderzoek over het creëren van een neuraal netwerk voor efficiënte automatische transcompilatie van code en worden verspreid gelicentieerd onder een Creative Commons Naamsvermelding-Niet-Commercieel 4.0-licentie, uitsluitend voor niet-commercieel gebruik.

De implementatie van het machine learning-systeem is gebaseerd op Pytorch. Er worden twee kant-en-klare modellen ter download aangeboden: eerste voor vertaling van C++ naar Java, Java naar C++ en Java naar Python, en tweede voor uitzending
C++ naar Python, Python naar C++ en Python naar Java. Om de modellen te trainen, gebruikten we de broncodes van projecten die op GitHub waren geplaatst. Indien gewenst kunnen er vertaalmodellen voor andere programmeertalen worden gemaakt. Om de kwaliteit van de uitzending te controleren, is er een verzameling unit-tests opgesteld, evenals een testsuite met 852 parallelle functies.

Er wordt beweerd dat TransCoder qua conversienauwkeurigheid aanzienlijk superieur is aan commerciële vertalers die methoden gebruiken die zijn gebaseerd op conversieregels, en tijdens het werk kunt u het doen zonder de deskundige beoordeling van experts in de bron- en doeltaal. De meeste fouten die optreden tijdens de werking van het model kunnen worden geëlimineerd door eenvoudige beperkingen aan de decoder toe te voegen om ervoor te zorgen dat de gegenereerde functies syntactisch correct zijn.

Facebook ontwikkelt TransCoder om code van de ene programmeertaal naar de andere te vertalen

Onderzoekers hebben een nieuwe neurale netwerkarchitectuur “Transformer” voorgesteld voor het modelleren van sequenties, waarin herhaling wordt vervangen door “aandacht"(seq2seq-model met aandacht), waarmee u enkele afhankelijkheden in de computationele grafiek kunt verwijderen en kunt parallelliseren wat voorheen niet vatbaar was voor parallellisatie. Alle ondersteunde talen gebruiken één gemeenschappelijk model, dat is getraind op basis van drie principes: initialisatie, taalmodellering en terugvertaling.

Facebook ontwikkelt TransCoder om code van de ene programmeertaal naar de andere te vertalen

Bron: opennet.ru

Voeg een reactie