??? 關(guān)于DSL(Domain Specific Language)的確切含義紛爭很多,但是其核心觀念還是很明確的。DSL的關(guān)鍵是使用領(lǐng)域特定的概念,即它的概念系統(tǒng)中具有一些非General Purpose的基元。但是這種所謂非General Purpose僅是就詮釋層面而言,它所指的并不是DSL對應(yīng)的形式系統(tǒng)。例如,在物理學(xué)中聲波(sonic wave)無疑是對原子系統(tǒng)的集團運動模式的一種抽象,基于wave概念的聲波方程可以看作是對應(yīng)于原子系統(tǒng)的一個特定領(lǐng)域的DSL。從聲波系統(tǒng)是無法逆推出原子系統(tǒng)的所有行為的,但是理論上量子力學(xué)在形式上同樣可以采用wave描述,而它卻可以構(gòu)成對原子系統(tǒng)的詮釋。
???
??? DSL因為基于Domain概念,可以提高理解性是應(yīng)該的,但是現(xiàn)實中的大多數(shù)DSL仍然存在大量技術(shù)性的形式要求,它們是很難讓非計算機領(lǐng)域的業(yè)務(wù)人員掌握的。期待業(yè)務(wù)專家使用DSL在目前多半只是一種不切實際的幻想。但是如果認為DSL就是更甜的代碼也并不適當(dāng)。搜索google的時候我們使用的查詢字符串也是一種domain specific language, 很多人都會使用""和-等語法結(jié)構(gòu)。
??? DSL應(yīng)該關(guān)注用的層面(what), 而不是how-to,how-to是DSL的實現(xiàn)問題。從what到how to是我們希望通過DSL解析器屏蔽起來的內(nèi)容,而不是DSL本身需要表達的內(nèi)容。