コンピュータ プログラミング において、双方向変換 (bx)とは、単一のコードを複数の方法で実行できるプログラムであり、同じデータが入力と見なされることもあれば、出力と見なされることもあります。たとえば、順方向に実行される bx は入力 I を出力 O に変換しますが、同じ bx を逆方向に実行すると、I と O のバージョンを入力として受け取り、出力として I の新しいバージョンを生成します。
双方向モデル変換は、モデルがそのようなプログラムに入力される重要な特殊なケースです。
双方向言語の中には、全単射なものもあります。言語の全単射性はその言語の力に厳しい制限を与えます。[1]なぜなら、全単射言語は、単に同じ情報を提示する2つの異なる方法を関連付けているだけだからです。
より一般的なのはレンズ言語です。レンズ言語には、具体的な入力を抽象出力に取り込む明確な順方向 (「get」) があり、その過程で一部の情報が破棄されます。具体的な状態には、抽象状態にあるすべての情報と、通常はそれ以上の情報が含まれます。逆方向 (「put」) は、具体的な状態と抽象状態を取り、新しい具体的な状態を計算します。レンズは、合理的な動作を保証するために、特定の条件に従う必要があります。
最も一般的なケースは、対称的な双方向変換です。この場合、関連する 2 つの状態は通常、何らかの情報を共有しますが、それぞれに他方には含まれていない情報も含まれています。
使用法
双方向変換は次の目的で使用できます。
- 複数の情報源の一貫性を維持する[2]
- データを簡単に操作し、ソースに書き戻すための「抽象ビュー」を提供します
意味
双方向変換は、よく研究されている様々なカテゴリーに分類されます。[3]
レンズは、光源と視野を関連付ける一対の機能です。これらの機能が 3 つのレンズ法則に従う場合、
- 取得:
- ゲットプット:
- プットプット:
これは行儀の良いレンズと呼ばれます。[4]
関連する概念はプリズムであり、関数のシグネチャは、 、になります。レンズとは異なり、プリズムは常にビューを提供するとは限りません。また、レンズとは異なり、プリズムが与えられた場合、ビューはソースを構築するのに十分です。レンズが積型の一部に「焦点を合わせる」(表示、更新)ことを可能にする場合、プリズムは和型の一部に焦点を合わせる(可能な表示、構築)ことを可能にします。
レンズとプリズム、そしてトラバーサルなどの他の構造は、光学として知られる双方向変換のより一般的な概念です。[4]
実装例
- Boomerangは、テキストデータ形式を双方向に処理するためのレンズを記述できるプログラミング言語です。
- Augeasは、Boomerangプロジェクトに触発されたレンズ言語を持つ構成管理ライブラリです。
- biXidはXMLデータを双方向に処理するためのプログラミング言語である[5]
- XSugarはXMLから非XML形式への変換を可能にする[6]
参照
参考文献
- ^ Foster, Nate. 「双方向言語の意味論」(PDF) 。 2011年7月26日時点のオリジナル(PDF)からアーカイブ。2011年2月7日閲覧。
- ^ チャルネツキ、クシシュトフ;フォスター、J.ネイサン。胡、鎮江市。ラルフ・レンメル。シュール、アンディ。 Terwilliger、James F.「双方向変換: 分野横断的な視点」(PDF) 。2024 年2 月 19 日に取得。
- ^ Foster, J. Nathan; Greenwald, Michael B.; Moore, Jonathan T.; Pierce, Benjamin C .; Schmitt, Alan (2007 年 5 月)。 「双方向ツリー変換のコンビネータ: ビュー更新問題への言語的アプローチ」。ACM Transactions on Programming Languages and Systems。29。doi : 10.1145 / 1232420.1232424。S2CID 53234629 。
- ^ ab ライリー、ミッチェル (2018). 「光学のカテゴリー」. arXiv : 1809.00738 [math.CT].
- ^ KAWANAKA, Shinya; HOSOYA, Haruo (2006). 「biXid: XML のための双方向変換言語」(PDF) . doi :10.1145/1160074.1159830. 2007年7月2日時点のオリジナル(PDF)からアーカイブ。 2011年2月7日閲覧。
- ^ 「XSugar - XML言語のデュアル構文」。brics.dk 。 2024年2月19日閲覧。
外部リンク
- 「GRACE 双方向変換に関する国際会議」。2014 年 10 月 12 日時点のオリジナルよりアーカイブ。
- 「双方向変換」 。Bx Wiki。2024年2 月 19 日閲覧。
- Pacheco, Hugo; Cunha, Alcino (2012)。Multifocal: XML スキーマの戦略的な双方向変換言語(PDF)。モデル変換の理論と実践に関する国際会議。Springer、ベルリン、ハイデルベルク。doi :10.1007/978-3-642-30476-7_6。
