Android的gradle用到的DSL語言是個什麼鬼?
#1.gradle文件的是Groovy介紹
Groovy是一種基於JVM(Java虛擬機)的敏捷開發語言,它結合了Python、Ruby和Smalltalk的許多強大的特性,Groovy 代碼能夠與 Java 代碼很好地結合,也能用於擴展現有代碼。由於其運行在 JVM 上的特性,Groovy 可以使用其他 Java 語言編寫的庫。
Groovy就是一種典型的DSL語言,那麼什麼是DSL語言?
#2.DSL官方定義
DSL的全稱是domain-specific language,它在wiki上的定義如下:
A domain-specific language (DSL) is a computer language specialized to a particular application domain.
與之相對的是GPL(general-purpose language)。
DSL指的是針對特定應用領域而設計使用的計算機語言,而GPL指的是針對跨應用領域而設計使用的計算機語言。
常見的DSL有:HTML,Shell,make語言,ant語言,maven語言,rpm語言,dpkg語言,awk語言,正則表達式,dc計算機語言等,有些DSL語言又被稱為微型語言
常見的GPL有:Java,C等
#3.DSL的通俗含義
DSL(Domain-Specific Language,領域特定語言)是什麼?DSL 就是針對某個領域所設計出來的一個特定的語言。因為有了領域的限制,要解決的問題就被劃定了範圍,所以語言不需要複雜,就可以具有精確的表達能力。且這類語言通常相當小,很容易學習使用
DSL是一種專注於某一特定領域的語言,使用通用語言(如C或者Java)當然可以得到與DSL相同的功能。但是這樣會產生大量繁瑣的代碼並導致大量的領域知識被隱藏在通用語言構造中(如for循環,if條件,方法調用,import聲明等等)
讓業務人員去寫代碼 然後解析他們所寫的代碼, 我們需要做一個編譯器去解析他們寫的字符串, 例如金融領域特有的dsl語言
#4.DSL的特徵
<1 DSL的目標受眾是非程序員,業務員或者最終用戶
<2 DSL = 整潔的代碼
<3 DSL必須以文本代碼的形式出現
<4 DSL的語法應該儘可能地接近英語或者其他自然語言
參考:
http://blog.csdn.net/dslztx/article/details/46682889
http://yangbinfx.iteye.com/blog/1917334
http://developer.51cto.com/art/200812/101918.htm