IBM otevírá CodeNet pro systémy strojového učení, které překládají a ověřují kód

IBM představila svou iniciativu CodeNet, jejímž cílem je poskytnout výzkumníkům datovou sadu, která jim umožní experimentovat s využitím technik strojového učení k vytvoření překladačů programovacích jazyků, generátorů kódu a analyzátorů. CodeNet obsahuje sbírku 14 milionů příkladů kódu, které řeší 4053 500 běžných problémů s programováním. Celkem sbírka obsahuje asi 55 milionů řádků kódu a pokrývá 2.0 programovacích jazyků, a to jak moderních jazyků jako C++, Java, Python a Go, tak starších jazyků včetně COBOL, Pascal a FORTRAN. Vývoj projektu je distribuován pod licencí Apache XNUMX a plánuje se distribuce datových sad ve formě veřejné domény.

Příklady jsou komentovány a implementují identické algoritmy v různých programovacích jazycích. Očekává se, že navržená sada pomůže trénovat systémy strojového učení a vyvinout inovace v oblasti překladu a analýzy strojového kódu, podobně jako anotovaná obrazová databáze ImageNet pomohla vývoji systémů rozpoznávání vzorů a počítačového vidění. Jako jeden z hlavních zdrojů tvorby sbírek jsou uváděny různé programátorské soutěže.

Na rozdíl od tradičních překladačů, které jsou implementovány na základě pravidel překladu, mohou systémy strojového učení zachytit a zohlednit kontext použití kódu. Při převodu z jednoho programovacího jazyka do druhého je kontext stejně důležitý jako při překladu z jednoho lidského jazyka do druhého. Tento nedostatek zohlednění kontextu brání převodu kódu ze starších jazyků, jako je COBOL.

Rozsáhlá databáze implementací algoritmů v různých jazycích pomůže vytvořit univerzální systémy strojového učení, které namísto přímého překladu mezi konkrétními jazyky manipulují s abstraktnější reprezentací kódu, nezávisle na konkrétních programovacích jazycích. Takový systém lze použít jako překladač, převádějící přenášený kód v kterémkoli z podporovaných jazyků do jeho vnitřní abstraktní reprezentace, ze které pak lze generovat kód ve více jazycích.

Systém bude také schopen provádět obousměrné transformace. Například banky a vládní agentury nadále používají projekty v zastaralém jazyce COBOL. Překladač založený na strojovém učení bude schopen převést kód COBOL na reprezentaci Java a v případě potřeby přeložit fragment Java zpět do kódu COBOL.

Kromě překladu mezi jazyky jsou zmíněny i takové oblasti použití CodeNet, jako je vytváření inteligentních systémů pro vyhledávání kódu a automatizace detekce klonů, stejně jako vývoj optimalizátorů a systémů automatické opravy kódu. Zejména příklady uvedené v CodeNet jsou vybaveny metadaty popisujícími výsledky testování výkonu, výslednou velikost programu, spotřebu paměti a stav, což nám umožňuje odlišit správný kód od kódu s chybami (pro odlišení správného kódu od nesprávného kódu kolekce konkrétně zahrnuje příklady s chybami, jejichž podíl je 29.5 %). Systém strojového učení může tato metadata vzít v úvahu, aby vygeneroval nejoptimálnější kód nebo identifikoval regrese v analyzovaném kódu (systém dokáže pochopit, že algoritmus v předloženém kódu není optimálně implementován nebo obsahuje chyby).

Zdroj: opennet.ru

Přidat komentář