Antlr は DSL ジェネレーターであり、意図的なプログラミングの代替手段ですか?

StackOverflow https://stackoverflow.com/questions/499573

質問

私は、最初は Microsoft で、次に彼自身の会社で、意図的プログラミングの分野を確立しようとする Charles Simonyi の努力の野心と創造性に感銘を受けました。

意図的プログラミングとは正確には何ですか

http://en.wikipedia.org/wiki/Intentional_programming

ソフトウェアへのこのアプローチでは、プログラマーが最初に特定の問題ドメイン(生命保険など)に固有のツールボックスを構築します。プログラマーの支援を受けたドメインの専門家は、プログラムの意図された動作を、あなたが見るものであるもの(wysiwyg)のような方法で説明します。自動化されたシステムは、プログラムの説明とツールボックスを使用して最終プログラムを生成します。連続した変更は、WysiWygレベルでのみ行われます。

これはプログラミングへの非常に便利で実用的なアプローチであるようで、ソフトウェア開発への現在のアプローチに伴う問題の多くを回避できる可能性があります。

基本的に、プログラマ以外 (ビジネス/システム アナリスト) によるドメイン固有言語の作成が容易になるようですが、UML が提供できるよりも実際の実装にはるかに近い段階にあります。最終的には完成するだろうが、まだ(ほぼ15年後)完成していないと彼は言う。

DSL は、単純な 5 行のルール エンジンから Ruby on Rails のような複雑なアプリケーションまで、あらゆる範囲を実行します。したがって、彼の製品のリリースの遅れは、基本的にすべてのドメイン言語を一度にカプセル化できるようにする必要があるため、彼がはるかに高いレベルの抽象化の簡素化に取り組んでいるという事実と関係があるのではないかと私は想像しています。

それで、私の質問は

(a) かどうか アントラー これは意図的プログラミングの代替手段になる可能性がありますが、ビジネス アナリストが DSL を生成できるようにするのではなく、プログラマーの介入を必要とする、ユーザーフレンドリーではない代替手段かもしれません。 Antlr を使用して Ruby on Rails のような DSL を生成できますか (出力として Ruby をサポートしていると仮定しますが、サポートされていないと思います)。何ができないのでしょうか?また、なぜ「言語ジェネレーター」ではなく「言語パーサー」と呼ばれるのかもわかりません。後者はその用途を説明し、前者は最終結果を達成する方法を説明しているからです。

そして

(b) Antlr が意図的プログラミングとは異なる場合、意図的プログラミングに類似したものはありますか?

役に立ちましたか?

解決

私はこれの専門家ではないですので、塩の大ピンチを扱います。しかし...

DSLを解釈するコードを作成するために使用することができるが、

ANTLR自体は、DSLジェネレータはありません。これは、パーサジェネレータである - しかし、DSLジェネレータはANTLRからパーサを生成ものを作成する必要があります。

他のヒント

パート b) への回答として、同様の空間で動作する 3 つのシステムは次のとおりです。

これらの製品にはそれぞれ異なる長所と短所がありますが、それらはすべて次のカテゴリに分類されます。 言語ワークベンチ. 。Intentional Software の Intentional Workbench は、おそらくこのカテゴリでこれまでで最も野心的な製品ですが、これも一般には入手できません。

MPS と xText は無料のオープンソース製品です。MetaCase は最も成熟しており、商用製品です。それらはすべて、学習曲線が急峻です。

ANTLRはちょうどパーサジェネレータです。任意の非自明なDSLでは、パーサを書くことはDSLの実装に費やさ努力の50%未満です。評価/ルールエンジン/コードジェネレーター/スケジュールまたは任意の他、あなたのDSLはない、おそらく多くの作業を必要とし、パーサのように生成することができません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top