양방향 변환

Bidirectional transformation

컴퓨터 프로그래밍에서 양방향 변환(bx)은 동일한 데이터를 입력으로, 때로는 출력으로 간주하는 등 여러 가지 방법으로 하나의 코드를 실행할 수 있는 프로그램이다.예를 들어, 전진 방향의 bx 실행은 입력 I를 출력 O로 변환할 수 있는 반면, 동일한 bx 실행은 출력 I와 O의 입력 버전으로 받아들여 그 출력으로 새로운 버전의 I를 생성한다.

양방향 모델 변환은 모델이 그러한 프로그램에 입력되는 중요한 특별한 경우다.

어떤 양방향 언어들은 편향적이다.한 언어의 비주사성은 그 힘의 심각한 제약이다.[1] 왜냐하면, 하나의 비주사적 언어는 단지 동일한 정보를 표시하기 위한 두 가지 다른 방법을 연관시키는 것이기 때문이다.

보다 일반적인 것은 렌즈 언어로서, 추상적인 출력에 구체적인 입력을 취하는 구별되는 전진 방향("get")이 존재하며, 그 과정에서 어떤 정보를 버리게 된다: 구체적인 상태는 추상적인 상태에 있는 모든 정보를 포함하며, 대개는 그 이상의 정보를 포함한다.후진 방향("put")은 콘크리트 상태와 추상적인 상태를 취하고 새로운 콘크리트 상태를 계산한다.렌즈는 분별 있는 행동을 보장하기 위해 특정 조건을 준수해야 한다.

가장 일반적인 경우는 대칭 양방향 변환이다.여기서 관련된 두 주는 일반적으로 일부 정보를 공유하지만, 각 주에는 다른 주에는 포함되지 않은 일부 정보도 포함한다.

사용법

양방향 변환을 사용하여 다음을 수행할 수 있다.

  • 여러 정보[2] 출처의 일관성 유지
  • 데이터를 쉽게 조작하고 원본에 다시 쓸 수 있는 '추상적 보기' 제공

어휘

일정한 왕복법을[3] 준수하는 양방향 프로그램을 렌즈라고 한다.

구현 예제

  • 부메랑은 글쓰기 렌즈가 텍스트 데이터 형식을 양방향으로 처리할 수 있는 프로그래밍 언어다.
  • 아우게아스는 부메랑 프로젝트에서 영감을 얻은 렌즈 언어를 가진 구성 관리 도서관이다.
  • biXid는 XML 데이터를 양방향으로[4] 처리하기 위한 프로그래밍 언어다.
  • XSugar를 통해 XML 형식에서 비XML 형식으로[5] 변환 가능

참고 항목

참조

  1. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2011-07-26. Retrieved 2011-02-07.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  2. ^ http://www.cs.cornell.edu/~jn포스터/properties/properties-report.pdf
  3. ^ Riley, Mitchell (2018). "Categories of Optics". arXiv:1809.00738 [math.CT].
  4. ^ "Archived copy" (PDF). Archived from the original (PDF) on 2007-07-02. Retrieved 2011-02-07.{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크)
  5. ^ "XSugar - Dual Syntax for XML Languages".

외부 링크