Исследователи из лаборатории искусственного интеллекта Массачусетского технологического института представили систему, которая позволяет преобразовывать код из одной программы в другую, сообщает MIT News.
Чтобы использовать часть нужного кода, достаточно выбрать его из одной программы и указать точку для вставки в другой, CodeCarbonCopy автоматически произведёт все изменения — например, заменит имена переменных.
Определив соответствие переменных, новинка покажет пользователю названия тех из них, которым не нашлось соответствия в «программе-получателе». При этом пользователь может отметить, какие переменные стоит удалить, если их сохранение не имеет значения для результативности итоговой программы.
«Это функциональность, которой недоставало предыдущим аналогам. [...] Возможность удалить несущественные части кода при его переносе — важное достижение», — отмечает профессор Виталий Шматиков.
Система проверяет и точные значения, которые программы хранят в памяти. Например, каждый пиксель в цифровом изображении определяется тремя маркерами цвета: красный, зеленый и синий. Некоторые программы хранят эти значения в порядке «красный, зелёный, голубой», а другие — в порядке «голубой, зелёный, красный». CodeCarbonCopy находит связь между значениями одной программы и генерирует набор операций для корректного переноса кода в другую.
«CodeCarbonCopy приближает нас к «Святому Граалю» программирования — автоматическому повторному использованию кода. Это важный шаг к автоматизации цикла разработки. Человечество, вероятно, уже написало большинство нужного кода — просто нужно научиться использовать его заново», — считает главный автор исследования Стелиос Сидироглу-Дускос.
Создав систему, исследователи MIT провели восемь экспериментов, в которых они использовали свою систему для «перевода» кода между шестью популярными программами обработки изображений с открытыми исходными данными. Семь из восьми преобразований были успешными, а программа-получатель правильно выполняла новые функции.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.