jooq sql 을 알게 되어 궁금해서 찾아보던 중에 DSL이란 용어를 알게 되었다.
도메인 특화 언어(DSL)란?
DSL: Domain Specific Language
도메인 특화 언어는 관련 특정 분야에 최적화된 프로그래밍 언어이다. DSL은 해당 분야 또는 도메인의 개념과 규칙을 사용한다.
도메인 특화 언어와 프로그래밍 언어와의 차이점은?
도메인 특화 언어는 일반적으로 Java, C, Ruby 등의 범용 언어보다 덜 복잡하다. 보통 DSL은 해당 DSL이 사용될 분야의 전문가와 긴밀하게 협력하여 개발한다. 대부분의 경우 DSL은 소프트웨어 전문가가 아닌, 해당 DSL의 대상 분야에 능통한 비 프로그래머가 사용하도록 제작된다.
일반 프로그래밍 언어보다는 특정한 목적에 한정되어 문법이 단순하고 명확하며, 해당 도메인에서 편리한 사용이 가능하다. DSL을 사용하면 해당 도메인의 요구사항을 더 효과적으로 표현하고, 개발자의 생산성을 높이며, 코드의 가독성과 유지보수성을 높일 수 있다.
장점
- 간결함
API는 비즈니스 로직을 간편하게 캡술화하므로 반복을 피할 수 있고 코드를 간결하게 만들 수 있다. - 가독성
도메인 영역의 용어를 사용하므로 비 도메인 전문가도 코드를 쉽게 이해할 수 있다.
결과적으로 다양한 조직 구성원 간에 코드와 도메인 영역이 공유될 수 있다. - 유지보수
잘 설계된 DSL로 구현한 코드는 쉽게 유지 보수할 수 있다. - 높은 수준의 추상화
DSL은 도메인과 같은 추상화 수준에서 동작하므로 도메인의 문제와 직접적으로 관련되지 않은 세부 사항을 숨긴다.
단점
- 개발 비용
코드에 DSL을 추가하는 작업은 초기 프로젝트에 많은 비용과 시간이 소모되는 작업이다. - 호스팅 언어 한계
일부 자바 같은 범용 프로그래밍 언어는 장황하고 엄격한 문법을 가졌다.
이런 언어로는 사용자 친화적 DSL을 만들기 힘들다. 장황한 프로그래밍 언어를 기반으로 만든 DSL은 성가신 문법의 제약을 받고 읽기가 어려워진다. Java8의 람다 표현식이 이 문제를 해결할 수 있다.
'CS' 카테고리의 다른 글
CSR 과 SSR 그리고 SPA (1) | 2023.10.28 |
---|---|
jOOQ 란 (0) | 2023.04.28 |
패리티 비트 & 해밍 코드 (0) | 2023.03.12 |
애자일(Agile) 방법론 (0) | 2023.03.09 |
캐시 메모리 (0) | 2023.03.05 |