Программный комплекс студентов MIT автоматически исправляет работу программ

image

На конференции, посвящённой разработке и реализации языков программирования, команда компьютерных специалистов из Массачусетского технологического института (MIT) представила систему с удивительными характеристиками. По их утверждению, этот программный комплекс автоматически находит ошибки в программах, и исправляет их, подставляя на их место подходящие по функциональности куски от других программ. При этом для работы системе вовсе не нужно знакомиться с исходным кодом исправляемой программы — ей достаточно исполняемого файла.

Программисты-виртуозы назвали свою программу CodePhage (кодофаг). Разработчики поясняют, что их система «анализирует выполнение программы и характеризует типы проверок безопасности, которая та проводит». После чего кодофаг может взять такие же проверки у других программ-доноров, даже если те написаны на других языках программирования, и скормить их программе-реципиенту. Каким образом для этого выбираются программы-доноры, разработчики не уточнили.

«Программ с открытым кодом накопилось уже очень много — в репозиториях находятся миллионы проектов, и многие из них соответствуют сходным спецификациям,- говорит Стелиос Сидироглу-Дускос, под руководством которого был разработан CodePhage. — Даже если по сути программы разные, у них часто могут найтись компоненты со сходной функциональностью. При помощи CodePhage когда-нибудь можно будет создать такую гибридную систему, которая включает лучшие компоненты из всех доступных реализаций».
Чтобы запустить поиск ошибок, волшебному кодофагу требуется немного — набор входных данных, при которых изучаемая программа падает, и другой, при которых она не падает. Затем кодофаг автоматически запускает программу-донора с этими наборами данных, и записывает её работу. Например, если программа-реципиент умеет открывать файлы определённого формата, но на каком-то файле спотыкается — то CodePhage записывает всё, что делает с этим файлом «правильная» программа-донор, в частности, какие проверки она совершает. После чего кодофаг анализирует, в чём работа программы-донора отличается от работы программы-реципиента, и соответствующим образом исправляет реципиента.

Разработчики утверждают, что их программа успешно исправила неправильно работающие программы, и оптимистично смотрят в будущее, в котором программистам вообще не придётся писать те куски кода, функциональность которых была уже кем-то реализована.

«Технология заимствования кода у другой программы со схожей функциональностью и исправления с его помощью неправильно работающей программы — это, конечно, круто,- сказал, комментируя работу специалистов, Эмери Бергер, профессор информатики из другого Массачусетского университета, находящегося в городе Амхерст. — Честно говоря, я удивлён, что она вообще работает».

© Geektimes