自分のためのメモ書きです。
スピーカーはMartin Fowlerさん
詳しくはつぎのURLにあるらしいのでそちらを。
http://martinfowler.com/dslwip/
http://martinfowler.com/dslwip/UsingDsls.html
DSLとしてはmake, ant, SQL, HQLがあります。
たとえば日常の動作を表現する。
次に、ステートマシンとして表現する
次に、クラス図に展開します。
次に、コードで表現します。
このコードでの表現の欠点その1
ステートマシンを表現していることがわかりにくい
コードは見て何をしているかわからなければならない
このコードでの表現の欠点その2
コンパイルが必要になる
コードをXMLで表し欠点その2を解決
DSL(Ruby)で記述し欠点その1を解決
DSLは昔はlexとyaccで作っていた。
DSLの分類
1.External DSL
using lex and yacc
すっきり
UNIXコミュニティ
XMLはExternal DSLです。
Passiveなデータ記述言語
2.Internal DSL
使用ホスト語の制約を受ける
without parser
ex lisp
APIとの違い
Java code->コマンドクエリ型
Fluent APIメソッドのチェーン
DSLとは
定義
a computer programming language of limited expressiveness focused on particular domain
言語であり
コンピュータプログラミング可能
限定された表現(それが強み)
限定された領域
位置づけ
DSL script -- parse --> semantic model -- generate optional --> code
新しい視点・考え方
Lanugage Workbenches
MS DSL Tools
Meta Edit+
xtext(Eclipse plugin)
intentional
MS Oslo
projectional Editing
本は来年の中頃出す予定
スピーカーはMartin Fowlerさん
詳しくはつぎのURLにあるらしいのでそちらを。
http://martinfowler.com/dslwip/
http://martinfowler.com/dslwip/UsingDsls.html
DSLとしてはmake, ant, SQL, HQLがあります。
たとえば日常の動作を表現する。
次に、ステートマシンとして表現する
次に、クラス図に展開します。
次に、コードで表現します。
このコードでの表現の欠点その1
ステートマシンを表現していることがわかりにくい
コードは見て何をしているかわからなければならない
このコードでの表現の欠点その2
コンパイルが必要になる
コードをXMLで表し欠点その2を解決
DSL(Ruby)で記述し欠点その1を解決
DSLは昔はlexとyaccで作っていた。
DSLの分類
1.External DSL
using lex and yacc
すっきり
UNIXコミュニティ
XMLはExternal DSLです。
Passiveなデータ記述言語
2.Internal DSL
使用ホスト語の制約を受ける
without parser
ex lisp
APIとの違い
Java code->コマンドクエリ型
Fluent APIメソッドのチェーン
DSLとは
定義
a computer programming language of limited expressiveness focused on particular domain
言語であり
コンピュータプログラミング可能
限定された表現(それが強み)
限定された領域
位置づけ
DSL script -- parse --> semantic model -- generate optional --> code
新しい視点・考え方
Lanugage Workbenches
MS DSL Tools
Meta Edit+
xtext(Eclipse plugin)
intentional
MS Oslo
projectional Editing
本は来年の中頃出す予定
No comments:
Post a Comment