IBM адкрыў CodeNet для сістэм машыннага навучання, якія транслююць і правяраюць код

Кампанія IBM прадставіла ініцыятыву CodeNet, накіраваную на прадастаўленне даследнікам набору дадзеных, якія дазваляюць эксперыментаваць з ужываннем метадаў машыннага навучання для стварэння транслятараў з адной мовы праграмавання ў іншы, а таксама генератараў і аналізатараў кода. CodeNet уключае калекцыю з 14 мільёнаў прыкладаў кода, якія вырашаюць 4053 тыпавых праблем праграмавання. У суме калекцыя налічвае каля 500 млн радкоў кода і ахоплівае 55 моў праграмавання, як сучасныя мовы, такія як C++, Java, Python і Go, так і састарэлыя, у тым ліку COBOL, Pascal і FORTRAN. Напрацоўкі праекту распаўсюджваюцца пад ліцэнзіяй Apache 2.0, а наборы дадзеных плануецца распаўсюджваць у форме грамадскага здабытку.

Прыклады забяспечаны анатацыямі і рэалізуюць ідэнтычныя алгарытмы на розных мовах праграмавання. Мяркуецца, што прапанаваны набор дапаможа трэніроўцы сістэм машыннага навучання і развіццю інавацый у галіне трансляцыі і машыннага разбору кода, па аналогіі з тым, як БД анатаваных малюнкаў ImageNet дапамагла развіццю сістэм распазнання выяў і машыннага зроку. У якасці адной з асноўных крыніц фарміравання калекцыі называюцца розныя спаборніцтвы па праграмаванні.

У адрозненне ад традыцыйных транслятараў, рэалізаваных на аснове правіл пераўтварэнні, сістэмы машыннага навучання могуць улоўліваць і ўлічваць кантэкст выкарыстання кода. Пры пераўтварэнні з адной мовы праграмавання ў іншы кантэкст не менш важны, чым пры перакладзе з адной чалавечай мовы на іншую. Менавіта адсутнасць уліку кантэксту перашкаджае пераўтварэнню кода са састарэлых моў, такіх як COBOL.

Наяўнасць вялікай базы рэалізацый алгарытмаў на розных мовах дапаможа стварэнню ўніверсальных сістэм машыннага навучання, якія замест прамой трансляцыі паміж канкрэтнымі мовамі, маніпулююць больш абстрактным уяўленнем кода, незалежным ад канкрэтных моў праграмавання. Падобная сістэма можа выкарыстоўвацца як транслятар, які перакладае перададзены код на любой з падтрымоўваных моў у сваё ўнутранае абстрактнае ўяўленне, з якога затым можа быць згенераваны код на мностве моў.

У тым ліку сістэма зможа выконваць двунакіраваныя пераўтварэнні. Напрыклад, у банках і дзяржустановах па-ранейшаму працягваюць выкарыстоўвацца праекты на састарэлай мове COBOL. Транслятар на базе сістэмы машыннага навучання зможа пераўтварыць код на COBOL ва ўяўленне на мове Java, а пры неабходнасці перавесці фрагмент на Java назад у код на COBOL.

Акрамя трансляцыі паміж мовамі згадваюцца такія вобласці ўжывання CodeNet, як стварэнне разумных сістэм пошуку кода і аўтаматызацыі выяўлення клонаў, а таксама распрацоўка аптымізатараў і сістэм аўтаматычнай карэкціроўкі кода. У прыватнасці, прадстаўленыя ў CodeNet прыклады забяспечаны метададзенымі, якія апісваюць вынікі тэставання прадукцыйнасці, выніковы памер праграмы, спажыванне памяці і стан, якое дазваляе адрозніваць карэктны код ад кода з памылкамі (каб адрозніць правільны код ад некарэктнага ў калекцыю спецыяльна ўключаны прыклады з памылкамі, доля якіх складае 29.5%). Сістэма машыннага навучання можа ўлічваць гэтыя метададзеныя для генерацыі найболей аптымальнага кода ці для выяўлення рэгрэсій у аналізаваным кодзе (сістэма можа зразумець, што ў перададзеным кодзе алгарытм рэалізаваны не аптымальна ці ўтрымоўвае памылкі).

Крыніца: opennet.ru

Дадаць каментар