IBM hufungua CodeNet kwa mifumo ya mashine ya kujifunza ambayo hutafsiri na kuthibitisha msimbo

IBM imezindua mpango wake wa CodeNet, unaolenga kuwapa watafiti mkusanyiko wa data unaowaruhusu kufanya majaribio ya utumiaji wa mbinu za kujifunza kwa mashine ili kuunda wafasiri wa lugha ya programu, jenereta za msimbo na vichanganuzi. CodeNet inajumuisha mkusanyiko wa mifano milioni 14 ya msimbo ambayo hutatua matatizo 4053 ya kawaida ya upangaji. Kwa jumla, mkusanyiko huo una mistari kama milioni 500 ya nambari na inashughulikia lugha 55 za programu, lugha za kisasa kama C++, Java, Python na Go, na lugha za urithi ikiwa ni pamoja na COBOL, Pascal na FORTRAN. Maendeleo ya mradi yanasambazwa chini ya leseni ya Apache 2.0, na seti za data zimepangwa kusambazwa katika mfumo wa kikoa cha umma.

Mifano imefafanuliwa na hutekeleza algoriti zinazofanana katika lugha tofauti za programu. Inatarajiwa kuwa seti iliyopendekezwa itasaidia kufunza mifumo ya mashine ya kujifunza na kuendeleza ubunifu katika uga wa utafsiri na uchanganuzi wa msimbo wa mashine, sawa na jinsi hifadhidata ya picha iliyofafanuliwa ya ImageNet ilivyosaidia uundaji wa utambuzi wa muundo na mifumo ya kuona ya kompyuta. Mashindano mbalimbali ya programu yanatajwa kuwa mojawapo ya vyanzo vikuu vya malezi ya ukusanyaji.

Tofauti na watafsiri wa jadi, ambao hutekelezwa kwa kuzingatia sheria za tafsiri, mifumo ya kujifunza kwa mashine inaweza kunasa na kuzingatia muktadha wa matumizi ya msimbo. Wakati wa kubadilisha kutoka lugha moja ya programu hadi nyingine, muktadha ni muhimu sawa na wakati wa kutafsiri kutoka lugha moja ya binadamu hadi nyingine. Ukosefu huu wa kuzingatia muktadha ndio unaozuia msimbo kubadilishwa kutoka lugha za urithi kama vile COBOL.

Kuwa na hifadhidata kubwa ya utekelezaji wa algorithm katika lugha tofauti itasaidia kuunda mifumo ya ujifunzaji ya mashine ambayo, badala ya tafsiri ya moja kwa moja kati ya lugha maalum, inadhibiti uwakilishi wa kidhahania zaidi wa msimbo, bila kujali lugha maalum za programu. Mfumo kama huo unaweza kutumika kama mtafsiri, kutafsiri nambari iliyopitishwa katika lugha yoyote inayotumika kuwa uwakilishi wake wa ndani wa muhtasari, ambayo msimbo unaweza kutolewa katika lugha nyingi.

Mfumo huo pia utaweza kufanya mabadiliko ya pande mbili. Kwa mfano, benki na mashirika ya serikali yanaendelea kutumia miradi katika lugha ya kizamani ya COBOL. Mtafsiri kulingana na mashine kujifunza ataweza kubadilisha msimbo wa COBOL kuwa uwakilishi wa Java, na, ikiwa ni lazima, kutafsiri kipande cha Java hadi kwenye msimbo wa COBOL.

Kando na tafsiri kati ya lugha, maeneo kama hayo ya utumiaji wa CodeNet kama uundaji wa mifumo mahiri ya utaftaji wa msimbo na ugunduzi wa kiotomatiki wa mwamba, pamoja na uundaji wa viboreshaji na mifumo otomatiki ya kusahihisha misimbo imetajwa. Hasa, mifano iliyotolewa katika CodeNet ina vifaa vya metadata inayoelezea matokeo ya upimaji wa utendaji, saizi ya programu inayosababisha, matumizi ya kumbukumbu na hali, ambayo inaruhusu sisi kutofautisha nambari sahihi kutoka kwa nambari iliyo na makosa (kutofautisha nambari sahihi kutoka kwa nambari isiyo sahihi, ukusanyaji hasa ni pamoja na mifano na makosa, sehemu ambayo ni 29.5%). Mfumo wa kujifunza kwa mashine unaweza kutilia maanani metadata hii ili kutoa msimbo bora zaidi au kutambua kurudi nyuma katika msimbo uliochanganuliwa (mfumo unaweza kuelewa kwamba algoriti katika msimbo uliowasilishwa haijatekelezwa vyema au ina hitilafu).

Chanzo: opennet.ru

Kuongeza maoni