Att översätta ett program som är skrivet i ett programmeringsspråk till ett annat kan vara användbart för programvaruutvecklingsuppgifter som kräver funktionalitetsimplementeringar på olika språk. Även om tidigare studier har övervägt detta problem, kan de antingen vara specifika för språk grammatik, eller specifika för vissa typer av kodelement (t.ex., polletter, fraser, API-användning). I detta dokument föreslås ett nytt tillvägagångssätt för att automatiskt lära sig språköverskridande representationer för olika typer av strukturella kodelement som kan användas för programöversättning. Vår nyckelidé är två vikta: För det första normaliserar och berikar vi kodströmmar med ytterligare strukturell och semantisk information, och utbildar språköverskridande vektor representationer för tokens (alias. delade inbäddningar baserade på word2vec, en neural-network-baserad teknik för att producera ordinbäddningar; För det andra, hierarkiskt nedifrån och upp, konstruerar vi gemensamma inbäddningar för kodelement av högre nivåer av granularitet (t.ex. uttryck, uttalanden, metoder) från inbäddningar för sina beståndsdelar, och sedan bygga kartläggningar bland kodelement över språk baserat på likheter mellan inbäddningar. Våra preliminära utvärderingar av cirka 40 000 Java- och C#-källfiler från 9 programvaruprojekt visar att vårt tillvägagångssätt automatiskt kan lära oss delade inbäddningar för olika kodelement på olika språk och identifiera deras tvärspråkskartläggningar med rimliga genomsnittliga precisionspoäng. Jämfört med ett befintligt verktyg för att kartlägga biblioteks API-metoder identifierar vårt arbetssätt många fler kartläggningar exakt. Kartläggningsresultaten och koden finns på https://github.com/bdqnghi/hierarchical-programming-language-mapping. Vi tror att vår idé för att lära sig språköverskridande vektor representationer med kod strukturell information kan vara ett användbart steg mot automatiserad programöversättning.
Bui och Jiang föreslog ett djupt lärande baserat tillvägagångssätt för att automatiskt lära sig språköverskridande representationer för olika typer av strukturella kodelement (dvs. uttryck, uttalanden och metoder) för programöversättning REF.
Hierarchical learning of cross-language mappings through distributed vector representations for code
{'venue': "ICSE-NIER '18", 'journal': None, 'mag_field_of_study': ['Computer Science']}