문제

나는 Charles Simonyi의 의도적 인 프로그래밍 분야를 처음 Microsoft와 자신의 회사와 함께 설립하려는 노력의 야망과 창의성에 충격을 받았습니다.

의도적 인 프로그래밍은 정확히 무엇입니까?

http://en.wikipedia.org/wiki/intentional_programming

소프트웨어에 대한 이러한 접근 방식에서 프로그래머는 먼저 주어진 문제 영역 (예 : 생명 보험)에 특정한 도구 상자를 구축합니다. 프로그래머의 도움을받은 도메인 전문가는 프로그램의 의도 된 행동을 설명하는 것 (Wysiwyg)과 같은 방식으로 설명합니다. 자동화 된 시스템은 프로그램 설명과 도구 상자를 사용하여 최종 프로그램을 생성합니다. 연속 변경 사항은 Wysiwyg 레벨에서만 수행됩니다.

프로그래밍에 유용하고 실용적인 접근 방식으로, 소프트웨어 개발에 대한 현재 접근 방식의 많은 문제를 잠재적으로 우회 할 수 있습니다.

본질적으로 비 프로그래머 (비즈니스/시스템 분석가)에 의한 도메인 별 언어의 생성을 용이하게하는 것으로 보이지만 UML이 제공 할 수있는 것보다 실제 구현에 훨씬 더 가까운 단계에서는 그는 결국 완성 될 것이라고 말했지만 아직 (거의 15 년 후) 거기에 있지 않다고 말했다.

DSL은 간단한 5 라인 룰 엔진에서 Ruby on Rails와 같은 복잡한 응용 프로그램에 이르기까지 영역을 실행합니다. 그래서 나는 자신의 제품을 공개하는 데 지연이 지연되어 모든 도메인 언어의 캡슐화를 한 번에 캡슐화해야하기 때문에 훨씬 더 높은 수준의 추상화를 단순화하는 것을 다루고 있다는 사실과 관련이 있다고 생각합니다.

그래서 내 질문은입니다

(a) 여부 antlr 비즈니스 분석가가 DSL을 생성하도록 허용하기보다는 프로그래머의 개입이 필요한 덜 사용자 친화적 인 대안이지만 의도적 인 프로그래밍의 대안 일 수 있습니까? Antlr을 사용하여 Ruby on Rails와 같은 DSL을 생성 할 수 있습니까 (루비를 출력으로 지원한다고 가정 할 수 있습니까? 무엇을 할 수 없습니까? 또한, 나는 그것이 "언어 생성기"가 아닌 "언어 파서"라고 불리는 이유를 이해하지 못합니다. 후자는 그것이 사용되는 것을 설명하고 전자는 그것이 최종 결과를 달성하는 방법을 설명하기 때문입니다.

그리고

(b) ANTLR이 의도적 인 프로그래밍과 다른 경우 의도적 인 프로그래밍과 비슷한 것이 있습니까?

도움이 되었습니까?

해결책

나는 이것에 대한 전문가가 아니므로 큰 소금으로 대우하십시오. 하지만...

Antlr 자체는 DSL 생성기가 아니지만 DSL을 해석하는 코드를 만드는 데 사용할 수 있습니다. 파서 생성기이지만 DSL 생성기는 ANTLR이 파서를 생성하는 것을 만들어야합니다.

다른 팁

파트 B에 대한 답변으로 비슷한 공간에서 작동하는 세 가지 시스템은 다음과 같습니다.

이러한 제품 각각은 다른 강점과 약점을 가지고 있지만 모두는 다음과 같은 범주에 속합니다. 언어 작업대. 의도적 인 소프트웨어의 의도적 인 워크 벤치는 현재 까지이 범주에서 가장 야심 찬 제품이지만 일반적으로 사용할 수는 없습니다.

MPS 및 XTEXT는 무료 오픈 소스 제품입니다. 메타 케이스는 가장 성숙하며 상용 제품입니다. 그들 모두는 가파른 학습 곡선을 가지고 있습니다.

Antlr은 단지 파서 생성기 일뿐입니다. 사소한 DSL에서 파서를 쓰는 것은 DSL 구현에 소비 된 노력의 50% 미만입니다. 평가자/규칙 엔진/코드 생성기/일정 또는 DSL이 수행하는 모든 일이있을 수 있으며, 더 많은 작업이 필요하며 파서처럼 생성 할 수 없습니다.

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