제임스 많이 만들어 그것은 매우 분명 DSL을 소프트웨어 재사용을위한 좋은 방법 (그와 내가 함께 UC 어바인에 있었다) 이유 :
- 그들은이 문제에 대한 관심의 개념을 캡처 도메인
- 그들은 해당 도메인에서 작동 사회에 익숙한 표기법을 사용
- 그들은 그것이
을 제공으로 DSL 조각이 정신을 검사 할 수 있도록 답을 생산하는 사양/솔루션 구성 요소의 구성의 규칙을 정의
그의 Draco 시스템은 DSL 설명을 수락하고 Draco가 구현 지식 조각 ("상세 규칙")을 적용하여 저수준 코드로 컴파일 한 DSL 설명 다음에 높은 수준의 DSL 낮은 수준의 DSL로 최적화/낮은 수준의 DSL로 최적화하고, 보통 컴파일러 (예 : LISP 또는 C 또는 Ada 또는 COBOL 또는 ...)에 제공 할 수있을만큼 충분히 낮은 수준의 추상화로 DSL에 도달 할 때까지 반복합니다.
이것은 일련의 DSL이 계층 구조의 계층을 통해 낮은 수준의 코드로 구체화 할 수있게하는 그의 세련미 및 최적화 패러다임입니다. 따라서 계층화 된 도메인의 조합 가능성을 얻을 수 있으며 매우 높은 추상화 수준에서 작업 할 수 있습니다.
그래서 문제 사양 및 구현 지식을 포착하고이를 코드에 적용합니다. 추상화, 명세, 구현, 와우, 재사용 ... 80 년대 초반에 많은 사람들이 여전히 붙어있는 것처럼 보이는 "코드"를 재사용하는 것만이 아닙니다. 코드는 재사용하기가 정말로 어렵습니다.
이것은 "서브 루틴 - 구성 요소"와 비교할 때 정말 훌륭한 패러다임입니다 (현재이 개념은 "내부 DSL"로서 도메인 표기법, 사양 검사, 구현 및 구성 요소를 놓치고 있습니다).
나는 당신이 그의 박사 학위 논문 (그의 많은 다른 논문들과 함께 here 접근 가능)을주의 깊게 읽어야한다고 생각한다. 그것은 기대했던 것보다 훨씬 더 접근하기 쉽습니다. 그것은 수수한 수학으로 가득차 있지 않습니다. 그의 종류의 DSL을 만드는 방법에 대한 개념과 데모가 가득합니다.