문제

그렉 윌슨의 대화 "증거의 비트"( http://www.slideshare.net/gvwilson/bits-of-evidence-2338367 ) Martin Fowler가 DSL 사용의 이점으로 발전했다는 다음 주장의 증거가 부족하다는 것에 대해 논의합니다.

[Domain-sepcific 언어를 사용하는] 두 가지 주요 이점으로 이어집니다. 첫 번째는 프로그래머 생산성을 향상시키는 것입니다. 두 번째는 ... 도메인 전문가와의 커뮤니케이션입니다." - 마틴 파울러 IEEE 소프트웨어 2009 년 7 월/8 월

질문 : 프로그래머 생산성이 향상되거나 DSL을 사용하여 도메인 전문가와의 커뮤니케이션 개선에 대한 증거를 제공하는 경험적 연구가 있습니까?

DSL을 구축하는 많은 사람들이 "DSL을 구축하는 이유는 무엇입니까?"에 대한 합리적인 답변을 제공 할 수 없습니다. 그리고 "DSL이 왜 잘 작동하는 객체 모델보다 더 도움이됩니까?"

나는 "나는 그것이 멋지고 다른 사람들이 그것을하고 있기 때문에 그것을하고있다"는 많은 것을 들었다. 이것은 합리적인 대답이 아닙니다.

나는 DSL이 적어도 일부 시간에 도움이되었지만 무차별 적으로 사용해야하는 "은색 총알"이 될 가능성이 높다고 생각합니다. 경험적 연구를 바탕으로 DSL이 언제 사용되어야하고 사용해서는 안되는시기를 설명하는 과학적 작업을보고 싶습니다.

도움이 되었습니까?

해결책

그냥 인터넷 검색, 나는 몇 가지 흥미로운 논문을 찾았습니다.

실제로 도메인 별 언어 : 성공 요인에 대한 사용자 연구

도메인 별 언어 대 객체 지향 프레임 워크 : 금융 엔지니어링 사례 연구

사후 디자인 도메인 별 언어 임베딩 : 소프트웨어 엔지니어링 도메인의 사례 연구

그리고 Google Scholar에서 시작하여 더 나은 참조를 찾을 수 있다고 생각합니다 ...

다른 팁

그것은 당신이 DSL이라고 생각하는 것에 달려 있습니다.

예를 들어, CSS는 DSL입니까? HTML 3에서는 배열에 테이블을 사용했고 지금은 유연성이 없었기 때문에 페이지를 쉽게 스타일링 할 수 있습니다.

DSL이 있으므로 학생들이 원자 기호 (H20) 만 사용하여 분자를 설계 할 수있는 경우, 기호와 유형의 본딩을 제공하면 분자 구성을 빠르게 볼 수 있으므로 코딩하는 것보다 더 간단합니다. 예시.

나는 어떤 방식 으로든 다른 방법을 보여주는 논문을 모르지만, 대상 청중이 프로그래머가 아닌 경우 DSL이 의미가 있으므로, 우리는 회계사가 신청서를 작성하고 용어를 사용하여 요구 사항을 제공하지 않고 신청서를 작성할 수 있습니다. 개발자.

DSL은 오랫동안 주변에 있었지만 이제는 더 인기를 얻었으므로 사용하는 것이 가장 좋고 실제로 해로운시기에 대해 더 많은 용도와 나쁜 용도의 예가있을 때 시간을 알려줄 것입니다. 예를 들어 DSL과 함께 의료 모니터링 소프트웨어를 작성하지 않습니다.

이 경우 "과학적"의 전제는 모호합니다. 경험적 연구에 필요한 "재현 가능한", "제어 (그룹)"의 기준을 보장 할 방법은 없습니다.

비즈니스 프로그래밍에서 대체로 사용하기 전에 무언가의 이점에 대한 심각한 경험적 연구는 없습니다. SQL, 객체 지향 언어, 기능 언어, 쓰레기 수집 등이든

이러한 것들은 시간이 지남에 따라 시장에 의해 결정되는 경향이 있습니다.

이것이 왜 그런 경우가 아마도 두 가지 이유의 조합 일 것입니다. 하나는 좋은 경험적 연구를 얻는 것이 매우 비싸고 경제적 인 관점에서 그것을 시도하는 것이 훨씬 저렴하다는 것입니다. 다른 하나는 각 상황이 다르다는 것입니다. 따라서 경험적 연구는 DSL을 사용하지 않고 하나를 사용하지 않는 것과 연구의 최종 결과를 적절히 비교하기 위해 연구중인 문제를 매우 좁게 제한하는 것으로 시작해야합니다. 선택된 특정 유형의 문제를 넘어서 유용합니다.

우리는 경험을 통해은 총알이 없다고 안전하게 말할 수 있으며 접근 방식의 정당한 이유를 주장하면 해결책이 더 나아질 것입니다. 그것은 당신이 당신이 그것을 제대로하고 있는지 알지 못하고 결국 전체 베니피이트를 놓칠 수 있습니다.

이것은 현명한 질문이며, "DSL이란 무엇입니까"와 같은 정의 문제가 있다고 생각합니다. Buzword가 "뜨거운"것이되면 마케팅 기회가되어 기초 과학과 이혼을합니다.

몇 년 전, 나는 프로그램뿐만 아니라 프로그래머의 성능을 조사하려고 노력하는 책 (더 나은 응용 프로그램 구축, ISBN 0-442-01740-5, 인쇄가 오래)을 썼습니다. 나는 정보 이론을 사용하여 그것을 보려고 노력했다.

나는 다른 사람의 머리에 지식 구조로 문제가있는 조잡한 유지 보수 측정을 내놓았으며 (AI 사람이 그렇게 말할 문제가 없음), 그 솔루션은 기계에 의해 처리 된 텍스트 구조로 존재합니다. 내가 보는 것은이 두 구조 사이의 관계입니다. 예를 들어, 정신 문제 설명에서 변경이 발생하면 프로그램 텍스트로 올바르게 전송하려면 몇 개의 소스 코드 변경이 필요합니까? 이를 측정하는 간단한 방법은 전후에 코드를 차별하는 것입니다. 이제 평균 변화의 공간에 걸쳐 측정 할 가능성이 높고 평균이 낮을수록 소스 코드가 더 많이 유지 될 수 있습니다.

저의 논문은 더 관리 가능한 코드가 해당 측정에 의해 도메인의 정신 모델과 더 유사할수록 더 "문제 지향적"또는 더 "도메인 별"이라고 부르는 것이 합리적이라는 것이 었습니다. 내가 그러한 코드에 대해 알아 차린 한 가지 특성은 그것이 더 많은 경향이 있다는 것입니다. 성명 문제의 a 해결책 문제의. 해결책은 언어가 아니라 언어, 하위 구조의 구현에 있습니다. 이것은 "선언 적"대 "명령 적"언어의 개념과 직접적인 합의는 아니지만 반향입니다.

그래서 당신의 질문에 대답하려고 할 때, 나는 사람들이 "DSL"을 의미하는 것에서 벗어나서 적어도 적당히 모호하지 않은 정의를 살펴 보겠습니다.

그 아이디어를 개발하는 일의 일환으로, 나는 많은 기술을 우연히 발견했습니다. 차동 실행, 이는 UI를 코딩하는 데 적합한 유지 보수성을 제공하는 것으로 보이며 소스 코드 크기를 대략 크기로 줄입니다. 내 이론은 그것이 DSL이 무엇인지에 대한 성공적인 예라는 것입니다.

나는 관리자가 학습 곡선을 오르지 않으면 서 유지 가능성을 달성 할 수 있다고 주장하지 않습니다. 실제 유지 가능성은 프로그래머가 이해하기 쉽지 않을 수있는 것들을 배워야하는 가격으로 이루어 지지만 일단 파악하면 원하는 가치가 있습니다.

언어 학자 Saphir와 Worf로부터 우리는 언어의 문법적 특징이 우리의 사고에 영향을 미친다는 것을 배울 수 있습니다. 범용 프로그래밍 언어가 기계에서 추상화되는 경향이있는 것처럼 추상화에 관한 것이므로 명령어 세트보다 알고리즘, 구조 및 디자인에 더 집중할 수 있습니다.

누군가가 필요한 정도까지 어떤 연구를했는지 확실하지 않습니다. 내 경험은 DSL이 처음에 생성하는 데 비용이 많이들 수 있다는 것입니다 (아마도 같은 일을하기 위해 더 간단한 객체 모델보다 2 배 이상의 노력). 그러나 일단 창조 된 개발자는 모델보다 DSL로 더 빨리 일을 할 수있게함으로써 즉각적인 혜택을 얻을 수 있습니다.

문제의 문제는 모든 DSL을 동일하게 취급한다는 것입니다. 일부는 구현하기가 더 쉬우 며 다른 하나는 유창한 인터페이스/내부 DSL 또는 외부 DSL을 수행하는지 여부에 관계없이 구현하는 데 시간이 다릅니다.

그러한 연구에서 다루지 않을 수있는 주요 이점 중 하나는 DSL이 코드를 표현하고 구현할 수있는 편의성입니다. 또한 다른 사람들이 코드의 의도를 더 쉽게 이해하는 데 도움이 될 수 있습니다. 소프트웨어 개발 수명주기의 유지 보수 단계이기 때문에 SDLC의 큰 구성 요소이므로 DSL을 만드는 데 처음 잃어버린 것보다 훨씬 더 큰 이점이 발생할 수 있습니다. .

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top