Facebook udvikler TransCoder til at oversætte kode fra et programmeringssprog til et andet

Facebook-ingeniører har udgivet en transcompiler TransCoder, som bruger maskinlæringsteknikker til at transformere kildekode fra et programmeringssprog på højt niveau til et andet. I øjeblikket ydes der support til at oversætte kode mellem Java, C++ og Python. For eksempel giver TransCoder dig mulighed for at konvertere Java-kildekode til Python-kode og Python-kode til Java-kildekode. Projektudviklinger bliver sat i praksis teoretisk forskning om at skabe et neuralt netværk til effektiv automatisk transkompilering af kode og spredning licenseret under en Creative Commons Attribution-NonCommercial 4.0-licens kun til ikke-kommerciel brug.

Implementeringen af ​​maskinlæringssystemet er baseret på Pytorch. To færdige modeller tilbydes til download: først til oversættelse af C++ til Java, Java til C++ og Java til Python, og sekund til udsendelse
C++ til Python, Python til C++ og Python til Java. For at træne modellerne brugte vi kildekoderne til projekter, der er lagt ud på GitHub. Hvis det ønskes, kan der oprettes oversættelsesmodeller til andre programmeringssprog. For at kontrollere kvaliteten af ​​udsendelsen er der udarbejdet en samling enhedstests samt en testsuite, der indeholder 852 parallelle funktioner.

Det hævdes, at med hensyn til konverteringsnøjagtighed er TransCoder væsentligt overlegen i forhold til kommercielle oversættere, der bruger metoder baseret på konverteringsregler, og i arbejdet giver det dig mulighed for at undvære ekspertvurderingen af ​​eksperter på kilde- og målsproget. De fleste af de fejl, der opstår under driften af ​​modellen, kan elimineres ved at tilføje simple begrænsninger til dekoderen for at sikre, at de genererede funktioner er syntaktisk korrekte.

Facebook udvikler TransCoder til at oversætte kode fra et programmeringssprog til et andet

Forskere har foreslået en ny neural netværksarkitektur "Transformer" til modellering af sekvenser, hvor gentagelse er erstattet af "opmærksomhed"(seq2seq-model med opmærksomhed), som giver dig mulighed for at slippe af med nogle afhængigheder i beregningsgrafen og parallelisere, hvad der tidligere ikke var modtageligt for parallelisering. Alle understøttede sprog bruger en enkelt fælles model, som trænes ved hjælp af tre principper - initialisering, sprogmodellering og tilbageoversættelse.

Facebook udvikler TransCoder til at oversætte kode fra et programmeringssprog til et andet

Kilde: opennet.ru

Tilføj en kommentar