Кардинально, система в состоянии перевести между «представлениями данных», используемыми программами дарителя и получателя. Программа обработки изображения, например, должна быть в состоянии обращаться с файлами в диапазоне форматов, такими как jpeg, размолвка или png. Но внутренне, это будет представлять все такие изображения, используя единственную стандартизированную схему.
Различные программы, однако, могут использовать различные внутренние схемы. Система исследователей CSAIL автоматически наносит на карту схему программы дарителя на того из получателя, чтобы импортировать кодекс беспрепятственно.Исследователи представили новую систему, назвал CodeCarbonCopy, на Симпозиуме Ассоциации вычислительной техники по Фондам Программирования.
«CodeCarbonCopy позволяет один из Святых Граалей программирования: автоматическое кодовое повторное использование», говорит Стелайос Сидироглоу-Дускос, исследователь в CSAIL и первый автор на бумаге. «Это – другой шаг к автоматизации человека далеко от цикла развития. Наша точка зрения – то, что, возможно, мы написали большую часть программного обеспечения, в котором мы будем когда-либо нуждаться – мы теперь просто должны снова использовать его».Исследователи провели восемь экспериментов, в которых они использовали CodeCarbonCopy, чтобы пересадить кодекс между шестью популярными общедоступными программами обработки изображения.
Семь из восьми пересадок были успешны с программой получателя, правильно выполняющей новую функциональность.Присоединением к Sidiroglou-Douskos на бумаге является Мартин Ринард, преподаватель электротехники и информатики; Фэн Лонг, аспирант MIT в электротехнике и информатике; и Эрик Лэхтинен и Энтони Эден, которые были программистами контракта в MIT, когда работа была сделана.
С необходимыми изменениямиС CodeCarbonCopy первый шаг в переселяющемся кодексе от одной программы до другого должен накормить их обоих тем же самым входным файлом. Система тогда выдерживает сравнение, как эти две программы обрабатывают файл.
Если, например, программа дарителя выполнит ряд операций на конкретной части данных и загрузит результат в переменную, названную «mem_clip-> ширина», и получатель выполняет те же самые операции на той же самой части данных и загружает результат в переменную, названную «picture.width», система выведет, что переменные играют те же самые роли в своих соответствующих программах.Как только это определило, что корреспонденции между переменными, CodeCarbonCopy представляет их пользователю.
Это также представляет все переменные в дарителе, для которого это не могло найти матчи в получателе, вместе с первоначальными определениями тех переменных. Часто, те переменные играют некоторую роль в дарителе, это не важно получателю. Пользователь может сигнализировать те переменные как ненужные, и CodeCarbonCopy автоматически удалит любые операции, которые используют их из пересаженного кодекса.Новый заказ
Чтобы нанести на карту представления данных от одной программы на те из другого, CodeCarbonCopy смотрит на точные ценности, которые обе программы хранят в памяти. Каждым пикселем в цифровом изображении, например, управляет три насыщенности цвета: красный, зеленый, и синий.
Некоторые программы, однако, хранят те тройки ценностей в заказе, красном, зеленом, синем, и другие хранят их в заказе, синем, зеленом, красном.Если CodeCarbonCopy считает систематические отношения между ценностями сохраненными одной программой и сохраненными другим, это производит ряд операций для перевода между представлениями.
CodeCarbonCopy работает хорошо с форматами файлов, такими как изображения, данные которых твердо организованы, и с программами, такими как процессоры изображения, те данные магазина представления во множествах, которые являются по существу рядами тождественно размерных единиц памяти. В продолжающейся работе исследователи надеются обобщать свой подход к форматам файлов, которые разрешают более гибкой организации данных и программам, которые используют структуры данных кроме множеств, таких как деревья или связанные списки.