Специалисты МТИ сообщили о разработке самообучаемой автоматизированной системы исправления ошибок в коде, на порядок более эффективной по сравнению с предыдущими подобными проектами. Система, получившая название Prophet, обучается на исправлениях, внесенных людьми в программы с открытым кодом, запоминая таким образом общие характеристики корректных версий. Конкретно, Prophet проанализировала 777 ошибок и исправлений из восьми популярных проектов Open Source, размещенных в репозитории GitHub.
Создатели Prophet до этого разработали алгоритм, который автоматически исправляет ошибки путем последовательных модификаций кода, но оказалось, что ему нужно слишком много времени, чтобы найти результат. Prophet, прежде чем воспользоваться этим алгоритмом, сортирует возможные исправления по степени вероятности того, что они верны.
Исследователи испытали систему на 69 реальных ошибках, найденных в программах с открытым кодом. Если другие подобные системы исправляли только по одной-две ошибки, то новая система — от 15 до 18 в зависимости от того, использовался ли «долгоиграющий» алгоритм.
По словам исследователей, важнее всего то, что у корректных образцов кода действительно обнаружились некие универсальные общие свойства, которые можно выучить на одном наборе приложений и применять на других.