|
【CSDN 現(xiàn)場報道】2010年12月9日,年度收官技術盛宴SD2.0大會在上海光大會展中心國際大酒店隆重開幕。這是自2007年成功舉辦首屆以來,由CSDN 和《程序員》雜志主辦的連續(xù)第四屆SD2.0(軟件開發(fā)2.0)大會。來自IBM、微軟、盛大、FaceBook、阿里巴巴等眾多企業(yè)的技術領袖全部匯 聚,共同剖析當前IT技術發(fā)展大勢,分享在各自領域的技術成就與成功秘訣。
創(chuàng)新工場首席布道師、軟件架構師蔡學鏞,在工具與語言分論壇做了題為《領域語言(DSL)的設計與實踐》的主題演講。
蔡 學鏞認為,整個編程正在朝著領域語言(DSL,Domain Specific Language)發(fā)展。那么什么是領域,可以理解為特定,特定是專用限定,不可以做別的事情。比如R語言,在統(tǒng)計領域應該比較流行,但是它的功能太強 大,它做的不止是統(tǒng)計,所以它不是一個DSL。
現(xiàn)在我們談的都是別人家的DSL,我們固然可以用別人家的DSL,但是DSL真正價值是,根據(jù)著自己商務需求設計出自己需要的語言。
那 么要如何制作自己的DSL,首先是建造領域模型。哪些領域可以復用,有哪些方法,都要寫下來。有了領域模型之后,就能簡化DSL的實現(xiàn),即使脫離DSL也 依然有助于編程。你沒有這個設計工具,更好寫代碼,領域模型的存在價值就是它可以幫助你寫代碼,即時沒有DSL的情況之下。另外,DSL最好具有跨越領域 模型限制的能力。
接 下來是定義DSL。定義DSL需要領域專家和編程專家一同進行。DSL的定義可能會受到領域模型的影響,它是依附于領域模型的。DSL的實踐方式可能會影 響能用的類型,所以務必找出領域的關健詞,比如說財務就有本金這些關鍵詞。定義語法,這些關鍵詞之間怎么組合,就是它的語法,把這個規(guī)則訂出來,當這些都 完成了,語言就訂立出來了。不要把這個想的很困難,一般情況下跟一個編程語言是不一樣的,其難度非常低。
設定出來自己領域模型,DSL要怎么實現(xiàn)它呢?蔡學鏞認為可以有五種方式: 一、自己寫Parser,但通常比較難,好處就是可以做任何事情不受限制。 二、使用XML,就無須寫Parser,不過缺點也很明顯,限制很大,要求結構,數(shù)據(jù)變化大。 三、使用語言自己的DSL機制,但需要語言本身的支持。 四、使用ANTLR等code Gen工具。它可以幫你產生Java的代碼,或者產生其他語言的代碼。 五、使用MPS專門為DSL設計出來的開發(fā)平臺。通過它不僅可以輕易的把DSL開發(fā)出來,甚至連文字編輯器都有了。
最后蔡學鏞總結到,領域語言使用范圍很廣,領域語言很實用且優(yōu)點顯著。領域框架的建立,對于領域語言相當重要。建立領域框架之后,即使不使用DSL,仍會為系統(tǒng)開發(fā)帶來相當大的好處。 |
|
|