ИБМ отвара ЦодеНет за системе машинског учења који преводе и верификују код

ИБМ је представио своју ЦодеНет иницијативу, која има за циљ да пружи истраживачима скуп података који им омогућава да експериментишу са употребом техника машинског учења за креирање преводилаца програмских језика, генератора кода и анализатора. ЦодеНет укључује колекцију од 14 милиона примера кода који решавају 4053 уобичајена програмска проблема. Укупно, колекција садржи око 500 милиона линија кода и покрива 55 програмских језика, како модерних језика као што су Ц++, Јава, Питхон и Го, тако и застарелих језика укључујући ЦОБОЛ, Пасцал и ФОРТРАН. Развој пројекта се дистрибуира под лиценцом Апацхе 2.0, а планирано је да скупови података буду дистрибуирани у облику јавног домена.

Примери су означени и имплементирају идентичне алгоритме у различитим програмским језицима. Очекује се да ће предложени скуп помоћи у обуци система за машинско учење и развоју иновација у области превођења и рашчлањивања машинског кода, слично као што је ИмагеНет база података слика помогла у развоју система за препознавање образаца и компјутерског вида. Као један од главних извора формирања колекције наводе се различита такмичења у програмирању.

За разлику од традиционалних преводилаца, који се имплементирају на основу правила трансформације, системи машинског учења могу ухватити и узети у обзир контекст употребе кода. Приликом претварања из једног програмског језика у други, контекст је једнако важан као и када се преводи са једног људског језика на други. Овај недостатак разматрања контекста је оно што спречава конвертовање кода из застарелих језика као што је ЦОБОЛ.

Поседовање велике базе података имплементација алгоритама на различитим језицима ће помоћи у стварању универзалних система машинског учења који, уместо директног превођења између одређених језика, манипулишу апстрактнијим приказом кода, независно од специфичних програмских језика. Такав систем се може користити као преводилац, преводећи пренесени код на било ком од подржаних језика у његову интерну апстрактну репрезентацију, из које се потом може генерисати код на више језика.

Систем ће такође моћи да врши двосмерне трансформације. На пример, банке и владине агенције настављају да користе пројекте на застарелом језику ЦОБОЛ. Преводилац заснован на машинском учењу ће моћи да конвертује ЦОБОЛ код у Јава репрезентацију и, ако је потребно, преведе Јава фрагмент назад у ЦОБОЛ код.

Поред превода између језика, помињу се и области примене ЦодеНет-а као што су креирање система за паметно претраживање кода и аутоматизација детекције клонова, као и развој оптимизатора и система за аутоматску корекцију кода. Конкретно, примери представљени у ЦодеНет-у опремљени су метаподацима који описују резултате тестирања перформанси, резултујућу величину програма, потрошњу меморије и стање, што нам омогућава да разликујемо исправан код од кода са грешкама (да бисмо разликовали исправан код од нетачног кода, збирка посебно обухвата примере са грешкама чији је удео 29.5%). Систем машинског учења може узети у обзир ове метаподатке да генерише најоптималнији код или да идентификује регресије у анализираном коду (систем може да разуме да алгоритам у достављеном коду није оптимално имплементиран или садржи грешке).

Извор: опеннет.ру

Додај коментар