2008-10-11 6 views
1

Dans notre système hérité, nous avons écrit notre propre VM pour exécuter notre DSL interne au moment de l'exécution. La VM interne a été conçue pour exécuter notre DSL interne uniquement. Nous sommes en train de réécrire notre application existante. L'une des idées que nous envisageons est de transformer notre DSL interne en DSL externe (C# ou Java) et de profiter de leur VM.Transforme DSL interne en anti-pattern DSL externe?

Il n'y a pas de lignes directrices claires quand écrire notre propre VM pour notre DSL intentionnel par rapport à la transformation en DSL externe et l'exécution de cette VM.

Répondre

3

La décision DSL/VM interne par rapport à la décision DSL/VM externe est la même que toutes les décisions de construction par opposition à décision d'achat ou de téléchargement. Les lignes directrices sont claires et identiques pour tous les logiciels. Pourquoi prendre en charge votre propre machine virtuelle, alors que quelqu'un d'autre prendra en charge Java ou Python pour vous?

Voici quelques directives claires. Notez que ce sont les mêmes directives pour tous les logiciels.

  1. Est-il moins cher pour vous de continuer à gérer votre propre logiciel. Dans ce cas, DSL et VM?

  2. Votre propre DSL et VM est-il meilleur que Java ou Python? Par « meilleur », vous devez remplir une combinaison de facteurs de qualité: plus rapide, plus petits, plus fiables, de meilleures fonctionnalités, moins l'utilisation des ressources, plus auditable, plus sûr, etc.

Ne soyez pas confus par DSL et VM. Ce n'est rien de spécial. c'est juste plus de logiciel.

1

Ce n'est certainement pas un anti-pattern. Les DSL externes ont de nombreux avantages par rapport à ceux internes. L'indépendance vis-à-vis du langage hôte ou de la plateforme de mise en œuvre dans votre cas en fait partie. D'autres avantages sont une meilleure flexibilité de la syntaxe, la possibilité d'utiliser des approches pilotées par des modèles comme les transformations de modèles, la visualisation de modèles et d'autres.

Questions connexes