DSL은 특정 도메인(산업, 분야 등)에 특화되어 문제를 해결하는 언어.
고급 언어처럼 도메인 전문가가 쉽게 이해하고 프로그래머와 커뮤니케이션할 수 있도록 설계됨.
Ruby나 Lisp 계열 언어가 자주 활용됨.
Ruby의 직관적인 자연어 스타일 코드, Lisp의 확장 가능성 등이 장점으로 작용.
DSL은 특정 도메인 문제를 해결하기 위한 강력한 도구로, 도메인 전문가와의 원활한 의사소통 및 생산성 향상을 목표로 한다.
- 그러나 설계의 어려움과 하위 호환성 같은 단점도 존재하며, 성공적인 DSL을 만들기 위해 신중한 고려가 필요하다.
UNIX의 전통
호스트 언어의 구문을 확장하여 특정 기능을 구현한 DSL.
특징
API 접근 방식이 직관적이고, 기존 언어와 호환 가능.
메타 프로그래밍과 언어 확장을 통해 구체적인 형태를 갖춤.
기존 도구와 처리 결과 예측 용이.
작성 형태
원래 사용하던 언어에 새로운 구문(제어 구조 등)을 추가.
인라인 코드 형태.
적합한 언어
호스트 언어와 별개의 문법을 가진 형식적인 DSL (예: XML, Makefile).
특징
작성 특징
DSL 컴파일러를 통해 처리되거나,
범용 언어로 전환되고, 실행 파일에서 동적 로딩 가능.
적합한 언어
중복 제거 및 자동 생성(템플릿화).
코드 간결성과 높은 가독성.
도메인 전문가와 프로그래머의 커뮤니케이션 원활.
설계가 어렵고, 잘못 설계하면 코드 가독성 감소.
하위 호환성 유지의 어려움.
Java 관련 DSL
Ruby 관련 DSL
기타 DSL