2010-04-08 3 views
43

여러 프로젝트에서 Eclipse Xtext을 사용했습니다. Ecore (메타) 모델에서 문법을 정의하는 것이 쉽고 멋진 Eclipse 플러그인 편집기를 포함하여 모든 것을 당신에게 제공하는 것을 좋아했지만 정적 인 필드에 모든 것이 고정 배선 된 EMF framework이라는 기본 설정에 상당히 불편했습니다.Jetbrains의 MPS와 Eclipse Xtext의 주요 차이점은 무엇입니까?

최근에 나는 Jetbrains의 MPS (Meta Programming System)을 발견했습니다. 완전히 다른 철학을 기반으로합니다. Xtext는 파서를 생성하는 텍스트 기반 DSL을 작성하고 (해당 EObject를 인스턴스화하는) MPS 작성 언어로 직접 기본 모델 구조를 편집합니다. 지금까지 나는 그것을 얻는다.

두 DSL 도구를 사용하여 경험 한 사용자와의 작업에서 주요 차이점, 의도 된 사용 사례 및 대상, 복잡성, 학습 곡선 등을 경험 한 사람이 있습니까 (솔직히 Xtext 사용을 시작하려면 꽤 많이 알아야 함) EMF의 배짱에 대해), 코드 생성 등?

답변

49

Xtext는 일반적인 텍스트 파일에서 작동하는 전통적인 구문 분석기 기반 접근 방식입니다. 그것들은 우편으로 보내고 저장할 수 있으며 모든 버전 제어 시스템과 비교할 수 있으며 심지어 좋아하는 명령 줄 도구를 사용하여 편집기 외부에서 수정할 수도 있습니다. 이클립스 EMF에 긴밀하게 통합되어 Eclipse 생태계에서 찾을 수있는 모든 도구로 잘 작동합니다. 최근에는 모든 종류의 추가 툴링을 지원할 수있는 일종의 "프로그래밍 언어 개발 툴킷"으로 진화했습니다.

다른면의 MPS는 환경 내에서 작업하는 동안 텍스트처럼 "외모"가있는 투영 기반 편집기와 함께 작동합니다. 기본 저장소 형식은 도구에 따라 다르며 (읽기 : 특수 프로그램 없이는 사용할 수 없음) 일반 텍스트 파일을 구문 분석하지 않습니다. 이것은 임의의 langauges (예 : Regex를 Java 내부의 SQL 내부에 포함)와 같은 몇 가지 큰 이점을 제공합니다. 툴체인은 에디터가 처음에는 이상하게 느껴지지만 강력합니다. 변형을 모델링하는 모델의 형태로 생성을 가능하게합니다.

두 도구 모두 어떻게 든 세계로 당신을 잠급니다 (MPS/Eclipse). 두 가지 모드 모두 헤드리스 모드로 실행할 수 있지만 다른 IDE에서 Xtext 편집기를 쉽게 시작할 수 없습니다. MPS에서도 마찬가지입니다. Xtext는 일반 텍스트 파일과 함께 작동하고 기존 도구 (EMF 및 Eclipse는 일반적으로)와 잘 작동하기 때문에 Xtext는 "더 개방적"이라고 주장합니다.

귀하의 질문에 대한 답변이 있습니까? 좀 더 자세한 질문이 있으면 더 정확한 답변을 드릴 것입니다.

+0

감사합니다. Heiko, 저는 더 나은 통찰력을 가지고 있습니다. :) 텍스트 기반 v 프로젝션 기반의 내용과 버전 제어, diff 등의 결과가 있습니다. "일반 사용법"의 차이점은 무엇인지 더 자세히 알고 싶습니다. 도구와 도구 체인에 Xtext를 사용하면 어떤 Java 프로그램에서나 즉시 사용할 수있는 기본 Ecore 모델에서 생성 된 Java 코드를 얻을 수 있습니다. MPS 공식 자습서를 읽는 동안 나를 놀라게 한 것은 코드 조각 템플릿을 사용하여 코드 조각을 완성한 것입니다. 어떻게하면 EMF와 같이 쉽게 작성할 수 있습니까? –

+2

사실, Xtext 뒤에있는 사람들은 Eclipse 외의 다른 환경에서 Xtext 언어를 사용할 수 있도록 많은 노력을 기울이고 있습니다 (예 : Orion 프로젝트를 통한 웹 편집자 및 IntelliJ IDEA 지원). 자세한 내용은 https://eclipse.org/Xtext/news.html에서 확인할 수 있습니다. –

+2

MPS는 사용자 지정 저장소를 지원하지만이 모든 내용이 적용됩니다. 기본적으로 XML을 기반으로 자체 형식으로 파일을 저장하지만 사용자 지정 직렬화/직렬화를 제공 할 수 있습니다. –

16

MPS의 주요 아이디어는 텍스트 기반 편집기 대신 프로젝션 편집기를 사용하지 않는 것입니다. 그것은 언어 compasability입니다. 예를 들어 튜플을 사용하여 Java를 확장 할 수 있고 다른 사람이 비동기 메서드 호출로 Java를 확장 할 수 있습니다. XText와 같은 텍스트 기반 도구에서는 결과 문법이 모호 할 수 있으므로 두 개의 확장이 함께 잘 작동한다는 것을 보장하는 것은 불가능합니다. MPS는이를 가능하게합니다. 라이브러리를 추가하는 것처럼 프로젝트에 언어를 추가하기 만하면됩니다.

14

제 생각에는 제트 브레인의 MPS가 처음에는 배우기가 더 쉽습니다. xtext의 Workflow-Files와 같은 구성 파일로 작업 할 필요가 없습니다.

MPS에서 모델을 직접 편집하면이 모델이 구문/편집기보기에 표시됩니다. xtext에서 구문을 편집하고 모델이 생성/구문 분석됩니다.

내 의견으로는 MPS가 더 강력합니다. 언어를 훨씬 더 쉽게 결합하고 확장 할 수 있습니다. 투영 편집자의 큰 장점은 정보를 숨기거나 모델에서 검색된 추가 정보를 표시 할 수 있다는 것입니다. 테이블이나 그래프와 같은 다양한 뷰를 사용할 수도 있습니다 (MPS 2.1).

MPS를 사용하여 버전 제어가 가능합니다. 트리 모델에서 작동하는 merge/diff 도구입니다.

관련 문제