Jump to content

Двунаправленное преобразование

В компьютерном программировании двунаправленные преобразования (bx) — это программы, в которых один фрагмент кода может выполняться несколькими способами, например, одни и те же данные иногда рассматриваются как входные, а иногда как выходные данные. Например, запуск bx в прямом направлении может преобразовать вход I в выход O, в то время как тот же запуск bx назад будет принимать в качестве входных версий I и O и создавать новую версию I в качестве выхода.

Двунаправленные преобразования модели являются важным частным случаем, когда модель вводится в такую ​​программу.

Некоторые двунаправленные языки являются биективными . Биективность языка — это жесткое ограничение его возможностей. [1] потому что биективный язык просто связывает два разных способа представления одной и той же информации.

Более общим является язык линз, в котором есть выделенное прямое направление («получить»), которое переводит конкретный ввод в абстрактный вывод, отбрасывая при этом некоторую информацию: конкретное состояние включает всю информацию, которая находится в абстрактном состоянии. и обычно еще немного. Обратное направление («пут») принимает конкретное состояние и абстрактное состояние и вычисляет новое конкретное состояние. Линзы должны соответствовать определенным условиям, чтобы обеспечить разумное поведение.

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

Использование [ править ]

Двунаправленные преобразования можно использовать для:

  • Поддерживать согласованность нескольких источников информации. [2]
  • Обеспечьте «абстрактное представление», чтобы легко манипулировать данными и записывать их обратно в источник.

Определение [ править ]

Двунаправленные преобразования делятся на различные хорошо изученные категории. [3]

Объектив это пара функций , ссылка на источник и вид . Если эти функции подчиняются трем законам линзы:

  • ПоставитьПолучить :
  • ПолучитьПут :
  • ПоставитьПоставить :

Это называется объективом с хорошим поведением . [4]

Связанное с этим понятие — призма , в которой сигнатуры функций вместо этого , . В отличие от линзы, призма не всегда может дать обзор; Кроме того, в отличие от линзы, если использовать призму, изображения достаточно , чтобы построить источник. Если линзы позволяют «фокусироваться» (просмотр, обновление) на части типа продукта , то призмы позволяют сфокусироваться (возможен просмотр, построение) на части типа суммы .

И линзы, и призмы, а также другие конструкции, такие как обходы , представляют собой более общее понятие двунаправленных преобразований, известных как оптика . [4]

Примеры реализации [ править ]

  • Boomerang — это язык программирования , который позволяет писать линзы для двунаправленной обработки текстовых форматов данных.
  • Augeas — это библиотека управления конфигурациями, язык линз которой вдохновлен проектом Boomerang.
  • biXid — это язык программирования для обработки XML- данных. двунаправленной [5]
  • XSugar позволяет переводить из XML в форматы, отличные от XML. [6]

См. также [ править ]

Ссылки [ править ]

  1. ^ Фостер, Нейт. «Семантика двунаправленных языков» (PDF) . Архивировано из оригинала (PDF) 26 июля 2011 года . Проверено 7 февраля 2011 г.
  2. ^ Чарнецкий, Кшиштоф; Фостер, Дж. Натан; Ху, Чжэньцзян; Ламмель, Ральф; Шюрр, Энди; Тервиллигер, Джеймс Ф. «Двунаправленные трансформации: междисциплинарная перспектива» (PDF) . Проверено 19 февраля 2024 г.
  3. ^ Фостер, Дж. Натан; Гринвальд, Майкл Б.; Мур, Джонатан Т.; Пирс, Бенджамин С .; Шмитт, Алан (май 2007 г.). «Комбинаторы для двунаправленных преобразований деревьев: лингвистический подход к проблеме представления-обновления» . Транзакции ACM в языках и системах программирования . 29 . дои : 10.1145/1232420.1232424 . S2CID   53234629 .
  4. ^ Jump up to: Перейти обратно: а б Райли, Митчелл (2018). «Категории оптики». arXiv : 1809.00738 [ мат.CT ].
  5. ^ КАВАНАКА, Шинья; ХОСОЯ, Харуо (2006). «biXid: язык двунаправленного преобразования XML» (PDF) . дои : 10.1145/1160074.1159830 . Архивировано из оригинала (PDF) 2 июля 2007 года . Проверено 7 февраля 2011 г.
  6. ^ «XSugar — двойной синтаксис для языков XML» . brics.dk . Проверено 19 февраля 2024 г.

Внешние ссылки [ править ]

Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 1407ecd233816363a5c8a9b62b3f6d83__1708366020
URL1:https://arc.ask3.ru/arc/aa/14/83/1407ecd233816363a5c8a9b62b3f6d83.html
Заголовок, (Title) документа по адресу, URL1:
Bidirectional transformation - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)