DSL 是 Domain Specific Languages 的縮寫,它指的是特殊領域的特殊語言。
「為何需要DSL?」
其實每個領域中,都有一些特殊的語言,使用特殊語言操控該領域的知識,會比較得心應手,比較直覺。
比如 game 或是 database,都有特殊的語言。SQL就是 database 的特殊語言。
以往如果要設計某個領域的特殊語言,那可要大費周章,從 parser 到 compiler 或 interpreter,很累人。
比如 game 或是 database,都有特殊的語言。SQL就是 database 的特殊語言。
以往如果要設計某個領域的特殊語言,那可要大費周章,從 parser 到 compiler 或 interpreter,很累人。
在 Scala 中,憑藉 Scala 的某些特殊語法,讓你很容易兜出個別領域的特殊語言,你可以使用這個特殊語言來進行你的工作,很妙吧!
其實,Scala 的 DSL 只是一個看起來很像該領域的語言。內在的運行方式還都是 Scala 原本的運行方式,你只要清楚 Scala 的運行方式,很容易設計不同的 DSL。但注意,這還是個假象,讓你使用起來比較容易專注在該領域中,其實內裡還是 Scala 的運作模式。
這樣的 DSL 是「Scala為內裡,DSL為外表」的寫作方式,認真說,還是遠遠不及重新設計一個專用的語言來的方便與正確。但話說回來,我們一定需要專用的語言嗎?大部分的情況,Scala 所表現出來的 DSL 已經非常夠用。 設計 DSL 的簡易性,也因此被 Scala 拿出來大肆宣傳。
沒有留言:
張貼留言