IBM atver CodeNet mašīnmācības sistēmām, kas tulko un pārbauda kodu

IBM ir atklājusi savu CodeNet iniciatīvu, kuras mērķis ir nodrošināt pētniekiem datu kopu, kas ļauj viņiem eksperimentēt ar mašīnmācīšanās paņēmienu izmantošanu, lai izveidotu programmēšanas valodu tulkotājus, kodu ģeneratorus un analizatorus. CodeNet ietver 14 miljonu kodu piemēru kolekciju, kas atrisina 4053 izplatītas programmēšanas problēmas. Kopumā kolekcija satur aptuveni 500 miljonus koda rindu un aptver 55 programmēšanas valodas, gan modernās valodas, piemēram, C++, Java, Python un Go, gan mantotās valodas, tostarp COBOL, Pascal un FORTRAN. Projekta izstrādes tiek izplatītas ar Apache 2.0 licenci, un datu kopas plānots izplatīt publiskā domēna veidā.

Piemēri ir anotēti un realizē identiskus algoritmus dažādās programmēšanas valodās. Paredzams, ka piedāvātais komplekts palīdzēs apmācīt mašīnmācīšanās sistēmas un izstrādāt inovācijas tulkošanas un mašīnkodu parsēšanas jomā, līdzīgi kā ImageNet anotētā attēlu datubāze palīdzēja izstrādāt modeļu atpazīšanas un datorredzes sistēmas. Kā viens no galvenajiem krājuma veidošanas avotiem tiek minēti dažādi programmēšanas konkursi.

Atšķirībā no tradicionālajiem tulkotājiem, kas tiek ieviesti, pamatojoties uz tulkošanas noteikumiem, mašīnmācīšanās sistēmas var uztvert un ņemt vērā koda izmantošanas kontekstu. Pārvēršot no vienas programmēšanas valodas uz citu, konteksts ir tikpat svarīgs kā tulkojot no vienas cilvēku valodas citā. Šis konteksta apsvēršanas trūkums ir tas, kas neļauj pārveidot kodu no mantotām valodām, piemēram, COBOL.

Liela datubāze ar algoritmu ieviešanu dažādās valodās palīdzēs izveidot universālas mašīnmācīšanās sistēmas, kas tā vietā, lai veiktu tiešu tulkošanu starp noteiktām valodām, manipulē ar abstraktāku koda attēlojumu neatkarīgi no konkrētām programmēšanas valodām. Šādu sistēmu var izmantot kā tulkotāju, pārtulkojot pārsūtīto kodu jebkurā no atbalstītajām valodām tā iekšējā abstraktajā attēlojumā, no kura pēc tam kodu var ģenerēt vairākās valodās.

Sistēma varēs veikt arī divvirzienu transformācijas. Piemēram, bankas un valsts aģentūras turpina izmantot projektus novecojušajā COBOL valodā. Uz mašīnmācīšanos balstīts tulkotājs varēs pārvērst COBOL kodu Java attēlojumā un, ja nepieciešams, pārtulkot Java fragmentu atpakaļ COBOL kodā.

Papildus tulkošanai starp valodām tiek minētas tādas CodeNet pielietojuma jomas kā viedo kodu meklēšanas sistēmu izveide un klonu noteikšanas automatizācija, kā arī optimizētāju un automātiskās koda korekcijas sistēmu izstrāde. Jo īpaši CodeNet piedāvātie piemēri ir aprīkoti ar metadatiem, kas apraksta veiktspējas pārbaudes rezultātus, iegūto programmas lielumu, atmiņas patēriņu un stāvokli, kas ļauj atšķirt pareizo kodu no koda ar kļūdām (lai atšķirtu pareizo kodu no nepareiza koda, krājumā īpaši iekļauti piemēri ar kļūdām, kuru īpatsvars ir 29.5%). Mašīnmācīšanās sistēma var ņemt vērā šos metadatus, lai ģenerētu visoptimālāko kodu vai identificētu regresijas analizētajā kodā (sistēma var saprast, ka algoritms iesniegtajā kodā nav optimāli ieviests vai satur kļūdas).

Avots: opennet.ru

Pievieno komentāru