본문 바로가기
Programing/Knowledge

[Knowledge] Domain Specify Language (DSL)

by 꾸압 2022. 8. 20.

 

<설명>

  - '도메인 특화 언어' 라는 번역이 대중적으로 쓰임.

  - 특정 Domain(범주, 영역) 에서만 쓰이는 Language

  - 언어 지향 프로그래밍의 일종 (반대 개념 : 다중 언어 프로그래밍(Polyglot))

    @@ 언어 지향 프로그래밍 : 

      ==>Software를 개발할 때 하나의 Language만 사용함이 아니라 작업별로 가장 적합한 Language를 사용하는 것.

      ==> 겉으로 보기엔 Polyglot과 접근 방식이 유사해보이나(여러 Langauge 사용 및 통합하여 개발), 언어 지향 프로그래밍의 특징은 개발자가 고유한 DSL을 build 하거나 해당 접근 방식의 일부로 Domain Specify 개념을 사용해 기존 Language를 확장하는게 목적.

 


 

<DSL 이점>

  1) DSL을 적용하여 컴파일러와 마찬가지로 추상성 제거 및 효율적인 code 생성으로, runtime overhead 없이 Domain Specify하게 사용 가능.

  2) Language로 Domain 문제를 표현할 수 있다면, 작성 code가 구현 세부 정보로 인해 복잡해지지 않기에 더 명확히 판단 가능. (10줄 code를, 개발자 만의 언어로 2줄만에 표현하여 가독성 UP)

  3) Client 혹은 비개발 분야의 업무 담당자와의 소통이 월활하게 가능해짐.

  3) 이용하는 플랫폼 및 Programming Language 규제에서 자유롭게 표현 가능.

 


 

<예시>

  1) SQL 문법 형식이란 format은 MySQL이든 MariaDB든 Mongo DB 든 공통되어 나타나기에 범용성을 가진다.

    ==> But 특정 DB의 종류에 따라, 관계형에 따라 나누면 거기서만 기능하는 문법 및 code가 있으므로 각자가 DSL이 됨

 

  2) HTML 은 자체로서 범용성을 가지지만 JSP, ASP, CSS 등으로 나뉘면 DSL이 됨.

 

  3) CAD의 그래픽 특화 언어, Excel의 매크로, 게임 내 제공 custom Mod 등 그 application에서만 쓰이는 것 또한 DSL 대표 활용 예시.

 


 

<활용 예제>

  - 포토샵에서 이미지를 편집해야할 문제가 있다.

      * 일련의 X.25 선에서 ABC 규칙 12.3에 정의된 Transaction에 집중하다가, Transaction이 오면 XYZ 기업의 43B 형식으로 변환함. 그것을 위성 통신을 통해 다시 전송하고 추후 분석용으로 저장함.

 

    위 구술된 문장을 어떻게 Progamming Format으로 표현가능할까?

From X25LINE1 (Format = ABC123) {
	Put TELSTAR1 (Format = XYZ43B);
	Store DB;
}

 


 

<정리>

  - DSL이란? 특정 기능을 위해 구현&구성한 Minimal Language

 


 

<출처 1> https://www.jetbrains.com/ko-kr/mps/concepts/domain-specific-languages/

<출처 2> https://tasyblue.blogspot.com/2005/09/domain-specific-language.html

<출처 3>

 

 

'Programing > Knowledge' 카테고리의 다른 글

[Knowledge] Method Chaining (메소드 체이닝)  (0) 2022.08.30
[Knowledge] Token (토큰)  (0) 2022.08.25
[Knowledge] Polyglot in Programming  (0) 2022.08.18
[Knowledge] Overhead in C.S  (0) 2022.08.14

댓글