도메인 특화 언어(Domain Specific Language, DSL) 이란?

아현·2025년 3월 7일
0

Computer Science

목록 보기
69/69

출처

1. DSL(Domain Specific Language) 이란?


  • DSL은 특정 도메인(산업, 분야 등)에 특화되어 문제를 해결하는 언어.

    • Dave Thomas가 말한 "해당 문제 영역의 언어로 프로그래밍 솔루션을 꺼낸다"는 철학에 기반.
  • 고급 언어처럼 도메인 전문가가 쉽게 이해하고 프로그래머와 커뮤니케이션할 수 있도록 설계됨.

    • RubyLisp 계열 언어가 자주 활용됨.

    • Ruby의 직관적인 자연어 스타일 코드, Lisp의 확장 가능성 등이 장점으로 작용.

DSL은 특정 도메인 문제를 해결하기 위한 강력한 도구로, 도메인 전문가와의 원활한 의사소통생산성 향상을 목표로 한다.

  • 그러나 설계의 어려움과 하위 호환성 같은 단점도 존재하며, 성공적인 DSL을 만들기 위해 신중한 고려가 필요하다.
  • UNIX의 전통

    • 특정 영역의 문제를 해결하기 위해 작은 언어(little language) 혹은 미니 언어(mini language)를 만들어 사용해 왔으며, DSL의 개념과 유사.



UNIX의 전통


  • 특정 영역의 문제를 해결하기 위해 작은 언어(little language) 혹은 미니 언어(mini language)를 만들어 사용해 왔으며, DSL의 개념과 유사.



2. DSL의 종류


내부 DSL (Internal DSL)


  • 호스트 언어의 구문을 확장하여 특정 기능을 구현한 DSL.

    • API와 내부 DSL의 경계가 모호한 경우가 있음.
  • 특징

    • API 접근 방식이 직관적이고, 기존 언어와 호환 가능.

    • 메타 프로그래밍과 언어 확장을 통해 구체적인 형태를 갖춤.

    • 기존 도구와 처리 결과 예측 용이.

  • 작성 형태

    • 원래 사용하던 언어에 새로운 구문(제어 구조 등)을 추가.

    • 인라인 코드 형태.

  • 적합한 언어

    • Lisp, Ruby, Smalltalk 등.



외부 DSL (External DSL)


  • 호스트 언어와 별개의 문법을 가진 형식적인 DSL (예: XML, Makefile).

    • GUI 도구를 제공하는 경우도 있음.
  • 특징

    • 언어 작성자와 사용자의 목적에 따라 경계가 모호.
  • 작성 특징

    • DSL 컴파일러를 통해 처리되거나,

    • 범용 언어로 전환되고, 실행 파일에서 동적 로딩 가능.

  • 적합한 언어

    • Java, C#, C++ 등.

3. DSL의 장점과 단점


장점


  • 중복 제거 및 자동 생성(템플릿화).

  • 코드 간결성과 높은 가독성.

  • 도메인 전문가와 프로그래머의 커뮤니케이션 원활.

    • 예: XML, CSS, SQL.



단점


  • 설계가 어렵고, 잘못 설계하면 코드 가독성 감소.

  • 하위 호환성 유지의 어려움.



4. DSL 사례


  • Java 관련 DSL

    • ANT, Maven, struts-config.xml, S2DAO(HQL), JMock 등.
  • Ruby 관련 DSL

    • Rails Validations, ActiveRecord, Rake, RSpec, Capistrano, Cucumber.
  • 기타 DSL

    • SQL, CSS, 정규식(Regular Expression), Make, graphviz 등.



profile
For the sake of someone who studies computer science

0개의 댓글

관련 채용 정보