В компьютерном программировании двунаправленные преобразования (bx) - это программы, в которых один фрагмент кода может выполняться несколькими способами, так что одни и те же данные иногда рассматриваются как входные, а иногда как выходные. Например, запуск bx в прямом направлении может преобразовать вход I в выход O, в то время как тот же запуск bx в обратном направлении будет принимать в качестве входных версий I и O и создавать новую версию I в качестве своего выхода.
Двунаправленные преобразования модели являются важным частным случаем, когда модель вводится в такую программу.
Некоторые двунаправленные языки биективны . Биективность языка - это серьезное ограничение его двунаправленности [1], потому что биективный язык просто связывает два разных способа представления одной и той же информации.
Более общим является язык линз, в котором есть выделенное прямое направление («получить»), которое принимает конкретный ввод к абстрактному выводу, отбрасывая некоторую информацию в процессе: конкретное состояние включает в себя всю информацию, которая находится в абстрактном состоянии. , и обычно еще несколько. Обратное направление («положить») принимает конкретное состояние и абстрактное состояние и вычисляет новое конкретное состояние. Линзы должны соответствовать определенным условиям для обеспечения разумного поведения.
Самый общий случай - это симметричные двунаправленные преобразования. Здесь два связанных состояния обычно разделяют некоторую информацию, но каждое также включает некоторую информацию, которая не включена в другое.
Применение
Двунаправленные преобразования можно использовать для:
- Поддерживать согласованность нескольких источников информации [2]
- Обеспечьте «абстрактное представление», чтобы легко манипулировать данными и записывать их обратно в источник.
Словарь
Двунаправленная программа, которая подчиняется определенным законам двустороннего обмена [3] , называется линзой .
Примеры реализаций
- Boomerang - это язык программирования, который позволяет писать линзы для двунаправленной обработки текстовых форматов данных.
- Augeas - это библиотека управления конфигурациями, чей язык линз вдохновлен проектом Boomerang.
- biXid - это язык программирования для двунаправленной обработки XML-данных [4]
- XSugar позволяет переводить из XML в форматы, отличные от XML [5]
Смотрите также
Рекомендации
- ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 26 июля 2011 года . Проверено 7 февраля 2011 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ http://www.cs.cornell.edu/~jnfoster/papers/grace-report.pdf
- ^ https://arxiv.org/abs/1809.00738
- ^ «Архивная копия» (PDF) . Архивировано из оригинального (PDF) 2007-07-02 . Проверено 7 февраля 2011 .CS1 maint: заархивированная копия как заголовок ( ссылка )
- ^ http://www.brics.dk/xsugar/
Внешние ссылки
- Международное совещание GRACE по двунаправленным трансформациям на Wayback Machine (архивировано 12 октября 2014 г.)
- Двунаправленные преобразования: Bx Wiki
- Пачеко, Хьюго и Альчино Кунья. « Multifocal: стратегический язык двунаправленного преобразования для схем XML ». Международная конференция по теории и практике модельных преобразований. Шпрингер, Берлин, Гейдельберг, 2012 г.