Facebook po zhvillon TransCoder për të përkthyer kodin nga një gjuhë programimi në tjetrën

Inxhinierët e Facebook kanë publikuar një transkompilues Transkoder, e cila përdor teknikat e mësimit të makinerive për të transformuar kodin burimor nga një gjuhë programimi e nivelit të lartë në një tjetër. Aktualisht, ofrohet mbështetje për përkthimin e kodit midis Java, C++ dhe Python. Për shembull, TransCoder ju lejon të konvertoni kodin burimor Java në kod Python dhe kodin Python në kod burim Java. Zhvillimet e projektit janë duke u vënë në praktikë hulumtim teorik në krijimin e një rrjeti nervor për transkompilimin efikas automatik të kodit dhe përhapet licencuar sipas një licence Creative Commons Attribution-NonCommercial 4.0 vetëm për përdorim jokomercial.

Zbatimi i sistemit të mësimit të makinerive bazohet në Pytorch. Dy modele të gatshme ofrohen për shkarkim: i parë për përkthimin e C++ në Java, Java në C++ dhe Java në Python, dhe i dytë për transmetim
C++ në Python, Python në C++ dhe Python në Java. Për të trajnuar modelet, ne përdorëm kodet burimore të projekteve të postuara në GitHub. Nëse dëshironi, modele përkthimi mund të krijohen për gjuhë të tjera programimi. Për të kontrolluar cilësinë e transmetimit, është përgatitur një koleksion testesh për njësi, si dhe një grup testesh që përfshin 852 funksione paralele.

Pretendohet se për sa i përket saktësisë së konvertimit, TransCoder është dukshëm më i lartë se përkthyesit komercialë që përdorin metoda të bazuara në rregullat e konvertimit, dhe në procesin e punës ju lejon të bëni pa vlerësimin ekspert të ekspertëve në gjuhën e burimit dhe të synuar. Shumica e gabimeve që lindin gjatë funksionimit të modelit mund të eliminohen duke shtuar kufizime të thjeshta në dekoder për të siguruar që funksionet e krijuara janë sintaksisht të sakta.

Facebook po zhvillon TransCoder për të përkthyer kodin nga një gjuhë programimi në tjetrën

Studiuesit kanë propozuar një arkitekturë të re të rrjetit nervor "Transformer" për modelimin e sekuencave, në të cilën përsëritja zëvendësohet me "kujdes"(modeli seq2seq me vëmendje), i cili ju lejon të heqni qafe disa varësi në grafikun llogaritës dhe të paralelizoni atë që më parë nuk ishte e përshtatshme për paralelizimin. Të gjitha gjuhët e mbështetura përdorin një model të vetëm të përbashkët, i cili është trajnuar duke përdorur tre parime - inicializimi, modelimi i gjuhës dhe përkthimi prapa.

Facebook po zhvillon TransCoder për të përkthyer kodin nga një gjuhë programimi në tjetrën

Burimi: opennet.ru

Shto një koment