Facebook utvikler TransCoder for å oversette kode fra ett programmeringsspråk til et annet

Facebook-ingeniører har publisert en transkompilator Transkoder, som bruker maskinlæringsteknikker for å transformere kildekode fra ett høynivå programmeringsspråk til et annet. For øyeblikket gis det støtte for å oversette kode mellom Java, C++ og Python. For eksempel lar TransCoder deg konvertere Java-kildekode til Python-kode, og Python-kode til Java-kildekode. Prosjektutviklingen blir satt ut i livet teoretisk forskning på å lage et nevralt nettverk for effektiv automatisk transkompilering av kode og spre lisensiert under en Creative Commons Attribution-NonCommercial 4.0-lisens kun for ikke-kommersiell bruk.

Implementeringen av maskinlæringssystemet er basert på Pytorch. To ferdige modeller tilbys for nedlasting: første for å oversette C++ til Java, Java til C++ og Java til Python, og andre for sending
C++ til Python, Python til C++ og Python til Java. For å trene modellene brukte vi kildekodene til prosjekter lagt ut på GitHub. Om ønskelig kan oversettelsesmodeller lages for andre programmeringsspråk. For å sjekke kvaliteten på sendingen er det utarbeidet en samling enhetstester, samt en testpakke som inkluderer 852 parallelle funksjoner.

Det hevdes at når det gjelder konverteringsnøyaktighet, er TransCoder betydelig overlegen kommersielle oversettere som bruker metoder basert på konverteringsregler, og i arbeidsprosessen lar den deg klare deg uten ekspertvurderingen av eksperter på kilde- og målspråket. De fleste feilene som oppstår under driften av modellen kan elimineres ved å legge til enkle begrensninger til dekoderen for å sikre at de genererte funksjonene er syntaktisk korrekte.

Facebook utvikler TransCoder for å oversette kode fra ett programmeringsspråk til et annet

Forskere har foreslått en ny nevrale nettverksarkitektur "Transformer" for modellering av sekvenser, der gjentakelse er erstattet med "Merk følgende"(seq2seq-modell med oppmerksomhet), som lar deg bli kvitt noen avhengigheter i beregningsgrafen og parallellisere det som tidligere ikke var mulig å parallellisere. Alle støttede språk bruker en enkelt felles modell, som trenes ved hjelp av tre prinsipper - initialisering, språkmodellering og tilbakeoversettelse.

Facebook utvikler TransCoder for å oversette kode fra ett programmeringsspråk til et annet

Kilde: opennet.ru

Legg til en kommentar