<설명>
- '도메인 특화 언어' 라는 번역이 대중적으로 쓰임.
- 특정 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 |
댓글