51 votes

Quelles sont les principales différences entre le MPS de Jetbrains et Eclipse Xtext?

J'ai utilisé Eclipse Xtext dans plusieurs projets. J'ai aimé la facilité de la définition d'une grammaire plus d'une Ecore (méta -) modèle et en laissant tout généré pour vous, y compris génial plugin Eclipse de l'éditeur, mais j'étais assez mal à l'aise avec le sous-jacent framework EMF avec tout câblé dans les champs statiques.

Dernièrement, je suis tombé sur Jetbrains' MPS (Méta-Programmation Système). Elle est basée sur complètement différent de la philosophie. Alors que Xtext est pour la création de texte à base de DSLs générer un analyseur syntaxique pour vous (et l'instanciation de ces EObjects), dans les MPS-créé langue que l'on édite directement le modèle sous-jacent de la structure. Jusqu'à présent, je l'obtenir.

Personne n'a de l'expérience avec ceux DSL outils de souligner les principales différences en termes de travail avec eux, prévu les cas d'utilisation et le public, la complexité, la courbe d'apprentissage (pour être honnête, pour commencer à utiliser Xtext l'on doit savoir beaucoup de choses au sujet de la FEM tripes), génération de code, etc?

57voto

Heiko Behrens Points 665

Xtext est traditionnellement un analyseur basé sur l'approche qui fonctionne avec de simples fichiers texte. Ceux-ci peuvent être envoyés par la poste, stockées et par rapport à tout système de contrôle de version et même modifiés en dehors de l'éditeur à l'aide de votre favori outil de ligne de commande. Il est étroitement intégré dans Eclipse EMF et fonctionne assez bien avec tout un tas d'outils que vous pouvez trouver dans l'Eclipse de l'éco-système. Récemment, il eveolved (et fait encore) dans une sorte de "langage de programmation, outils de développement" où il vous permet de bénéficier d'une aide pour toutes sortes de supplémentaires de l'outillage.

Les DÉPUTÉS de l'autre côté fonctionne avec une projection basée sur l'éditeur qui vient de "semble" comme texte pendant que vous travaillez dans l'environnement. Le stockage sous-jacent est le format d'outil spécifique (lire: inutilisable sans programmes spéciaux) et de ne pas analyser les fichiers de texte brut. Cette offre de grands avantages tels que l'intégration de l'arbitraire des langues (par exemple, l'expression rationnelle à l'intérieur de SQL à l'intérieur de Java). La suite d'outils permet la génération de la forme d'un modèle à l'transformations que le rédacteur se sentir bizarre au début, mais sont puissants, trop.

Les deux outils sont en quelque sorte le verrouillage de leur monde (MPS/Eclipse). Même si vous pouvez exécuter à la fois dans un headless mode, on ne peut pas lancer le Xtext de l'éditeur à l'intérieur d'un autre IDE. La même chose est vraie pour les DÉPUTÉS. Je dirais que Xtext est "plus ouvert", car il fonctionne avec des fichiers de texte sur une seule main et joue bien avec les outils EMF (Eclipse en général), d'autre part.

Est-ce répondre à votre question? Je vais essayer de vous donner des réponses plus précises si vous avez des questions plus précises.

16voto

L'idée principale de MPS n'est pas d'utiliser un éditeur de projection au lieu d'un éditeur basé sur du texte. C'est la compatibilité du langage. Par exemple, vous pouvez étendre Java avec des tuples, et une autre personne pourrait étendre Java avec des appels de méthode async. Dans les outils basés sur du texte (comme XText), il est impossible de garantir que deux extensions fonctionnent bien ensemble, car la grammaire résultante peut être ambiguë. MPS rend cela possible. Vous ajoutez simplement la langue à votre projet comme vous ajoutez des bibliothèques.

15voto

Michael Brunner Points 111

À mon avis Jetbrain des DÉPUTÉS est plus facile à appréhender au premier abord. Vous n'avez pas besoin de travailler avec des fichiers de configuration comme le Flux de travail-les Fichiers dans le xtext.

Une différence principale est que dans les MPS de modifier le modèle directement et ce modèle est montré à vous dans une syntaxe/affichage de l'éditeur. Dans xtext vous modifiez la syntaxe et le modèle est généré/analysé.

À mon avis, les DÉPUTÉS est de plus en plus puissants. Vous pouvez combiner des langues beaucoup plus facile et les étendre. Un gros avantage de projectional éditeurs, c'est que vous pouvez masquer ou afficher des informations supplémentaires récupérées à partir du modèle. Vous pouvez aussi utiliser différents points de vue comme des tableaux ou des graphiques (à venir dans les MPS 2.1).

Contrôle de Version peut être fait avec les DÉPUTÉS. Theres une fusion/diff outil qui fonctionne sur l'arbre-modèle.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X