Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

Facebook inženjeri objavili su transkompajler TransCoder, koji koristi tehnike mašinskog učenja za transformaciju izvornog koda iz jednog programskog jezika visokog nivoa u drugi. Trenutno je obezbeđena podrška za prevođenje koda između Jave, C++ i Python-a. Na primjer, TransCoder vam omogućava da pretvorite Java izvorni kod u Python kod, a Python kod u Java izvorni kod. Razvoj projekta se provodi u praksi teorijsko istraživanje o stvaranju neuronske mreže za efikasnu automatsku transkompilaciju koda i širenje licencirano pod licencom Creative Commons Attribution-NonCommercial 4.0 samo za nekomercijalnu upotrebu.

Implementacija sistema mašinskog učenja bazirana je na Pytorchu. Za preuzimanje su ponuđena dva gotova modela: prvo za prevođenje C++ u Javu, Jave u C++ i Jave u Python, i drugi za emitovanje
C++ u Python, Python u C++ i Python u Javu. Za obuku modela koristili smo izvorne kodove projekata objavljenih na GitHub-u. Po želji se mogu kreirati prevodilački modeli za druge programske jezike. Za provjeru kvaliteta emitiranja pripremljena je zbirka jediničnih testova, kao i test paket koji uključuje 852 paralelne funkcije.

Tvrdi se da je u pogledu tačnosti konverzije TransCoder znatno superiorniji od komercijalnih prevodilaca koji koriste metode zasnovane na pravilima konverzije, a u procesu rada omogućava vam da bez stručne procene stručnjaka za izvorni i ciljni jezik. Većina grešaka koje nastaju tokom rada modela mogu se eliminisati dodavanjem jednostavnih ograničenja dekoderu kako bi se osiguralo da su generirane funkcije sintaktički ispravne.

Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

Istraživači su predložili novu arhitekturu neuronske mreže "Transformer" za modeliranje sekvenci, u kojoj je ponavljanje zamijenjeno sa "vnimaniem"(seq2seq model s pažnjom), koji vam omogućava da se riješite nekih ovisnosti u računskom grafu i paralelizirate ono što ranije nije bilo podložno paralelizaciji. Svi podržani jezici koriste jedan zajednički model, koji se obučava korištenjem tri principa — inicijalizacije, jezičnog modeliranja i povratnog prevođenja.

Facebook razvija TransCoder za prevođenje koda iz jednog programskog jezika u drugi

izvor: opennet.ru

Dodajte komentar