Привет. Исследователи из Лаборатории компьютерной науки и искусственного интеллекта Массачусетского технологического института (CSAIL) разработали новую систему, которая позволяет программистам переносить код из одной программы в другую. Программист может выбрать фрагмент кода из одной программы и точку вставки во второй программе, и система автоматически внесет необходимые изменения, такие как имена переменных, чтобы интегрировать код в новый контекст.
Важно, что система может осуществлять перевод между «представлениями данных», используемыми программами-донорами и получателями. Например, программа обработки изображений должна иметь возможность обрабатывать файлы в различных форматах, таких как jpeg, tiff или png. Но внутренне она будет представлять все эти изображения, используя единую стандартизованную схему. Однако, разные программы могут использовать разные внутренние алгоритмы. Новая система автоматически накладывает алгоритм программы донора на алгоритм программы получателя, чтобы импортировать код без проблем.
Новую система, получила название CodeCarbonCopy.
CodeCarbonCopy делает возможным автоматическое повторное использование кода. Это еще один шаг к автоматизации цикла разработки программ. Возможно, вы написали большую часть программного обеспечения, которое вам когда-либо может понадобится, теперь появилась возможность его повторного использования.
Исследователи провели восемь экспериментов, в которых они использовали систему для переноса кода между шестью популярными программами обработки изображений с открытым исходным кодом. Семь из восьми переносов были успешными, а программа-получатель правильно выполняла новые функции.
С новой разработкой первым шагом в пересадке кода из одной программы в другую является передача обоих кодов в один входной файл. Затем система сравнивает, как обе программы его обрабатывают.
Если, например, донорская программа выполняет серию операций над определенной частью данных и загружает результат в переменную с именем «mem_clip-> width
», а программа-получатель выполняет те же операции с одним и тем же фрагментом данных и загружает результат в переменную с именем «picture.width
», система сделает вывод, что переменные играют одни и те же роли в своих родительских программах.
Чтобы отображать перенос данных из одной программы в другую, система просматривает точные значения, которые обе программы хранят в памяти. Например, каждый пиксель в цифровом изображении определяется тремя значениями цвета: красный, зеленый и синий. Некоторые программы, однако, хранят эти тройки значений в порядке - синий, зеленый, красный.
Если CodeCarbonCopy находит системную связь между значениями, хранящимися одной программой, и значениями, хранящимися другой, он создает набор операций для преобразования между их представлениями данных.
CodeCarbonCopy хорошо работает с файловыми форматами, такими как изображения, чьи данные жестко организованы и с такими программами, как редакторы изображений, которые хранят представления данных в массивах, по существу являющихся рядами блоков памяти одинакового размера. В текущей работе исследователи стремятся обобщить свой подход к форматам файлов, что может обеспечить более гибкую организацию данных.
Мечта копипастера :) Представляю какие занятные баги придется отлавливать при попытках использовать эту штуку в реальной жизни :)))
Код будущих програм
Да, похоже, нас ждет много интересного)
Ваш пост поддержали следующие Инвесторы Сообщества "Добрый кит":
lumia, yurgent71, orezaku, vika-teplo, kis-dikiy
Поэтому я тоже проголосовал за него!
Узнать подробности о сообществе можно тут:
Разрешите представиться - Кит Добрый
Правила
Инструкция по внесению Инвестиционного взноса
Вы тоже можете стать Инвестором и поддержать проект!!!
Если Вы хотите отказаться от поддержки Доброго Кита, то ответьте на этот комментарий командой "!нехочу"
dobryj.kit теперь стал Делегатом! Ваш голос важен для всего сообщества!!!
Поддержите нас на странице https://golos.io/~witnesses, вот так: