Facebook vyvíjí TransCoder pro překlad kódu z jednoho programovacího jazyka do druhého

Inženýři Facebooku zveřejnili transkompilátor TransCoder, která využívá techniky strojového učení k transformaci zdrojového kódu z jednoho programovacího jazyka na vysoké úrovni do druhého. V současné době je poskytována podpora pro překlad kódu mezi Java, C++ a Python. TransCoder vám například umožňuje převést zdrojový kód Java do kódu Python a kód Pythonu do zdrojového kódu Java. Vývoj projektu se uvádí do praxe teoretický výzkum o vytvoření neuronové sítě pro efektivní automatickou transkompilaci kódu a šíření licencováno pod licencí Creative Commons Attribution-NonCommercial 4.0 pouze pro nekomerční použití.

Implementace systému strojového učení je založena na Pytorch. Ke stažení jsou nabízeny dva hotové modely: první pro překlad C++ do Javy, Javy do C++ a Javy do Pythonu a druhý pro vysílání
C++ do Pythonu, Python do C++ a Python do Javy. K trénování modelů jsme použili zdrojové kódy projektů zveřejněné na GitHubu. V případě potřeby lze vytvořit překladové modely pro jiné programovací jazyky. Pro kontrolu kvality vysílání byla připravena kolekce unit testů a také testovací sada, která obsahuje 852 paralelních funkcí.

Tvrdí se, že z hlediska přesnosti převodu TransCoder výrazně předčí komerční překladatele, které používají metody založené na konverzních pravidlech, a v procesu práce vám umožní obejít se bez odborného posouzení odborníků na zdrojový a cílový jazyk. Většinu chyb, které vznikají při provozu modelu, lze eliminovat přidáním jednoduchých omezení do dekodéru, aby bylo zajištěno, že generované funkce jsou syntakticky správné.

Facebook vyvíjí TransCoder pro překlad kódu z jednoho programovacího jazyka do druhého

Výzkumníci navrhli novou architekturu neuronové sítě „Transformer“ pro modelování sekvencí, ve které je opakování nahrazeno „Pozornost"(model seq2seq s pozorností), který vám umožňuje zbavit se některých závislostí ve výpočetním grafu a paralelizovat to, co dříve nebylo možné paralelizovat. Všechny podporované jazyky používají jeden společný model, který je trénován pomocí tří principů – inicializace, jazykové modelování a zpětný překlad.

Facebook vyvíjí TransCoder pro překlad kódu z jednoho programovacího jazyka do druhého

Zdroj: opennet.ru

Přidat komentář