2012-08-04 2 views
1

James Neighbors는 DSL을 소프트웨어 재사용을위한 방법으로 언급했지만 그 이유를 설명하지 않았습니다. DSL이 재사용 가능한 구성 요소 라이브러리보다 나은 접근 방법이라고 할 수 있습니다. 관계를 이해할 수 없으며 소프트웨어 재사용에서 DSL을 사용하여 얻을 수있는 이점은 무엇입니까?도메인 특정 언어, 응용 프로그램 생성기 및 소프트웨어 재사용

또한 Mernik이 DSL을 개발할 때와 개발 방법에서 DSL은 응용 프로그램 생성기의 입력 언어로 사용될 수 있으며 응용 프로그램 생성기는 Krueger가 설명한 소프트웨어 재사용의 한 방법이라고 언급했습니다.

누구나 내게 관계를 말해 줄 수 있습니까? 아니면 DSL이 소프트웨어 재사용에 대한 효과적인 접근 방법이 될 수 있습니까? 도와 주셔서 감사합니다

답변

2

제임스 많이 만들어 그것은 매우 분명 DSL을 소프트웨어 재사용을위한 좋은 방법 (그와 내가 함께 UC 어바인에 있었다) 이유 :

  • 그들은이 문제에 대한 관심의 개념을 캡처 도메인
  • 그들은 해당 도메인에서 작동 사회에 익숙한 표기법을 사용
  • 그들은 그것이
  • 을 제공으로 DSL 조각이 정신을 검사 할 수 있도록 답을 생산하는 사양/솔루션 구성 요소의 구성의 규칙을 정의

그의 Draco 시스템은 DSL 설명을 수락하고 Draco가 구현 지식 조각 ("상세 규칙")을 적용하여 저수준 코드로 컴파일 한 DSL 설명 다음에 높은 수준의 DSL 낮은 수준의 DSL로 최적화/낮은 수준의 DSL로 최적화하고, 보통 컴파일러 (예 : LISP 또는 C 또는 Ada 또는 COBOL 또는 ...)에 제공 할 수있을만큼 충분히 낮은 수준의 추상화로 DSL에 도달 할 때까지 반복합니다.

이것은 일련의 DSL이 계층 구조의 계층을 통해 낮은 수준의 코드로 구체화 할 수있게하는 그의 세련미 및 최적화 패러다임입니다. 따라서 계층화 된 도메인의 조합 가능성을 얻을 수 있으며 매우 높은 추상화 수준에서 작업 할 수 있습니다.

그래서 문제 사양 및 구현 지식을 포착하고이를 코드에 적용합니다. 추상화, 명세, 구현, 와우, 재사용 ... 80 년대 초반에 많은 사람들이 여전히 붙어있는 것처럼 보이는 "코드"를 재사용하는 것만이 아닙니다. 코드는 재사용하기가 정말로 어렵습니다.

이것은 "서브 루틴 - 구성 요소"와 비교할 때 정말 훌륭한 패러다임입니다 (현재이 개념은 "내부 DSL"로서 도메인 표기법, 사양 검사, 구현 및 구성 요소를 놓치고 있습니다).

나는 당신이 그의 박사 학위 논문 (그의 많은 다른 논문들과 함께 here 접근 가능)을주의 깊게 읽어야한다고 생각한다. 그것은 기대했던 것보다 훨씬 더 접근하기 쉽습니다. 그것은 수수한 수학으로 가득차 있지 않습니다. 그의 종류의 DSL을 만드는 방법에 대한 개념과 데모가 가득합니다.

0

실제로 DSL은 객체 지향 접근법에서 편리한 상부 구조 방법입니다.

자신 만의 DSL을 작성하면 특정 공통 프로그래밍 언어 용으로 작성된 패키지 또는 라이브러리보다 해당 기능을 사용하는 데있어보다 유연한 메커니즘을 제공하고 선택한 도메인에 대한 모델의 동작 요소를보다 많이 제공 할 수 있습니다.

또한 DSL을 사용하면 도메인 모델의 설명을 교차 언어로 다시 사용할 수 있습니다.예를 들어, 자바로 자체 라이브러리를 작성한 경우 DSL 상부 구조 + 적절한 인터프리터를 사용하면 C# 언어 코드 생성기를 사용하여 구성 요소를 재사용 할 수 있습니다.

DSL 접근 방식은 "개념 프로그래밍"이라고하는보다 보편적 인 패러다임을 가지고 있습니다. 그것에 관한 논문, 특히 에스토니아 - 소비에트 과학자 Enn Tyugu의 논문을 찾으려고하면됩니다. http://www.cs.ioc.ee/~tyugu/

관련 문제