Boomerang
Boomerang은 텍스트 데이터에 대한 양방향 변환(bidirectional transformation)을 작성하도록 설계된 연구용 프로그래밍 언어다. University of Pennsylvania의 Nathan Foster, Benjamin C. Pierce와 동료들이 발전시켰으며...
| 분류 | 양방향 데이터 변환 프로그래밍 언어 |
|---|---|
| 연구 주체 | University of Pennsylvania 연구진 |
| 주요 연구자 | Aaron Bohannon, Nathan Foster, Benjamin Pierce 외 |
| 발표 시기 | 2007~2008년 |
| 기술 기반 | 양방향 변환, lens |
| 주요 대상 | 텍스트 데이터 형식 |
| 프로그래밍 모델 | 선언형 변환, 조합적 렌즈 |
| 핵심 동작 | get, put |
| 일관성 원리 | 양방향 갱신 법칙 |
| 정규식 활용 | 텍스트 형식의 기술·변환 |
| 관련 연구 | Harmony, Unison |
| 주요 사용처 | 구성 파일과 데이터 동기화 연구 |
| 논문 | Boomerang: Resourceful Lenses for String Data |
Boomerang은 텍스트 데이터에 대한 양방향 변환(bidirectional transformation)을 작성하도록 설계된 연구용 프로그래밍 언어다. University of Pennsylvania의 Nathan Foster, Benjamin C. Pierce와 동료들이 발전시켰으며, 2008년 프로그래밍 언어 연구 논문에서 주요 개념이 발표되었다. JSON·XML처럼 일정한 구조를 갖는 형식뿐 아니라 사람이 직접 편집하는 설정 파일처럼 형식이 일정하지 않은 텍스트 데이터를 서로 다른 표현 사이에서 일관되게 동기화하는 문제를 다루려 했다.[1]
언어의 중심 추상화는 렌즈(lens)다. 일반적인 변환 함수가 원본에서 결과를 한 방향으로 계산하는 데 비해, 렌즈는 원본으로부터 관찰 가능한 값을 얻는 get과 수정한 값을 원본에 반영하는 put을 서로 관련된 연산으로 정의한다. 이를 통해 한쪽 표현을 바꿨을 때 다른 쪽에도 변경이 일관되게 전파되도록 한다. 바람직한 양방향 변환에서는 관찰 결과를 그대로 되돌려 넣어도 원본이 변하지 않고, 갱신을 적용한 뒤 다시 읽으면 갱신한 값이 나오는 등의 법칙을 만족해야 한다.
Boomerang은 텍스트 형식의 부분 구조를 정규 표현식 기반으로 기술하고, 단순한 렌즈를 조합하여 복잡한 파일 구조를 다루는 변환을 구성할 수 있게 한다. 변환 과정에서는 텍스트의 주석·공백·형식과 같이 한쪽 표현에서 사용하지 않는 정보가 보존되는지가 중요하다. 이 성질은 구성 파일의 일부 값을 프로그램으로 수정하면서 사용자가 정리한 원본 서식을 불필요하게 바꾸지 않으려는 요구와 직접 관련된다.[2]
Boomerang은 파일 동기화 연구인 Unison과 Harmony의 문제의식에서 이어졌으며, 모든 계산을 표현하는 일반적인 시스템 프로그래밍 언어보다는 양방향 데이터 변환을 특화된 언어 차원에서 보장하려는 시도였다. 이 언어의 역사적 가치는 변환 프로그램의 기능뿐 아니라 양쪽 갱신이 서로 충돌하지 않도록 하는 의미론적 법칙을 설계의 중심에 놓았다는 점에 있다.