Az IBM bemutatta a CodeNet kezdeményezést, amelynek célja, hogy a kutatók számára egy adatgyűjteményt biztosítson, lehetővé téve, hogy gépi tanulási módszerekkel kísérletezzenek programozási nyelvek közötti fordítók, valamint kódgenerátorok és kódanalizátorok létrehozásával. A CodeNet 14 millió kódmintát tartalmaz, amelyek 4053 tipikus programozási problémát oldanak meg. A gyűjtemény összesen körülbelül 500 millió kódsort foglal magába, és 55 programozási nyelvet ölel fel, beleértve a modern nyelveket, mint a C++, Java, Python és Go, valamint az elavultakat, mint a COBOL, Pascal és FORTRAN. A projekt eredményeit Apache 2.0 licenc alatt terjesztik, a adatgyűjtemények pedig nyílt közkinccsé tételre tervezettek.
A példák annotációkkal vannak ellátva, és azonos algoritmusokat valósítanak meg különböző programozási nyelveken. Feltételezhető, hogy az ajánlott készlet segíteni fog a gépi tanulási rendszerek képzésében és az innovációk fejlesztésében a fordítás és a gépi kódelemzés területén, hasonlóan ahhoz, ahogyan az annotált képek adatbázisa, az ImageNet segítette a képfelismerő rendszerek és a gépi látás fejlődését. A gyűjtemény egyik fő forrása különböző programozási versenyek említése.
A hagyományos, szabályalapú fordítókhoz képest a gépi tanulási rendszerek képesek megérteni és figyelembe venni a kód használatának kontextusát. Egy programozási nyelvről a másikra való fordításkor a kontextus éppolyan fontos, mint egy emberi nyelvről a másikra való fordításkor. Éppen a kontextus figyelembevételének hiánya akadályozza a kódok átalakítását elavult nyelvekről, mint például a COBOL.
A különböző nyelveken megvalósított algoritmusok nagy adatbázisa segíti az univerzális gépi tanulási rendszerek létrehozását, amelyek a konkrét nyelvek közötti közvetlen fordítás helyett egy, a programozási nyelvektől független, absztrakt kódábrázolással dolgoznak. Ilyen rendszer használható fordítóként, amely a megadott kódot bármely támogatott nyelvre fordítja az adott belső absztrakt kódképviseletébe, ahonnan később kód generálható számos nyelven.
A rendszer képes lesz bidirekcionális átalakításokra. Például a bankokban és állami intézményekben továbbra is használják a régi COBOL programozási nyelvet. A gépi tanuláson alapuló fordító képes átkonvertálni a COBOL kódot Java program leszármazottá, és szükség esetén a Java töredéket vissza is fordítani COBOL kódra.
A nyelvek közötti fordítás mellett a CodeNet alkalmazási területei közé tartozik a kód kereső intelligens rendszerek létrehozása és a klónok automatikus észlelése, valamint optimalizáló és automatikus kódjavító rendszerek fejlesztése. Különösen a CodeNet bemutatott példái metaadatokkal vannak ellátva, amelyek leírják a teljesítménytesztelés eredményeit, a program végső méretét, a memóriafogyasztást és azt az állapotot, amely lehetővé teszi a helyes és hibás kód megkülönböztetését (a helyes kód és a hibás kód megkülönböztetéséhez a gyűjteménybe szándékosan hibás példákat is belefoglalnak, amelyek aránya 29,5%). A gépi tanulási rendszer figyelembe veheti ezeket a metaadatokat a legoptimálisabb kód generálásához vagy regressziók észleléséhez az elemzett kódban (a rendszer képes megérteni, ha a megadott kódban az algoritmus nem optimálisan van végrehajtva, vagy hibákat tartalmaz).
Forrás: opennet.ru
