Исследователи из Кембриджского университета и компании Microsoft, используя машинное обучение, разработали программу, которая способна создавать другие программы, заимствуя код. Ознакомиться с работой ученых можно здесь, а ее краткое изложение приводит New Scientist. Для работы новой программе, получившей название DeepCoder, нужны лишь входные и выходные данные.
В настоящее время существует множество языков программирования низкого и высокого уровней. При этом программистам для успешной работы нередко приходится изучать несколько языков программирования. При это программирование как правило недоступно людям, не изучавшим машинные языки.
Новая программа DeepCoder, по утверждению разработчиков, в будущем позволит программировать даже тем людям, которые не знают ни одного языка. Для этого им достаточно лишь будет словами описать, какой результат желательно получить; программу в соответствии с представленным описанием DeepCoder составит сам.
В настоящее время новой программе для работы необходимы лишь входные и выходные данные, то есть некий набор значений на входе программы и другой набор значений на выходе. Опираясь на эти данные программа может определить закономерности.
После того, как закономерности, связывающие входные и выходные данные будут найдены, DeepCoder самостоятельно будет искать в других программах подходящие куски кода и из них составлять готовую собственную программу. В случае, если дать DeepCoder описание промежуточных шагов, программа составит готовый код в несколько раз быстрее.
В конце января прошлого года исследователи из Массачусетского технологического университета представили программу Prophet, способную самостоятельно искать ошибки в исходном коде других программ и исправлять их. Для анализа и исправления программа использует стохастическую модель и способна к платформонезависимому применению исправлений кода.
Для работы с исходным кодом другого программного обеспечения Prophet использует данные об эффективных патчах, исходный код которых и описание опубликованы в открытых источниках в интернете. Для исправления ошибок алгоритм использует полученные из интернета и автоматически измененные патчи.
Во время автоматического исправления ошибок программа способна анализировать взаимодействие дописанного ей исправленного кода с остальным кодом исправляемой программы. Prophet способна работать с исходным кодом программного обеспечения, состоящим не из нескольких сотен, а тысяч и десятков тысяч строк. При этом новый алгоритм способен к самообучению.
Василий Сычёв