IBM je otvorio CodeNet za sisteme mašinskog učenja koji prevode i proveravaju kod.

Kompanija IBM je predstavila inicijativu CodeNet, usmerenu na obezbeđivanje istraživačima skupa podataka koji omogućavaju eksperimentisanje sa primenom metoda mašinskog učenja za kreiranje prevodilaca sa jednog programskog jezika na drugi, kao i generatora i analizatora koda. CodeNet uključuje kolekciju od 14 miliona primera koda, koji rešavaju 4053 tipična programerska zadatka. U zbiru kolekcija broji oko 500 miliona redova koda i obuhvata 55 programskih jezika, kako savremenih jezika poput C++, Jave, Pythona i Go, tako i zastarelih, uključujući COBOL, Pascal i FORTRAN. Radovi projekta šire se pod licencom Apache 2.0, a skupovi podataka planiraju se distribuirati u obliku javnog dobra.

Primeri su obezbeđeni anotacijama i implementiraju identične algoritme na različitim programskim jezicima. Pretpostavlja se da će predloženi skup pomoći obuci sistema mašinskog učenja i razvoju inovacija u oblasti prevođenja i mašinske analize koda, slično tome kako je Baza podataka anotiranih slika ImageNet pomogla razvoju sistema prepoznavanja slika i mašinskog vida. Kao jedan od glavnih izvora formiranja kolekcije pominju se razna takmičenja u programiranju.

Za razliku od tradicionalnih prevodilaca koji su zasnovani na pravilima transformacije, sistemi mašinskog učenja mogu da hvataju i uzimaju u obzir kontekst korišćenja koda. Pri prevođenju sa jednog programskog jezika na drugi, kontekst je podjednako važan kao i pri prevođenju sa jednog ljudskog jezika na drugi. Upravo nedostatak uzimanja u obzir konteksta otežava prevođenje koda sa zastarelih jezika, poput COBOL-a.

Imanje velike baze realizacija algoritama na različitim jezicima pomoći će u stvaranju univerzalnih sistema mašinskog učenja, koji umesto direktne transkripcije između konkretnih jezika, manipulišu apstraktnijim prikazom koda, nezavisnim od konkretnih programskih jezika. Takav sistem može se koristiti kao prevodilac, koji prevodi prosledjeni kod na bilo kojem od podržanih jezika u svoje interno apstraktno predstavljanje, iz kojeg se zatim može generisati kod na mnogim jezicima.

Sistem će takođe moći da vrši dvostrane konverzije. Na primer, u bankama i državnim institucijama još uvek se koriste projekti na zastarjelom jeziku COBOL. Prevodilac zasnovan na sistemu mašinskog učenja moći će da konvertuje kod na COBOL-u u predstavljanje na jeziku Java, a po potrebi da prevede deo na Javi nazad u kod na COBOL-u.

Pored prevođenja između jezika, spominju se i druge oblasti primene CodeNet-a, poput kreiranja pametnih sistema za pretragu koda i automatizacije otkrivanja klonova, kao i razvoj optimizatora i sistema za automatsku korekciju koda. Konkretno, primeri predstavljeni u CodeNet-u su obogaćeni metapodacima koji opisuju rezultate testiranja performansi, rezultantnu veličinu programa, potrošnju memorije i stanje koje omogućava prepoznavanje ispravnog koda od koda sa greškama (da bi se razlikovao ispravan kod od netačnog, u kolekciju su posebno uključeni primeri sa greškama, čiji udeo iznosi 29,5%). Sistem mašinskog učenja može uzeti u obzir ove metapodatke za generisanje najoptimalnijeg koda ili za prepoznavanje regresija u analiziranom kodu (sistem može razumeti da je u prosleđenom kodu algoritam realizovan neoptimalno ili sadrži greške).

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster