
마틴 파울러(Martin Fowler)는 2005년 글에서 언어 워크벤치가 도메인 특화 언어(DSL)를 만들고 사용하는 데 따르는 부담을 낮출 수 있다고 설명한다. 다만 당시 도구는 초기 단계였고, 생산성 향상과 도메인 전문가의 개발 참여라는 기대가 실현될지는 아직 알 수 없다고 봤다.
파울러가 말하는 언어 지향 프로그래밍은 소프트웨어를 여러 DSL을 중심으로 개발하는 방식이다. DSL은 특정 문제 영역에 맞춘 제한적인 언어다. 예를 들어 고정 길이 파일의 각 필드를 객체 속성에 연결하는 규칙을 전용 문법으로 작성하면, 일반 목적 언어보다 그 작업에 필요한 내용을 간결하게 표현할 수 있다.
DSL은 별도 문법과 번역기를 두는 외부 DSL과, 기존 프로그래밍 언어의 일부 기능을 활용하는 내부 DSL로 나뉜다. 외부 DSL은 문제에 맞는 표현을 자유롭게 설계할 수 있지만, 파서와 도구를 따로 만들어야 하고 기본 언어와 연결되지 않는 문제가 있다. 내부 DSL은 기존 언어의 기능과 도구를 활용할 수 있지만, 그 언어의 문법에 제약을 받으며 DSL을 쓰는 사람도 호스트 언어를 알아야 할 수 있다.
언어 워크벤치는 이 둘의 장점을 결합하려는 도구다. 프로그램의 텍스트 파일이 아니라 지속적으로 저장되는 추상 표현을 원본으로 삼고, 이를 편집기에서 여러 방식으로 보여준다. 언어를 만들 때는 데이터 구조에 해당하는 스키마, 편집기, 실행 가능한 형태로 바꾸는 생성기를 정의한다. 편집기는 의미를 아는 IDE 기능을 제공할 수 있고, 여러 DSL이 서로 연결되도록 해 한 언어에서 이름을 바꾼 결과를 다른 곳에도 반영하는 방식도 가능하다는 구상이다.
파울러는 당시 관련 도구로 Intentional Software, JetBrains의 Meta Programming System(MPS), Microsoft의 Software Factories를 소개했다. 당시 이들은 모두 개발 초기 단계였으며, 대규모 소프트웨어 개발에 사용할 수 있으려면 시간이 더 필요하다고 밝혔다. MPS를 이용한 DSL 사례는 구체적인 편집 경험을 살펴볼 자료로 제시했다.
기대와 함께 해결할 과제도 있다. 언어 정의 방식의 표준과 워크벤치 간 교환 형식이 없으면 특정 업체의 도구에 종속될 수 있다. 텍스트 파일 대신 의미 모델을 원본으로 삼는 만큼 버전 관리에서 차이 비교와 병합을 지원해야 한다. DSL과 그 DSL로 작성한 프로그램을 함께 발전시키는 리팩터링도 중요하지만, 당시에는 성숙한 도구에서 얼마나 잘 지원될지 판단하기 이르다고 봤다.
도메인 전문가가 직접 개발에 참여할 수 있다는 기대 역시 확정된 성과가 아니다. 파울러는 비전문가의 프로그래밍을 내세운 기술이 전문 개발자를 대체하지 못했던 사례를 경계하면서도, 편집기를 통해 도메인 전문가가 개발 내용을 검토하고 기여할 수 있다면 개발자와 현업 사이의 소통을 개선할 가능성이 있다고 봤다. 그는 프로그래머의 생산성 향상이 더 실현 가능성이 높지만, 도메인 전문가와의 관계가 달라질 경우 영향은 더 클 수 있다고 평가했다.
원문은 2005년 6월 12일 발표됐다. 원문
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요