양방향 변환
Bidirectional transformation컴퓨터 프로그래밍에서 양방향 변환(bx)은 동일한 데이터를 입력으로, 때로는 출력으로 간주하는 등 여러 가지 방법으로 하나의 코드를 실행할 수 있는 프로그램이다.예를 들어, 전진 방향의 bx 실행은 입력 I를 출력 O로 변환할 수 있는 반면, 동일한 bx 실행은 출력 I와 O의 입력 버전으로 받아들여 그 출력으로 새로운 버전의 I를 생성한다.
양방향 모델 변환은 모델이 그러한 프로그램에 입력되는 중요한 특별한 경우다.
어떤 양방향 언어들은 편향적이다.한 언어의 비주사성은 그 힘의 심각한 제약이다.[1] 왜냐하면, 하나의 비주사적 언어는 단지 동일한 정보를 표시하기 위한 두 가지 다른 방법을 연관시키는 것이기 때문이다.
보다 일반적인 것은 렌즈 언어로서, 추상적인 출력에 구체적인 입력을 취하는 구별되는 전진 방향("get")이 존재하며, 그 과정에서 어떤 정보를 버리게 된다: 구체적인 상태는 추상적인 상태에 있는 모든 정보를 포함하며, 대개는 그 이상의 정보를 포함한다.후진 방향("put")은 콘크리트 상태와 추상적인 상태를 취하고 새로운 콘크리트 상태를 계산한다.렌즈는 분별 있는 행동을 보장하기 위해 특정 조건을 준수해야 한다.
가장 일반적인 경우는 대칭 양방향 변환이다.여기서 관련된 두 주는 일반적으로 일부 정보를 공유하지만, 각 주에는 다른 주에는 포함되지 않은 일부 정보도 포함한다.
사용법
양방향 변환을 사용하여 다음을 수행할 수 있다.
- 여러 정보[2] 출처의 일관성 유지
- 데이터를 쉽게 조작하고 원본에 다시 쓸 수 있는 '추상적 보기' 제공
어휘
일정한 왕복법을[3] 준수하는 양방향 프로그램을 렌즈라고 한다.
구현 예제
- 부메랑은 글쓰기 렌즈가 텍스트 데이터 형식을 양방향으로 처리할 수 있는 프로그래밍 언어다.
- 아우게아스는 부메랑 프로젝트에서 영감을 얻은 렌즈 언어를 가진 구성 관리 도서관이다.
- biXid는 XML 데이터를 양방향으로[4] 처리하기 위한 프로그래밍 언어다.
- XSugar를 통해 XML 형식에서 비XML 형식으로[5] 변환 가능
참고 항목
참조
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2011-07-26. Retrieved 2011-02-07.
{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크) - ^ http://www.cs.cornell.edu/~jn포스터/properties/properties-report.pdf
- ^ Riley, Mitchell (2018). "Categories of Optics". arXiv:1809.00738 [math.CT].
- ^ "Archived copy" (PDF). Archived from the original (PDF) on 2007-07-02. Retrieved 2011-02-07.
{{cite web}}: CS1 maint: 타이틀로 보관된 사본(링크) - ^ "XSugar - Dual Syntax for XML Languages".
외부 링크
- 웨이백 머신에서 양방향 전환에 관한 GRACE 국제회의 (2014년 10월 12일 아카이브)
- 양방향 변환:Bx 위키
- 파체코, 휴고, 알치노 쿠냐."멀티포칼라: XML 스키마에 대한 전략적 양방향 변환 언어."모델 변형의 이론과 실천에 관한 국제 회의.2012년 베를린 하이델베르크 스프링거