현재 상황에 가장 적합한 DSL(Domain-Specific Language을 선택하여 효과적으로 활용한다면, 복잡한 코드를 단순하게 만들거나, 고객과의 의사소통을 원활히 하며, 생산성을 향상시키고, 개발상의 병목을 없앨 수 있다. 소프트웨어 개발 분야의 저명한 전문가인 마틴 파울러는 전문 소프트웨어 개발자가 DSL이 과연 필요한지, 그리고 언제 활용해야 할지 결정할 때 필요한 정보를 제공한다. 그리고 실제로 DSL이 필요할 때, DSL을 효과적으로 만드는 기법과, 개발하려는 애플리케이션에 가장 알맞은 접근법을 소프트웨어 엔지니어가 선택할 수 있도록 돕는다.
이 책은 사실 2개의 책으로 구성된다. 저자는 먼저 내러티브 부분에서 가장 기본적인 DSL 원칙을 폭넓게 이해할 수 있도록 개요를 간략히 설명한다. 이를 통해 독자는 DSL이 어떻게 동작하는지, 그리고 XML과 같은 다른 방식에 비해 DSL의 커스텀 구문을 활용하면 더 유용한 경우가 언제인지를 배울 수 있다. 그런 후 개발자가 각 구현 기법을 적용할 때 필요한 세부 내용과 예제를 레퍼런스 부분에서 제시한다. 저자는 내부 DSL 뿐만 아니라 외부 DSL과 관련된 토픽을 모두 다루며, 컴퓨팅 대안 모델과 코드 생성 기법도 함께 설명한다.
이 책에서 설명하는 기법들은 근래에 등장한 객체 지향 언어 대부분에서 활용할 수 있다. 실제로 수많은 예제들을 자바와 C#으로 작성했으며, 루비를 사용한 예제들도 일부 포함되었다. 각 장은 되도록이면 독립적으로 구성했고, 레퍼런스 부분의 대다수 토픽은 익숙한 패턴 형태로 작성되었다.
이처럼 이 책은 DSL에 대해 폭넓게 다루므로, 개발자가 DSL에 대해 중요한 결정을 내릴 때 필요한 정보를 얻을 수 있다. 그리고 DSL을 사용하기로 결정했다면, 기술뿐만 아니라 업무적으로도 가치 있는 정보를 이 책을 통해 배울 수 있다.
** 다루는 내용
* DSL을 프레임워크나 라이브러리와 비교해 볼 때 다른 점과, 프레임워크와 라이브