Разработкой Repairnator занимались Мартин Монперрус и его команда из Королевского технологического института в Стокгольме. Разработчики рассказывают, что до сих пор боты, исправляющие ошибки в программном коде работали либо очень медленно, либо их «заплатки» были недостаточно качественными.
Шведским разработчикам удалось создать ИИ-алгоритм, который может конкурировать с человеком в написании патчей. «Это новая веха в противостоянии человека и машины в программировании», — говорит Монперрус.
Для чистоты эксперимента команда решила тестировать своего бота на GitHub — самом большом в мире хранилище ПО. ИИ специально замаскировали под человека: ему создали аккаунт, дали имя Люк Эскейп и даже фотографию в профиле, пишет MIT Technology Review. Разработчики говорят, что без этого сообщество ресурса относилось бы к алгоритму предвзято.
После создания камуфляжа Люка выпустили в свободное плавание в море ошибок в проектах с открытым программным кодом на GitHub.
В первой фазе эксперимента — с февраля по декабрь 2017 года — Люк проверил 14 188 проектов и написал 15 патчей, но из-за медлительности алгоритма ни один не был принят администрацией ресурса. Люди легко обгоняли ИИ.
Второй заход оказался успешнее. Люка научили работать совместно с сервисом непрерывной интеграции Travis, и дело пошло. 12 января этого года бот написал первый патч, который модераторы приняли, не подозревая, что Люк — ИИ. После этого были еще пять принятых патчей. Однажды Люк получил письмо от одного из разработчиков: «Мы принимаем исправления только от программистов, подписавших лицензионное соглашение».
Но Люк — алгоритм, у него нет рук, чтобы поставить подпись. Пришлось Монперрусу с коллегами выводить свое творение из тени.
Угроза автоматизации труда программистов беспокоит многих экспертов. Например, ИИ-сервис SapFix от Facebook помогает автоматически искать ошибки в коде, проводит тесты и предлагает разработчику лучшее решение. Алгоритм другой компании, DiffProf, рассчитывает энергозатраты будущих приложений. Вышеупомянутый GitHub тоже планирует активно внедрять ИИ для помощи разработчикам.