도메인 고유의 언어
Domain-specific language도메인 고유 언어(DSL)는 특정 응용 프로그램 도메인에 특화된 컴퓨터 언어입니다.이는 도메인 간에 광범위하게 적용 가능한 범용 언어(GPL)와는 대조적입니다.DSL에는 웹 페이지용 HTML과 같은 공통 도메인에 널리 사용되는 언어부터 MUSH 소프트 코드와 같은 일부 소프트웨어에만 사용되는 언어까지 다양한 종류가 있습니다.DSL은 언어의 종류에 따라 세분화할 수 있으며 도메인 고유의 마크업 언어, 도메인 고유의 모델링 언어(더 일반적으로 사양 언어), 도메인 고유의 프로그래밍 언어를 포함합니다.특수 목적의 컴퓨터 언어는 컴퓨터 시대에 항상 존재해 왔지만, "도메인 고유 언어"라는 용어는 도메인 고유 모델링의 증가로 인해 더욱 대중화되었습니다.단순한 DSL, 특히 단일 애플리케이션에서 사용되는 DSL은 비공식적으로 미니 언어라고 불리기도 합니다.
범용 언어와 도메인 고유의 언어 사이의 경계가 항상 명확한 것은 아닙니다.언어는 특정 도메인에 특화된 특징을 가지고 있지만 보다 광범위하게 적용되거나, 반대로 원칙적으로 광범위한 응용이 가능하지만 실제로는 주로 특정 도메인에 사용됩니다.예를 들어 Perl은 원래 AWK 및 셸 스크립트와 동일한 도메인을 위해 텍스트 처리 및 글루 언어로 개발되었지만 이후 범용 프로그래밍 언어로 주로 사용되었습니다.반면 PostScript는 튜링 완전 언어이며 원칙적으로 모든 작업에 사용할 수 있지만 실제로는 페이지 기술 언어로 좁게 사용됩니다.
사용하다
적절한 DSL의 설계와 사용은 도메인에 적합한 언어를 사용하는 도메인 엔지니어링의 중요한 부분입니다.이것은 기존의 DSL 또는 GPL을 사용하거나 새로운 DSL을 개발하는 것으로 구성될 수 있습니다.언어 지향 프로그래밍에서는 문제를 표현하는 특수 목적 언어의 작성을 문제 해결의 표준 부분으로 간주합니다.과정.기존 언어를 재사용하는 것이 아니라 도메인 고유의 언어를 만드는 것은 언어가 특정 유형의 문제 또는 해결책을 기존 언어가 허용하는 것보다 더 명확하게 표현할 수 있고 문제의 유형이 충분히 자주 다시 나타나는 경우에 도움이 될 수 있습니다.실용적으로 DSL은 특정 문제 영역, 특정 문제 표현 기술, 특정 해결 기술 또는 도메인의 다른 측면에 특화될 수 있다.
개요
도메인 고유의 언어는 특정 도메인 내의 문제를 해결하기 위해 특별히 작성되며, (기술적으로는 가능하지만) 도메인 외부의 문제를 해결할 수 있도록 의도되어 있지 않습니다.이와는 대조적으로 범용 언어는 많은 도메인의 문제를 해결하기 위해 작성됩니다.도메인은 비즈니스 영역일 수도 있습니다.비즈니스 영역의 예는 다음과 같습니다.
- 생명보험증서(대형 보험사에 의해 내부적으로 개발된 생명보험증서
- 전투 시뮬레이션
- 급여 계산
- 과금
도메인 고유의 언어는 작은 프로그래밍 언어와 스크립트 언어 사이에 있으며 프로그래밍 라이브러리와 유사한 방식으로 자주 사용됩니다.이 개념들 사이의 경계는 스크립트 언어와 범용 언어 사이의 경계와 매우 흡사하게 모호합니다.
설계 및 구현 중
도메인 고유의 언어는 설계와 구현에서 매우 구체적인 목표를 가진 언어(또는 선언된 구문 또는 문법)입니다.도메인별 언어는 Generic Eclipse Modeling System에서 만든 언어, Eclipse Modeling Framework와 같은 프로그래밍 추상화 또는 텍스트 언어 중 하나일 수 있습니다.예를 들어 명령줄 유틸리티 grep에는 텍스트 행 패턴과 일치하는 정규 표현 구문이 있습니다.sed 유틸리티는 정규 표현을 대조 및 치환하기 위한 구문을 정의합니다.이러한 작은 언어들은 종종 셸 내에서 함께 사용되어 보다 복잡한 프로그래밍 작업을 수행할 수 있습니다.
도메인 고유의 언어와 스크립트 언어 간의 경계가 다소 모호하지만 도메인 고유의 언어에는 파일 시스템 액세스, 프로세스 간 제어 및 풀 기능의 프로그래밍 언어, 스크립트 등을 특징짓는 기타 기능에 대한 낮은 수준의 기능이 부족한 경우가 많습니다.많은 도메인 고유의 언어가 바이트 코드나 실행 가능한 코드로 컴파일되지 않고 다양한 종류의 미디어 오브젝트로 컴파일됩니다.GraphViz는 Csound가 오디오 파일로 컴파일하는 PostScript, GIF, JPEG 등으로 내보냅니다.또한 POV와 같은 레이트레이싱 도메인 고유의 언어는 그래픽 파일로 컴파일합니다.SQL과 같은 컴퓨터 언어는 흥미로운 사례를 제시합니다.특정 도메인 고유의 언어로 간주될 수 있습니다.이것은 특정 도메인(SQL의 경우 관계형 데이터베이스에 액세스 및 관리)에 한정되어 있어 다른 응용 프로그램에서 호출되는 경우가 많지만 SQL은 많은 스크립트 언어보다 키워드와 함수가 많기 때문입니다.프로그래밍에 있어서의 데이터베이스 조작의 보급과 그 언어의 전문가가 되기 위해서 필요한 숙달의 양 때문에, 그 자체가 하나의 언어로서 기능하고 있습니다.
또한 많은 도메인별 언어들이 API를 노출하여 실행 흐름을 중단하거나 별도의 프로세스를 호출하지 않고 다른 프로그래밍 언어에서 액세스할 수 있으므로 프로그래밍 라이브러리로 작동할 수 있습니다.
프로그래밍 도구
일부 도메인 고유의 언어는 시간이 지남에 따라 확장되어 완전한 기능을 갖춘 프로그래밍 도구를 포함하므로 언어가 도메인 고유의 언어인지 아닌지에 대한 질문이 더욱 복잡해집니다.하나의 XML 그래프를 다른 그래프로 변환하기 위해 특별히 설계된 함수 언어 XSLT가 좋은 예입니다.XSLT는 시작부터 확장되어 다양한 형식의 파일 시스템 상호 작용, 문자열 및 날짜 조작, 데이터 입력을 가능하게 합니다.
모델 구동 공학에서, 도메인 고유의 언어의 많은 예는 어소션으로 모델을 장식하는 언어인 OCL이나 도메인 고유의 변환 언어인 QVT와 같이 발견될 수 있다.그러나 UML과 같은 언어는 일반적으로 범용 모델링 언어입니다.
요약하자면, 비유가 유용할 수 있다: 아주 작은 언어는 음식을 베는 것에서부터 나무를 베는 것까지 수천 가지의 다른 방법으로 사용될 수 있는 칼과 같다.영역 고유의 언어는 전기 드릴과 같습니다.다양한 용도를 가진 강력한 도구이지만 특정 컨텍스트, 즉 사물에 구멍을 뚫는 것입니다.General Purpose Language는 다양한 작업을 수행하기 위한 다양한 도구를 갖춘 완전한 워크벤치입니다.프로그래머는 현재의 워크벤치를 보고 더 나은 드릴이 필요하다는 것을 깨닫고 특정 도메인 고유의 언어가 바로 그것을 제공한다는 것을 알게 되면 도메인 고유의 언어를 사용해야 합니다.
도메인 고유의 언어 토픽
외부 및 임베디드 도메인 고유의 언어
독립 인터프리터 또는 컴파일러를 통해 구현되는 DSL은 외부 도메인 고유 언어라고 합니다.잘 알려진 예로는 LaTeX나 AWK가 있습니다.임베디드(또는 내부) 도메인 고유의 언어라고 하는 개별 카테고리는, 통상은 라이브러리로 호스트 언어내에 실장되어 호스트 언어의 구문에 한정되는 경향이 있습니다.다만, 이것은 호스트 언어의 [1]기능에 의해서 다릅니다.
사용 패턴
도메인 고유의 [2][3]언어에는 몇 가지 사용 패턴이 있습니다.
- 사용자 직접 조작을 통해 실행되는 스탠드아론 툴을 사용한 처리.대부분의 경우 명령줄 또는 Makefile(정규 표현 조회를 위한 grep, sed, lex, yacc, GraphViz 툴 세트 등)에서 실행됩니다.
- 프로그래밍 언어 매크로 시스템을 사용하여 구현되며 컴파일 시간 또는 실시간으로 호스트 범용 언어로 변환 또는 확장되는 도메인별 언어
- 임베디드 도메인 고유 언어(eDSL)[4]는 호스트 범용 언어의 구문 또는 그 서브셋을 이용하여 도메인 고유 언어 요소(데이터 유형, 루틴, 메서드, 매크로 등)를 추가하는 라이브러리로 구현됩니다.(예: jQuery, React, Embedded SQL, LINQ)
- C나 Perl과 같은 범용 언어로 작성된 프로그램에서 (실행 시) 호출되어 특정 기능을 수행하며 종종 더 많은 처리를 위해 "호스트" 프로그래밍 언어로 작업 결과를 반환합니다.일반적으로 도메인 고유 언어용 인터프리터 또는 가상 머신이 내장되어 있습니다.호스트 애플리케이션(예: 형식 문자열, 정규 표현 엔진)
- 사용자 어플리케이션(예를 들어 스프레드시트 내의 매크로 언어)에 포함되어 (1) 어플리케이션 사용자가 작성한 코드를 실행하기 위해 사용되는 도메인 고유의 언어 (2) 어플리케이션에 의해 동적으로 생성된 언어 또는 (3) 둘 다.
많은 도메인 고유의 언어를 여러 [citation needed]가지 방법으로 사용할 수 있습니다.호스트 언어에 내장된 DSL 코드는 sed, AWK, Perl 또는 JavaScript의 정규식 등 특별한 구문을 지원하거나 문자열로 전달할 수 있습니다.
설계 목표
소프트웨어 엔지니어링에 대해 도메인 고유의 언어 접근방식을 채택하는 것은 위험과 기회를 모두 수반합니다.잘 설계된 도메인 고유의 언어를 통해 이들 사이의 적절한 균형을 찾을 수 있습니다.
도메인 고유의 언어에는 범용 언어와 대조되는 중요한 설계 목표가 있습니다.
- 도메인 고유의 언어는 그다지 포괄적이지 않습니다.
- 도메인 고유의 언어는 도메인 내에서 훨씬 더 표현력이 높습니다.
- 도메인 고유의 언어는 최소한의 용장성을 보여야 합니다.
이디옴
프로그래밍에서 숙어는 프로그래머가 공통 개발 태스크를 처리하기 위해 강요하는 방법입니다. 예를 들어 다음과 같습니다.
- 창을 닫기 전에 데이터가 저장되었는지 확인하십시오.
- 명령줄 매개 변수가 프로그램 동작에 영향을 미치기 때문에 변경될 때마다 코드를 편집합니다.
범용 프로그래밍 언어는 이러한 숙어를 거의 지원하지 않지만, 도메인별 언어는 이를 설명할 수 있습니다. 예를 들어 다음과 같습니다.
- 스크립트는 자동으로 데이터를 저장할 수 있습니다.
- 도메인 고유의 언어는 명령줄 입력을 파라미터화할 수 있습니다.
예
도메인 고유의 언어의 예로는 HTML, 연필과 같은 그림을 위한 로고, Verilog와 VHDL 하드웨어 기술 언어, 매트릭스 프로그래밍을 위한 MATLAB와 GNU 옥타브, 기호 수학용 Mathematica, Maple과 Maxima, 반응형 및 분산형 시스템을 위한 사양과 기술 언어, 스프레드시트와 매크로, SQL 등이 있습니다.관계형 데이터베이스 쿼리, 파서 작성용 YACC 문법, 렉서 지정용 정규 표현, 다이어그램 작성용 범용 이클립스 모델링 시스템, 사운드 및 음악 합성용 Csound, GraphViz 및 GrGen 입력 언어, 그래프 레이아웃 및 그래프 개서에 사용되는 소프트웨어 패키지, Hashicorp Configuration Terraform 및 기타 Hashicorp 도구에 사용되는 언어인 Puppet에는 자체 구성 언어도 있습니다.
GameMaker 언어
GameMaker Studio에서 사용하는 GML 스크립트 언어는 프로그래밍을 쉽게 배울 수 있는 초보 프로그래머를 대상으로 하는 도메인별 언어입니다.언어는 델파이, C++, BASIC 등 여러 언어가 혼합되어 있지만, 완전한 프로그래밍 언어의 구조, 데이터 유형 및 기타 기능은 부족합니다.내장 기능의 대부분은 휴대하기 쉽도록 샌드박스로 되어 있습니다.언어는 주로 누구나 쉽게 언어를 습득하고 게임을 개발할 수 있도록 하는 역할을 한다.
ColdFusion 마크업 언어
ColdFusion의 관련 스크립트 언어는 데이터 기반 웹 사이트의 도메인 고유 언어의 또 다른 예입니다.이 스크립트 언어는 Java 등의 언어와 서비스를 짜맞추기 위해 사용됩니다.웹 사이트에서 사용하기 위한 NET, C++, SMS, 이메일, 이메일 서버, http, ftp, Exchange, 디렉토리 서비스 및 파일 시스템.
ColdFusion Markup Language(CFML)에는 ColdFusion 페이지에서 데이터 소스와의 상호 작용, 데이터 조작 및 출력 표시에 사용할 수 있는 태그 세트가 포함되어 있습니다.CFML 태그 구문은 HTML 요소 구문과 유사합니다.
얼랑 OTP
Erlang Open Telecom Platform은 원래 Ericson 내에서 도메인 고유의 언어로 사용하도록 설계되었습니다.언어 자체는 유한 상태의 머신, 범용 서버 및 이벤트 매니저를 작성하는 라이브러리의 플랫폼을 제공합니다.이러한 플랫폼에서는 엔지니어는 C나 C++ 등의 혼재 도메인을 대상으로 하는 다른 언어를 능가하는 것으로, 업계 벤치마크에 나타나 있는 애플리케이션을 신속히 도입하거나 라이브러리를 지원할 수 있습니다.그 언어는 이제 공식적으로 오픈 소스이며 그들의 웹사이트에서 다운로드 할 수 있다.
필터 마이스터
FilterMeister는 Photoshop 호환 이미지 처리 필터 플러그인을 만드는 특정 목적을 위해 C 기반의 프로그래밍 언어를 사용하는 프로그래밍 환경입니다. FilterMeister는 Photoshop 플러그인 자체로서 실행되며 스크립트를 로드, 실행하거나 독립된 플러그인으로 컴파일 및 내보낼 수 있습니다.FilterMeister 언어는 C 언어 및 함수 라이브러리의 상당 부분을 재현하지만 Photoshop 플러그인의 컨텍스트 내에서 사용할 수 있는 기능만을 포함하고 있으며 이 특정 도메인에서만 유용한 많은 특정 기능을 추가합니다.
MediaWiki 템플릿
MediaWiki의 템플릿 기능은 페이지 템플릿 작성 및 MediaWiki 페이지의 다른 MediaWiki 페이지로의 변환(참조 포함)을 지원하는 것을 기본 목적으로 하는 임베디드 도메인 고유의 언어입니다.
소프트웨어 엔지니어링 용도
소프트웨어 엔지니어링의 생산성과 품질을 향상시키기 위해 도메인 고유의 언어에 많은 관심이 있었습니다.도메인 고유의 언어는 효율적인 소프트웨어 엔지니어링을 위한 견고한 도구 세트를 제공할 수 있습니다.이러한 툴은 중요한 소프트웨어 시스템의 개발에 도입되기 시작하고 있습니다.
소프트웨어 비용 절감[5] 툴킷이 그 예입니다.툴킷은 요건 사양을 작성하기 위한 사양 에디터, 변수 의존성을 표시하기 위한 의존성 그래프 브라우저, 사양의 잘 형성된 공식에서 누락된 사례를 포착하기 위한 일관성 검사기, 모델 검사기 및 특정 특성에 대한 프로그램 속성을 검사하기 위한 정리 프로버를 포함한 유틸리티 세트입니다.요구 사항에 따라 자동으로 불변량을 생성하는 불변 생성기.
새로운 개발은 언어 지향 프로그래밍으로, 주로 도메인 고유의 언어를 생성, 최적화 및 사용하는 것을 기반으로 하는 통합 소프트웨어 엔지니어링 방법론입니다.
메타 컴파일러
언어지향 프로그래밍과 다른 모든 형태의 도메인 고유 언어는 메타 컴파일러라고 불리는 컴파일러 쓰기 도구의 클래스입니다.메타컴파일러는 도메인 고유의 언어를 위한 파서와 코드 생성기를 생성하는 데 유용할 뿐만 아니라 메타컴파일러 자체가 메타프로그래밍 도메인을 위해 특별히 설계된 도메인 고유의 메타 언어를 컴파일합니다.
메타 컴파일러는 도메인 고유의 언어를 해석하는 것 외에 광범위한 소프트웨어 엔지니어링 및 분석 도구를 생성하는 데 유용합니다.메타 컴파일러 방법론은 프로그램 변환 시스템에서 종종 볼 수 있습니다.
컴퓨터 과학과 컴퓨터 산업에서 중요한 역할을 [6]한 메타 컴파일러는 Meta-II와 그 후속 TreeMeta를 [7]포함합니다.
버전 4 이전의 언리얼 엔진 및 기타 게임
언리얼과 언리얼 토너먼트는 언리얼스크립트라는 언어를 공개했다.이를 통해 경쟁 제품인 Quake에 비해 빠른 개량을 할 수 있었습니다(Id Tech 2 엔진 사용).Id Tech 엔진은 표준 C 코드를 사용하여 C를 학습하고 적절하게 적용해야 하며 UnrealScript는 사용 편의성과 효율성을 위해 최적화되었습니다.마찬가지로, 보다 최근의 게임 개발에서는 독자적인 언어가 도입되었습니다.또 하나의 일반적인 예는 스크립트 [citation needed]작성용 Lua입니다.
정책 자동화를 위한 규칙 엔진
다양한 비즈니스 규칙 엔진은 정부와 민간 산업 모두에서 사용되는 정책 및 비즈니스 규칙을 자동화하기 위해 개발되었습니다.ILOG, Oracle Policy Automation, DTRules, Drools 등은 다양한 문제 도메인을 지원하는 것을 목적으로 DSL을 지원합니다.DTRules는 규칙 집합 내에서 여러 DSL을 사용하기 위한 인터페이스를 정의합니다.
Business Rules Engine의 목적은 비즈니스 로직의 표현을 가능한 한 사람이 읽을 수 있는 방식으로 정의하는 것입니다.이를 통해 주제별 전문가와 개발자 모두 동일한 비즈니스 로직 표현을 사용하여 작업할 수 있습니다.대부분의 규칙 엔진은 DSL을 선호하는 프로그래밍 구문 대신 비즈니스 로직(예를 들어 선언 규칙 또는 의사결정 테이블 사용)의 제어 구조를 단순화하는 접근 방식을 제공합니다.
통계 모델링 언어
통계 모델러는 R(S 언어의 구현), Bugs, Jags 및 Stan과 같은 도메인 고유의 언어를 개발했습니다.이 언어들은 베이지안 모델을 설명하기 위한 구문을 제공하고 시뮬레이션을 사용하여 모델을 해결하기 위한 방법을 생성합니다.
여러 프로그래밍 언어에 대한 모델 및 서비스 생성
웹 애플리케이션용 JavaScript, 문서용 HTML, 고성능 코드용 C++ 등 도메인 고유의 언어에 대한 인터페이스 기술 언어에 기반한 객체 처리 및 서비스를 생성합니다.이는 Apache Trift 또는 Google Protocol Buffers와 같은 언어 간 프레임워크에 의해 수행됩니다.
게르킨
Gherkin은 테스트 케이스를 정의하여 소프트웨어 동작을 체크하도록 설계된 언어이며 동작의 구현 방법을 지정하지 않습니다.이는 자연어 구문과 선 중심의 설계를 사용하여 비기술 사용자가 읽고 사용할 수 있도록 설계되었습니다.그런 다음 Gherkin으로 정의된 테스트를 일반 프로그래밍 언어로 구현해야 합니다.다음으로 Gherkin 프로그램의 스텝은 개발자가 아닌 사람이 접근할 수 있는 메서드 호출 구문 역할을 합니다.
기타 예
도메인 고유의 언어에는 다음과 같은 현저한 예가 있습니다.
장점과 단점
- 도메인 고유의 언어를 사용하면 문제 영역의 추상화 수준과 관용어로 해결책을 표현할 수 있습니다.도메인 전문가 자신이 도메인 고유의 언어 프로그램을 이해하고, 검증하고, 수정하고, 개발하기도 합니다.그러나,[8] 이것은 드문 경우입니다.
- 도메인 고유의 언어를 사용하면 도메인 수준에서 검증할 수 있습니다.언어 구문이 안전하다면 그것으로 쓰여진 어떤 문장도 [citation needed]안전하다고 여겨질 수 있다.
- 도메인 고유의 언어를 사용하면 비즈니스 정보 시스템의 개발을 기존의 소프트웨어 개발자에서 (기술적 전문지식이 부족하더라도)[9] 도메인에 대한 보다 깊은 지식을 가진 일반적인 대규모 도메인 익스퍼트 그룹으로 전환할 수 있습니다.
- 도메인 고유의 언어는 범위가 한정되어 있기 때문에 배우기 쉽습니다.
몇 가지 단점은 다음과 같습니다.
- 새로운 언어 학습 비용
- 적용 범위가 한정되어 있다
- 도메인 고유의 언어 설계, 구현 및 유지 보수 비용 및 도메인 고유의 언어 개발에 필요한 도구(IDE)
- 적절한 범위의 검색, 설정 및 유지.
- 도메인 고유성과 범용 프로그래밍 언어 구조 간의 균형을 맞추기 어렵다.
- 수작업으로 코딩된 소프트웨어에 비해 프로세서 효율이 저하될 수 있습니다.
- 유사한 비표준 도메인 고유 언어의 확산. 예를 들어, 한 보험 회사 내에서 사용되는 DSL과 다른 보험 [10]회사 내에서 사용되는 DSL입니다.
- DSL 프로그램을 기술자가 아닌 사람이 직접 [8]작성하거나 수정하는 것은 어려울 수 있습니다.
- DSL을 IT 시스템의 다른 컴포넌트와 통합하는 어려움 증가(범용 언어와의 통합에 비해).
- 특정 DSL에 대한 전문가의 공급이 적으면 인건비가 증가하는 경향이 있다.
- 코드 예를 찾기가 더 어렵습니다.
도메인 고유의 언어를 설계하기 위한 도구
- JetBrains MPS는 도메인별 언어를 설계하기 위한 도구입니다.언어 파서의 한계를 극복하고 테이블이나 다이어그램이 있는 DSL 편집기를 구축할 수 있는 투영 편집을 사용합니다.언어 지향 프로그래밍을 구현합니다.MPS는 언어 정의 환경, 언어 워크벤치 및 이러한 [11]언어를 위한 통합 개발 환경(IDE)을 결합합니다.
- MontiCore는 도메인 고유의 언어를 효율적으로 개발하기 위한 언어 워크벤치입니다.DSL을 정의하는 확장 문법 형식을 처리하고 DSL [12]문서를 처리하기 위한 Java 구성 요소를 생성합니다.
- Xtext는 프로그래밍 언어 및 도메인 고유 언어(DSL)를 개발하기 위한 오픈 소스 소프트웨어 프레임워크입니다.표준 파서 생성기와 달리 Xtext는 파서뿐만 아니라 추상 구문 트리에 대한 클래스 모델도 생성합니다.또한 완전한 기능을 갖추고 커스터마이즈 가능한 이클립스 기반 [13]IDE를 제공합니다.
- Racket은 네이티브 코드, JIT 및 Javascript 컴파일러, IDE(Emacs, Vim, VSCode 등 지원) 및 도메인별 [14][15]언어 및 범용 언어 작성을 모두 지원하도록 설계된 명령줄 도구를 포함하는 크로스 플랫폼 언어 도구 체인입니다.
「 」를 참조해 주세요.
레퍼런스
![]() |
- ^ Fowler, Martin; Parsons, Rebecca. "Domain Specific Languages". Retrieved 6 July 2019.
- ^ a b Marjan Mernik, Jan Heering, andthony M.슬론도메인 고유의 언어를 개발하는 시기와 방법.ACM 컴퓨팅 조사, 37(4):316-344, 2005.doi:10.1145/1118890.118892
- ^ a b 디오미디스 스피넬리스.도메인 고유의 언어에 대한 주목할 만한 설계 패턴.시스템과 소프트웨어의 저널, 56 (1):91~99, 2001년 2월.doi:10.1016/S0164-1212(00)00089-3
- ^ Felleisen, Matthias; Findler, Robert Bruce; Flatt, Matthew; Krishnamurthi, Shriram; Barzilay, Eli; McCarthy, Jay; Tobin-Hochstadt, Sam (March 2018). "A Programmable Programming Language". Communications of the ACM. 61 (3): 62–71. doi:10.1145/3127323. S2CID 3887010. Retrieved 15 May 2019.
- ^ Heitmeyer, C. (1998). "Using the SCR* toolset to specify software requirements" (PDF). Proceedings. 2nd IEEE Workshop on Industrial Strength Formal Specification Techniques. IEEE. pp. 12–13. doi:10.1109/WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archived from the original (PDF) on 2004-07-19.
- ^ Shorre, D. V. (1964). "META II a syntax-oriented compiler writing language". Proceedings of the 1964 19th ACM National Conference: 41.301–41.3011. doi:10.1145/800257.808896. S2CID 43144779.
- ^ Carr, C. Stephen; Luther, David A.; Erdmann, Sherian (1969). "The TREE-META Compiler-Compiler System: A Meta Compiler System for the Univac 1108 and General Electric 645". University of Utah Technical Report RADC-TR-69-83. Archived from the original on February 1, 2020.
- ^ a b Freudenthal, Margus (1 January 2009). "Domain Specific Languages in a Customs Information System". IEEE Software: 1. doi:10.1109/MS.2009.152.
- ^ Aram, Michael; Neumann, Gustaf (2015-07-01). "Multilayered analysis of co-development of business information systems" (PDF). Journal of Internet Services and Applications. 6 (1). doi:10.1186/s13174-015-0030-8. S2CID 16502371.
- ^ Miotto, Eric. "On the integration of domain-specific and scientific bodies of knowledge in Model Driven Engineering" (PDF). Archived from the original (PDF) on 2011-07-24. Retrieved 2010-11-22.
- ^ "JetBrains MPS: Domain-Specific Language Creator".
- ^ "MontiCore".
- ^ "Xtext".
- ^ Tobin-Hochstadt, S.; St-Amour, V.; Culpepper, R.; Flatt, M.; Felleisen, M. (2011). "Languages as Libraries" (PDF). Programming Language Design and Implementation.
- ^ Flatt, Matthew (2012). "Creating Languages in Racket". Communications of the ACM. Retrieved 2012-04-08.
추가 정보
![]() |
- Dunlavey (1994). Building Better Applications: a Theory of Efficient Software Development. International Thomson Publishing. ISBN 0-442-01740-5.
- Heitmeyer, Constance (1998). "Using the SCR Tool-set to Specify Software Requirements" (PDF). Proceedings, Second IEEE Workshop on Industrial Strength Formal Specification Techniques, Boca Raton, FL, Oct. 19, 1998: 12–13. doi:10.1109/WIFT.1998.766290. ISBN 0-7695-0081-1. S2CID 16079058. Archived (PDF) from the original on February 1, 2020.
- Mernik, Marjan; Heering, Jan & Sloane, Anthony M. (2005). "When and how to develop domain-specific languages". ACM Computing Surveys. 37 (4): 316–344. doi:10.1145/1118890.1118892. S2CID 207158373.
- Spinellis, Diomidis (2001). "Notable design patterns for domain specific languages". Journal of Systems and Software. 56 (1): 91–99. doi:10.1016/S0164-1212(00)00089-3.
- Parr, Terence (2007). The Definitive ANTLR Reference: Building Domain-Specific Languages. ISBN 978-0-9787392-5-6.
- Larus, James (2009). "Spending Moore's Dividend". Communications of the ACM. 52 (5): 62–69. doi:10.1145/1506409.1506425. ISSN 0001-0782. S2CID 2803479.
- Werner Schuster (June 15, 2007). "What's a Ruby DSL and what isn't?". C4Media. Retrieved 2009-09-08.
- Fowler, Martin (2011). Domain-Specific Languages. ISBN 978-0-321-71294-3.
- Brambilla, Marco; Cabot, Jordi; Wimmer, Manuel (2012). Model Driven Software Engineering in Practice. Synthesis Lectures on Software Engineering. Vol. #1. Morgan & Claypool. ISBN 978-1-62705-708-0.
외부 링크
- Eric S의 "Minilanguages", Unix 프로그래밍의 예술. 레이먼드
- Martin Fowler가 도메인 고유의 언어와 언어 워크벤치에 대해 설명합니다.비디오 프레젠테이션에서도
- 도메인 고유의 언어:주석이 달린 참고 문헌
- One Day 컴파일러: OCaml을 사용한 소규모 도메인 고유의 언어 구축
- 사용자 어소시에이션: 도메인 고유 언어 회의(DSL '97) 및 제2차 도메인 고유 언어 회의(DSL '99)
- 내부 도메인 고유의 언어
- (외부) 도메인 고유의 언어 전체 가이드
- 확장 큐잉 네트워크의 모델링 및 시뮬레이션을 위한 내부 도메인 고유 언어의 jEQN 예시.
- 기사들
- Eclipse 기술을 탑재한 외장 DSL
- "Building Domain-Specific Languages over a Language Framework". 1997. CiteSeerX 10.1.1.50.4685.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말) - Acceleo와 GMF 사용 : MindMap DSL 모델러로부터의 프레젠테이션 생성
- UML과 도메인 고유의 언어
- Sagar Sen; et al. (2009). "Meta-model Pruning". CiteSeerX 10.1.1.156.6008.
{{cite journal}}
:Cite 저널 요구 사항journal=
(도움말)