2009-08-10 7 views

답변

7

저는 MPS에 대한 개인적인 경험이 없지만 최근 에피소드 Herding Code with Markus Völter에 언급되었습니다. 여기 내 이해가있다. MPS는 텍스트를 파싱하고 편집하는 대신 밑줄이있는 언어 데이터 구조를 직접 편집하는 프로젝션 편집기입니다. Markus가 언급 한 것처럼 MPS에서는 자신의 언어를 정의 할 수 있지만 새로운 언어 개념을 기존 언어에 도입 할 수도 있습니다. 예를 들어 몇 분 안에 Java에 새 키워드를 추가 할 수 있습니다. MPS는 내부 DSL과 외부 DSL 사이에 선을 흐리게 만듭니다. 따라서 Ruby와 같은 동적 언어로 DSL을 개발할 때 얻을 수없는 정적 타이핑 및 도구 지원을 얻을 수 있습니다.

2

MPS는 재미있는 짐승으로 매우 큰 잠재력을 가지고 있습니다. IDE를 (MPS) 사용자가 더 많거나 적은 정의 시각적으로 자신의 DSL (들)

  • IDE에서 언어 자체 (런타임 또는 무엇은하지 않습니다 단지를 생성 할 수 있습니다 내부

    • : 아이디어는 단순히 환상적입니다) "도구"라고도 일컬어지며, IDE 또는 다른 사용자가이 새로운 언어를 편집하는 데 사용할 수 있습니다.

    말했다되는 것을 불행하게도 적어도 실제 사용 가능한 MPS 버전, JetBrains의가 있기 때문에 (적어도 나를 위해) 위의를 제공하기 위해 실패 - 매우 매우 어렵고 복잡한 사용 - 것처럼 않을 것 사용하기 쉬운 IntelliJ의 저자가 만들었습니다. - 뭔가 유용한 것을하기 전에 사용자가 배워야 할 개념과 방법이 너무 많습니다. 그래도 여전히 어둠을 두드리는 느낌을 갖습니다. - IDE가 당신을 위해 IDE를 생성하지는 않지만 MPS 내부에 "셀 기반 편집기"만 생성합니다 (이 버전에서).

    나는 MPS를 여러 번 시도했는데 (개념이 너무 훌륭하고 유망한 원인으로 인해), 불행히도이 순간에 나는 그걸로 뭔가 유용한 것을 할 수 없었다. MPS에 대해 어리 석을 수도 있지만, MPS에 대한 기본적인 내용을 파악할 당시에는 완전히 쓸모있는 Groovy 기반 DSL을 제공 할 수있었습니다.

    나는 여전히 MPS의 진화를 따르고 있으며, 언젠가는 환상적인 아이디어이기 때문에 처음에 약속했던 것을 전달하기를 희망합니다.

  • 5

    나는 JetBrain을 위해 일합니다. 저는 MPS 프로젝트를 수년 동안 이끌었고 지금은 MPS로 완전히 작성된 또 다른 프로젝트를 진행하고 있습니다. 내 경험에 따르면 MPS는 다음을 사용하여 가치가 있습니다 :-)

    질문에 대한 답변은 많은 부분에 따라 다릅니다. Ruby 기반 시스템을 사용하거나 신속하게 언어를 작성하려는 경우 Ruby 기반 내부 DSL이 최선의 선택 일 수 있습니다. 자바를 생성하고 MPS를 배울 시간이 있다면 MPS가 가장 좋은 경우 일 수 있습니다. 또한 Ruby 기반 DSL과 MPS 사이의 중간에있는 XText와 같은 시스템을 고려할 수도 있습니다.

    3

    일반적인 lisp 객체 시스템의 매크로 CLOS는 구문을 매우 극적으로 변경할 수 있지만 MPS는 ANTLR과 매우 유사하지만 그래픽 편집기가 제공됩니다. 그러나 MPS는 컴파일과 런타임 이상으로 코드 단편화를 인식하지 못하므로 MPS와 ANTLR 모두 정적 메타 프로그래밍 문제를 둘러싼 다. Monadics와 같이 임의의 수의 하위 생성자 인수를 허용하는 구문을 만들 수는 없습니다. 리스트 생성기는 임의의 수의 필터와리스트 생성기를 사용합니다. 이를 가능하게하려면 원시 AST를 프로그래밍 방식으로 변경해야합니다. 숙련 된 Lispers는 아마도 수행 할 수없는 다른 변형을 지적 할 수 있습니다.

    2

    나는 MPS를 배울 때 초보자에게 문제가되는 것에 동의한다. 이전 게시물 (2010)이 작성되었을 때 이것은 분명 사실이었습니다. 이 처음 손을 경험하고 마침내 시스템을 이해하는 데 성공한 저는 The MPS Language Workbench (볼륨 I 및 II)을 작성하여 학습 곡선을 부드럽게했습니다. 독자들로부터 피드백을 얻으려면 책이 시작되어 (볼륨 1), MPS 플랫폼의 고급 측면 (볼륨 II)을 배우기에 충분하다는 것입니다.

    원래 질문에 대한 답변. 예, 저는 MPS가 루비 또는 그루비에서 DSL을 개발하는 것에 비해 핵심 이점을 가지고 있다고 생각합니다. 그 이유는 MPS 빌드

  • 언어는 그들 하이브리드 사이 있도록 그래픽 표기법 및 사용자 인터페이스 요소를 포함 할 수, 언어 디자이너로는

    1. 언어의 모든 측면을 훨씬 더 제어 할 수 있다는 것입니다 사용자 인터페이스 및 텍스트 DSL 스크립트/프로그램
    2. MPS는 언어를 발전 시킴에 따라 프로그램을 이전하는 데 도움이됩니다 (예 : 리팩토링 또는 기타 언어 변경 사항은 자동 DSL 스크립트/프로그램을 사용하여 언어의 최종 사용자에게 전파 될 수 있음). 마이그레이션).

    MetaR project에 MPS로 작성된 DSL의 좋은 예를 볼 수 있습니다.

  • 관련 문제