従来のシステムでは、独自の VM を作成して実行時に内部 DSL を実行していました。社内 VM は、社内 DSL のみを実行するように設計されています。現在、レガシー アプリケーションを書き直しています。私たちが検討しているアイデアの 1 つは、内部 DSL を外部 DSL (C# または Java) に変換し、その VM を利用することです。
内部 DSL 用に独自の VM を作成する場合と、外部 DSL に変換してその VM を実行する場合の明確なガイドラインはありません。
従来のシステムでは、独自の VM を作成して実行時に内部 DSL を実行していました。社内 VM は、社内 DSL のみを実行するように設計されています。現在、レガシー アプリケーションを書き直しています。私たちが検討しているアイデアの 1 つは、内部 DSL を外部 DSL (C# または Java) に変換し、その VM を利用することです。
内部 DSL 用に独自の VM を作成する場合と、外部 DSL に変換してその VM を実行する場合の明確なガイドラインはありません。
内部 DSL/VM 対外部 DSL/VM の決定は、すべてのビルド、購入、ダウンロードの決定と同じです。ガイドラインは明確で、すべてのソフトウェアで同じです。
他の誰かが Java や Python をサポートしてくれるのに、なぜ自分の VM をサポートするのでしょうか?
ここにいくつかの明確なガイドラインがあります。これらはすべてのソフトウェアで同じガイドラインであることに注意してください。
独自のソフトウェアを維持し続ける方が安価ですか。この場合、DSL と VM?
独自の DSL と VM は、Java や Python より優れていますか? 「より良い」とは、より速く、より小さく、より信頼性が高く、より優れた機能、より少ないリソースの使用、より監査しやすい、より安全など、品質要因の任意の組み合わせを記入する必要があります。
DSL と VM を混同しないでください。特別なことではありません。それは単なるソフトウェアです。
それは間違いなくアンチパターンではありません。外部 DSL には、内部 DSL に比べて多くの利点があります。あなたの場合のホスト言語または実装プラットフォームからの独立性はその1つです。その他の利点として、構文の柔軟性が向上し、モデル変換、モデル表示などのモデル駆動型アプローチを使用できる可能性があります。