Tovejs transformation - Bidirectional transformation

I computerprogrammering er tovejstransformationer (bx) programmer, hvor et enkelt stykke kode kan køres på flere måder, således at de samme data undertiden betragtes som input og nogle gange som output. For eksempel kan et bx -løb i fremadgående retning omdanne input I til output O, mens det samme bx -løb bagud ville tage som inputversioner af I og O og producere en ny version af I som output.

Bidirektionelle modeltransformationer er et vigtigt specielt tilfælde, hvor en model er input til et sådant program.

Nogle tovejssprog er bijektive . Bijektiviteten af ​​et sprog er en alvorlig begrænsning af dets magt, fordi et bijektivt sprog blot relaterer to forskellige måder at præsentere de samme oplysninger på.

Mere generelt er et linsesprog, hvor der er en fornem fremadretning ("get"), der tager et konkret input til et abstrakt output, og kasserer nogle oplysninger i processen: den konkrete tilstand omfatter alle de oplysninger, der er i den abstrakte tilstand , og som regel nogle flere. Den bagudgående retning ("put") tager en konkret tilstand og en abstrakt tilstand og beregner en ny konkret tilstand. Linser skal overholde visse betingelser for at sikre fornuftig adfærd.

Det mest generelle tilfælde er symmetriske tovejstransformationer. Her deler de to stater, der er relateret, typisk nogle oplysninger, men hver indeholder også nogle oplysninger, der ikke er inkluderet i den anden.

Anvendelse

Tovejs transformationer kan bruges til at:

  • Bevar sammenhængen mellem flere informationskilder
  • Giv en 'abstrakt visning' for let at manipulere data og skrive dem tilbage til deres kilde

Ordforråd

Et tovejs-program, der adlyder visse love for rundrejser, kaldes en linse .

Eksempler på implementeringer

  • Boomerang er et programmeringssprog, der tillader skrivelinser at behandle tekstdataformater tovejs
  • Augeas er et konfigurationsstyringsbibliotek, hvis linsesprog er inspireret af Boomerang -projektet
  • biXid er et programmeringssprog til behandling af XML -data tovejs
  • XSugar tillader oversættelse fra XML til ikke-XML-formater

Se også

Referencer

eksterne links