En la programación de computadoras, las transformaciones bidireccionales (bx) son programas en los que una sola pieza de código se puede ejecutar de varias maneras, de modo que los mismos datos a veces se consideran entrada y, a veces, salida. Por ejemplo, una ejecución bx en la dirección de avance podría transformar la entrada I en la salida O, mientras que la misma ejecución bx hacia atrás tomaría como entrada versiones de I y O y produciría una nueva versión de I como salida.
Las transformaciones de modelos bidireccionales son un caso especial importante en el que un modelo se introduce en dicho programa.
Algunos lenguajes bidireccionales son biyectivos . La bijetividad de un lenguaje es una restricción severa de su bidireccionalidad, [1] porque un lenguaje biyectivo simplemente relaciona dos formas diferentes de presentar la misma información.
Más general es un lenguaje de lentes, en el que hay una dirección de avance distinguida ("get") que lleva una entrada concreta a una salida abstracta, descartando cierta información en el proceso: el estado concreto incluye toda la información que está en el estado abstracto y, por lo general, algunos más. La dirección hacia atrás ("poner") toma un estado concreto y un estado abstracto y calcula un nuevo estado concreto. Se requiere que las lentes obedezcan ciertas condiciones para garantizar un comportamiento sensato.
El caso más general es el de las transformaciones bidireccionales simétricas. Aquí los dos estados que están relacionados suelen compartir alguna información, pero cada uno también incluye alguna información que no está incluida en el otro.
Uso
Las transformaciones bidireccionales se pueden utilizar para:
- Mantener la coherencia de varias fuentes de información [2]
- Proporcione una 'vista abstracta' para manipular fácilmente los datos y volver a escribirlos en su fuente.
Vocabulario
Un programa bidireccional que obedece a ciertas leyes de ida y vuelta [3] se denomina lente .
Ejemplos de implementaciones
- Boomerang es un lenguaje de programación que permite escribir lentes para procesar formatos de datos de texto bidireccionalmente
- Augeas es una biblioteca de gestión de configuraciones cuyo lenguaje de lentes está inspirado en el proyecto Boomerang
- biXid es un lenguaje de programación para procesar datos XML bidireccionalmente [4]
- XSugar permite la traducción de formatos XML a formatos no XML [5]
Ver también
Referencias
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 26 de julio de 2011 . Consultado el 7 de febrero de 2011 .CS1 maint: copia archivada como título ( enlace )
- ^ http://www.cs.cornell.edu/~jnfoster/papers/grace-report.pdf
- ^ https://arxiv.org/abs/1809.00738
- ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 2007-07-02 . Consultado el 7 de febrero de 2011 .CS1 maint: copia archivada como título ( enlace )
- ^ http://www.brics.dk/xsugar/
enlaces externos
- Reunión internacional GRACE sobre transformaciones bidireccionales en Wayback Machine (archivado el 12 de octubre de 2014)
- Transformaciones bidireccionales: The Bx Wiki
- Pacheco, Hugo y Alcino Cunha. " Multifocal: un lenguaje estratégico de transformación bidireccional para esquemas XML ". Congreso Internacional sobre Teoría y Práctica de Transformaciones de Modelos. Springer, Berlín, Heidelberg, 2012.