私は DSL について学んでいて、それらを理解できる文脈に入れようとしています。
たとえば、インターネット広告について話しているとしましょう - それは私が取り組みたい分野なので - 構築できる小さなカスタム DSL の例は何ですか?
また、これを実装するために必要な高レベルの技術的手順は何ですか?
私は DSL について学んでいて、それらを理解できる文脈に入れようとしています。
たとえば、インターネット広告について話しているとしましょう - それは私が取り組みたい分野なので - 構築できる小さなカスタム DSL の例は何ですか?
また、これを実装するために必要な高レベルの技術的手順は何ですか?
私は昨年、VS2005 用の DSL ツールを使用しています。
それを学ぶには、Steve Cook、Gareth Jones、Stuart Kent、および Alan Cameron Wills による「Visual Studio DSL ツールを使用したドメイン固有の開発」を読む必要があります。
これはエントリーポイントであり、いくつかの高度なトピックを含む、テクノロジーに関するあらゆる側面をカバーしています。
ドメイン固有言語は、定義上、ドメインの専門家が使用するために設計された言語です。
このトピックは非常に大きく、次のように分類できます。
DSL の大きなサブセット (以下のものを含む) は、ルールまたは推論エンジンによって一度に評価されるルールとして記述できます。
インターネット広告の分野では、特定のページにどの広告を表示するかを管理する一連のビジネス ルールを作成する必要がある場合があります。
if page.popularity is high then use ads of account[valuable]
if page.topic is not NSFW then use ads of topic[not NSFW]
if browser does not support flash then use ads of capability[javascript]
この特定のケースでは、クリーンで人気のあるページは、最高の支払いアカウントから広告を取得し、安全に仕事をすることができます.
これが共鳴するアプローチである場合は、既存のルール エンジンを統合することをお勧めします。エンドユーザーが開発者でない場合、DSL だけでなく一定量のツールを提供する必要があるため、これは特に賢明です。
ゲームには少し遅れましたが...
Google には、Google の広告主が掲載できる広告を特定する DSL があります。通常の Google 検索 (部分一致 [引用されていないテキスト]、フレーズ一致 [引用された文字列]、完全一致 [括弧内の文字列]) と、一致を除外するために使用される Google 検索である「除外キーワード」で構成されます。 . 一連のフォームから入力されるため、プログラミングのようには見えませんが、最終的に入力されるのはかなり簡潔なテキスト文字列です。これはあまり賢い DSL ではありません (私は実際にそれを使用しなければなりませんでした。ローエンドに正規表現が含まれ、ハイエンドに自然言語解析が含まれていればよかったのですが)、非常に現実的であり、何百万人もの「非プログラマー」によって使用されています。 "。
DSL の実装には 2 つのステップがあります。DSL の解析 (内容を理解するため) とその意味の機械化です。解析はかなりよく理解されています。Stack Overflow に浮かぶ解析に関する質問を参照してください。機械化ははるかに困難です。私たちが「Google」と考えているのは、主にその DSL の機械化です。