Kompania IBM paraqiti iniciativën CodeNet, e cila ka për qëllim të ofrojë hulumtuesve një grup të dhënash që lejojnë eksperimente me metodat e mësimit të makinerive për të krijuar përkthyes nga një gjuhë programimi në një tjetër, si dhe gjenerues dhe analizatorë kodi. CodeNet përmban një koleksion me 14 milion shembuj kodi që zgjidhin 4053 probleme tipike programimi. Në total, koleksioni përbën rreth 500 milion rreshta kodi dhe mbulon 55 gjuhë programimi, si gjuhët moderne, si C++, Java, Python dhe Go, ashtu edhe ato të vjetra, përfshirë COBOL, Pascal dhe FORTRAN. Arritjet e projektit do të shpërndahen nën licencën Apache 2.0, ndërsa grupet e të dhënave janë planifikuar të shpërndahen si pronë publike.
Shembujt janë të pajisur me annotime dhe zbatojnë algoritme identike në gjuhë të ndryshme programimi. Prandaj, pritet që grupi i propozuar të ndihmojë në trajnimin e sistemeve të mësimit të makinerive dhe zhvillimin e novacioneve në fushën e përkthimit dhe analizës së kodit, siç ndodhi me bazën e të dhënave të annotuara të imazheve ImageNet që ndihmoi në zhvillimin e sistemeve të njohjes së imazheve dhe shikimit të makinerive. Një nga burimet kryesore të formimit të koleksionit janë kompetitat e ndryshme të programimit.
Ndryshe nga përkthyesit tradicionalë, të realizuar mbi bazën e rregullave të transformimit, sistemet e mësimit të makinerive mund të kapin dhe marrin parasysh kontekstin e përdorimit të kodit. Kur konvertohet nga një gjuhë programimi në një tjetër, konteksti është po aq i rëndësishëm sa gjatë përkthimit nga një gjuhë njerëzore në një tjetër. Pikërisht mungesa e vëmendjes ndaj kontekstit pengon transformimin e kodit nga gjuhët e vjetra, si COBOL.
Prania e një baze të madhe realizimesh algoritmike në gjuhë të ndryshme do të ndihmojë në krijimin e sistemeve universale të mësimit të makinerive, që në vend të përkthimit të drejtpërdrejtë mes gjuhëve të veçanta, manipulojnë me një përfaqësim më të abstrahuar të kodit, të pavarur nga gjuhët e veçanta të programimit. Një sistem i tillë mund të përdoret si përkthyes, që konverton kodin e dërguar në cilëndo nga gjuhët e mbështetura në përfaqësimin e tij të brendshëm abstrakt, nga i cili pastaj mund të gjenerohet kodi në shumë gjuhë.
Sistemi do të jetë në gjendje të kryejë transformime bidireksionale. Për shembull, në banka dhe institucione qeveritare vazhdojnë të përdoren projekte në gjuhën e vjetër COBOL. Një përkthyes i bazuar në një sistem të mësimit të makinerive do të jetë në gjendje të konvertojë kodin në COBOL në një përfaqësim në gjuhën Java, dhe nëse është e nevojshme, të përkthejë një fragment në Java përsëri në kodin në COBOL.
Përveç përkthimit midis gjuhëve, përmenden fusha të tjera përdorimi të CodeNet, si krijimi i sistemeve inteligjente për kërkimin e kodit dhe automatizimi i zbuluar i klonëve, si dhe zhvillimi i optimizuesve dhe sistemeve të korrigjimit automatik të kodit. Në veçanti, shembujt e paraqitur në CodeNet shoqërohen me të dhëna metadatash që përshkruajnë rezultatet e testimeve të performancës, madhësinë përfundimtare të programit, përdorimin e memories dhe statusin që i lejon të dallojë kodin e saktë nga ai i gabuar (për të bërë diferencimin, në koleksionin janë përfshirë veçanërisht shembuj me gabime, të cilët përbëjnë 29.5%). Sistemi i mësimit të makinerive mund të marrë parasysh këto të dhëna metadatash për të gjeneruar kodin më optimal ose për të identifikuar regresionet në kodin e analizuar (sistemi mund të kuptojë se algoritmi në kodin e dorëzuar nuk është implementuar optimalisht ose përmban gabime).
Burimi: opennet.ru
