注冊(cè) | 登錄讀書(shū)好,好讀書(shū),讀好書(shū)!
讀書(shū)網(wǎng)-DuShu.com
當(dāng)前位置: 首頁(yè)出版圖書(shū)科學(xué)技術(shù)計(jì)算機(jī)/網(wǎng)絡(luò)軟件與程序設(shè)計(jì)程序設(shè)計(jì)綜合領(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)

領(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)

領(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)

定 價(jià):¥69.00

作 者: (美)Debasish Ghosh 著,郭曉剛 譯
出版社: 人民郵電出版社
叢編項(xiàng):
標(biāo) 簽: 編程語(yǔ)言與程序設(shè)計(jì) 計(jì)算機(jī)與互聯(lián)網(wǎng)

購(gòu)買(mǎi)這本書(shū)可以去


ISBN: 9787115331748 出版時(shí)間: 2013-11-01 包裝: 平裝
開(kāi)本: 16開(kāi) 頁(yè)數(shù): 312 字?jǐn)?shù):  

內(nèi)容簡(jiǎn)介

  《領(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)》是第一本領(lǐng)域?qū)S谜Z(yǔ)言(DSL)的實(shí)戰(zhàn)類(lèi)圖書(shū),它面向真正的實(shí)踐者,是一本讓奮戰(zhàn)在開(kāi)發(fā)第一線的實(shí)干家備感實(shí)用的專著!《領(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)》基于一系列JVM語(yǔ)言(Java、Ruby、Groovy、Scala和Clojure),分析了它們?cè)趯?shí)現(xiàn)DSL中的優(yōu)劣勢(shì),同時(shí)也給出了豐富的示例。如果你是一位架構(gòu)師,希望設(shè)計(jì)出極具表現(xiàn)力的API,讓它既能滿足領(lǐng)域用戶的需要,又能達(dá)到高效開(kāi)發(fā)的要求;如果你是一位有技術(shù)背景的特定領(lǐng)域用戶,期待著改善與開(kāi)發(fā)團(tuán)隊(duì)的溝通效果;如果你是一名程序員,正為如何與領(lǐng)域用戶對(duì)接業(yè)務(wù)規(guī)則而苦惱……那么,請(qǐng)看這本書(shū)?!额I(lǐng)域?qū)S谜Z(yǔ)言實(shí)戰(zhàn)》分三部分,以金融中介系統(tǒng)為例全面細(xì)致介紹從頭設(shè)計(jì)、實(shí)現(xiàn)與使用領(lǐng)域?qū)S谜Z(yǔ)言的方方面面。它不僅講解了DSL的實(shí)現(xiàn)手法,而且從最基本的技術(shù)入手,逐漸深入到高級(jí)技術(shù),如元編程、解析器組合子,以及ANTLR、Xtext等開(kāi)發(fā)框架??赐赀@本書(shū),你將全面、深入地理解領(lǐng)域?qū)S谜Z(yǔ)言的定位、規(guī)范、術(shù)語(yǔ),同時(shí)還可以把它作為具體開(kāi)發(fā)工作的指導(dǎo),學(xué)以致用,提高工作效率和質(zhì)量。

作者簡(jiǎn)介

  Debasish Ghosh,Anshinsoft公司首席技術(shù)布道師,開(kāi)發(fā)者推薦博客“Ruminations of a Programmer”的作者,ACM協(xié)會(huì)高級(jí)會(huì)員。他擁有跨國(guó)IT企業(yè)20余年工作經(jīng)驗(yàn),擅長(zhǎng)為各種客戶(無(wú)論是中小型公司還是財(cái)富500強(qiáng)企業(yè))交付企業(yè)級(jí)解決方案,對(duì)自己將軟件設(shè)計(jì)和編程最佳實(shí)踐制度化而引以為傲,熱愛(ài)Java、Ruby、Scala、OO及函數(shù)式編程,關(guān)注DSL和NoSQL數(shù)據(jù)庫(kù)。譯者簡(jiǎn)介:郭曉剛,大學(xué)肄業(yè),有過(guò)兩次創(chuàng)業(yè)和創(chuàng)業(yè)失敗的經(jīng)驗(yàn),從嵌入式硬件到企業(yè)軟件開(kāi)發(fā)皆無(wú)所成。作為愛(ài)好的翻譯反倒堅(jiān)持不輟,積攢了五六本獨(dú)譯、合譯的作品。長(zhǎng)期在InfoQ中文站從事編輯工作,順帶磨練了技術(shù)觸覺(jué)和翻譯、寫(xiě)作的技藝?,F(xiàn)在家照顧本書(shū)拖稿期間出生的兒子。

圖書(shū)目錄

第一部分  領(lǐng)域?qū)S谜Z(yǔ)言入門(mén)
第1章  初識(shí)DSL  
1.1  問(wèn)題域與解答域  
1.1.1  問(wèn)題域  
1.1.2  解答域  
1.2  領(lǐng)域建模:確立共通的語(yǔ)匯  
1.3  初窺DSL  
1.3.1  何為DSL  
1.3.2  流行的幾種DSL  
1.3.3  DSL 的結(jié)構(gòu)  
1.4  DSL 的執(zhí)行模型  
1.5  DSL 的分類(lèi)  
1.5.1  內(nèi)部DSL  
1.5.2  外部DSL  
1.5.3  非文本DSL  
1.6  何時(shí)需要DSL  
1.6.1  優(yōu)點(diǎn)  
1.6.2  缺點(diǎn)  
1.7  DSL 與抽象設(shè)計(jì)  
1.8  小結(jié)  
1.9  參考文獻(xiàn)  
第2章  現(xiàn)實(shí)中的DSL  
2.1  打造首個(gè)Java DSL  
2.1.1  確立共通語(yǔ)匯  
2.1.2  用Java 完成的首個(gè)實(shí)現(xiàn)  
2.2  創(chuàng)造更友好的DSL  
2.2.1  用XML 實(shí)現(xiàn)領(lǐng)域的外部化  
2.2.2  Groovy:更具表現(xiàn)力的實(shí)現(xiàn)語(yǔ)言  
2.2.3  執(zhí)行Groovy DSL  
2.3  DSL 實(shí)現(xiàn)模式  
2.3.1  內(nèi)部DSL 模式:共性與差異性  
2.3.2  外部DSL 模式:共性與差異性  
2.4  選擇DSL 的實(shí)現(xiàn)方式  
2.5  小結(jié)  
2.6  參考文獻(xiàn)  
第3章  DSL 驅(qū)動(dòng)的應(yīng)用程序開(kāi)發(fā)  
3.1  探索DSL 集成  
3.2  內(nèi)部DSL 的集成模式  
3.2.1  通過(guò)Java 6 的腳本引擎進(jìn)行集成  
3.2.2  通過(guò)DSL 包裝器集成  
3.2.3  語(yǔ)言特有的集成功能  
3.2.4  基于Spring 的集成  
3.3  外部DSL  集成模式  
3.4  處理錯(cuò)誤和異?! ?br />3.4.1  給異常命名  
3.4.2  處理輸入錯(cuò)誤  
3.4.3  處理異常的業(yè)務(wù)狀態(tài)  
3.5  管理性能表現(xiàn)  
3.6  小結(jié)  
3.7  參考文獻(xiàn)  
第二部分  實(shí)現(xiàn)DSL
第4章  內(nèi)部DSL 實(shí)現(xiàn)模式  
4.1  充實(shí)DSL"工具箱"  
4.2  內(nèi)嵌式DSL:元編程模式  
4.2.1  隱式上下文和靈巧API  
4.2.2  利用動(dòng)態(tài)裝飾器的反射式元編程  
4.2.3  利用buider 的反射式元編程  
4.2.4  經(jīng)驗(yàn)總結(jié):元編程模式  
4.3  內(nèi)嵌式DSL:類(lèi)型化抽象模式  
4.3.1  運(yùn)用高階函數(shù)使抽象泛化  
4.3.2  運(yùn)用顯式類(lèi)型約束建模領(lǐng)域邏輯  
4.3.3  經(jīng)驗(yàn)總結(jié):類(lèi)型思維  
4.4  生成式DSL:通過(guò)模板進(jìn)行運(yùn)行時(shí)代碼生成  
4.4.1  生成式DSL 的工作原理  
4.4.2  利用Ruby 元編程實(shí)現(xiàn)簡(jiǎn)潔的DSL 設(shè)計(jì)  
4.5  生成式DSL:通過(guò)宏進(jìn)行編譯時(shí)代碼生成  
4.5.1  開(kāi)展Clojure 元編程  
4.5.2  實(shí)現(xiàn)領(lǐng)域模型  
4.5.3  Clojure 宏之美  
4.6  小結(jié)  
4.7  參考文獻(xiàn)  
第5章  Ruby、Groovy、Clojure 語(yǔ)言中的內(nèi)部DSL 設(shè)計(jì)  
5.1  動(dòng)態(tài)類(lèi)型成就簡(jiǎn)潔的DSL  
5.1.1  易讀  
5.1.2  鴨子類(lèi)型  
5.1.3  元編程--又碰面了  
5.1.4  為何選擇Ruby、Groovy、Clojure  
5.2  Ruby 語(yǔ)言實(shí)現(xiàn)的交易處理DSL  
5.2.1  從API 開(kāi)始  
5.2.2  來(lái)點(diǎn)猴子補(bǔ)丁  
5.2.3  設(shè)立DSL 解釋器  
5.2.4  以裝飾器的形式添加領(lǐng)域規(guī)則  
5.3  指令處理DSL:精益求精的Groovy實(shí)現(xiàn)  
5.3.1  指令處理DSL 的現(xiàn)狀  
5.3.2  控制元編程的作用域  
5.3.3  收尾工作  
5.4  思路迥異的Clojure 實(shí)現(xiàn)  
5.4.1  建立領(lǐng)域?qū)ο蟆 ?br />5.4.2  通過(guò)裝飾器充實(shí)領(lǐng)域?qū)ο蟆 ?br />5.4.3  通過(guò)REPL 進(jìn)行的DSL 會(huì)話  
5.5  告誡  
5.5.1  遵從最低復(fù)雜度原則  
5.5.2  追求適度的表現(xiàn)力  
5.5.3  堅(jiān)持優(yōu)秀抽象設(shè)計(jì)的各項(xiàng)原則  
5.5.4  避免語(yǔ)言間的摩擦  
5.6  小結(jié)  
5.7  參考文獻(xiàn)  
第6章  Scala  語(yǔ)言中的內(nèi)部DSL設(shè)計(jì)  
6.1  為何選擇Scala  
6.2  邁向Scala DSL 的第一步  
6.2.1  通過(guò)Scala DSL 測(cè)試Java對(duì)象  
6.2.2  用Scala DSL 作為對(duì)Java  對(duì)象的包裝  
6.2.3  將非關(guān)鍵功能建模為ScalaDSL  
6.3  正式啟程  
6.3.1  語(yǔ)法層面的表現(xiàn)力  
6.3.2  建立領(lǐng)域抽象  
6.4  制作一種創(chuàng)建交易的DSL  
6.4.1  實(shí)現(xiàn)細(xì)節(jié)  
6.4.2  DSL 實(shí)現(xiàn)模式的變化  
6.5  用DSL 建模業(yè)務(wù)規(guī)則  
6.5.1  模式匹配如同可擴(kuò)展的Visitor模式  
6.5.2  充實(shí)領(lǐng)域模型  
6.5.3  用DSL 表達(dá)稅費(fèi)計(jì)算的業(yè)務(wù)規(guī)則  
6.6  把組件裝配起來(lái)  
6.6.1  用trait 和類(lèi)型組合出更多的抽象  
6.6.2  使領(lǐng)域組件具體化  
6.7  組合多種DSL  
6.7.1  擴(kuò)展關(guān)系的組合方式  
6.7.2  層級(jí)關(guān)系的組合方式  
6.8  DSL 中的Monad 化結(jié)構(gòu)  
6.9  小結(jié)  
6.10  參考文獻(xiàn)  
第7章  外部DSL  的實(shí)現(xiàn)載體  
7.1  解剖外部DSL  
7.1.1  最簡(jiǎn)單的實(shí)現(xiàn)形式  
7.1.2  對(duì)領(lǐng)域模型進(jìn)行抽象  
7.2  語(yǔ)法分析器在外部DSL  設(shè)計(jì)中的作用  
7.2.1  語(yǔ)法分析器、語(yǔ)法分析器生成器  
7.2.2  語(yǔ)法制導(dǎo)翻譯  
7.3  語(yǔ)法分析器的分類(lèi)  
7.3.1  簡(jiǎn)單的自頂向下語(yǔ)法分析器  
7.3.2  高級(jí)的自頂向下語(yǔ)法分析器  
7.3.3  自底向上語(yǔ)法分析器  
7.4  工具支持下的DSL 開(kāi)發(fā)--Xtext  
7.4.1  文法規(guī)則和大綱視圖  
7.4.2  文法的元模型  
7.4.3  為語(yǔ)義模型生成代碼  
7.5  小結(jié)  
7.6  參考文獻(xiàn)  
第8章  用Scala 語(yǔ)法分析器組合子設(shè)計(jì)外部DSL  
8.1  分析器組合子  
8.1.1  什么是分析器組合子  
8.1.2  按照分析器組合子的方式設(shè)計(jì)DSL  
8.2  Scala 的分析器組合子庫(kù)  
8.2.1  分析器組合子庫(kù)中的基本抽象  
8.2.2  把分析器連接起來(lái)的組合子  
8.2.3  用Monad 組合DSL 分析器  
8.2.4  左遞歸DSL 語(yǔ)法的packrat分析  
8.3  用分析器組合子設(shè)計(jì)DSL 的步驟  
8.3.1  第一步:執(zhí)行文法  
8.3.2  第二步:建立DSL 的語(yǔ)義模型  
8.3.3  第三步:設(shè)計(jì)Order 抽象  
8.3.4  第四步:通過(guò)函數(shù)施用組合子生成AST  
8.4  一個(gè)需要packrat 分析器的DSL實(shí)例  
8.4.1  待解決的領(lǐng)域問(wèn)題  
8.4.2  定義文法  
8.4.3  設(shè)計(jì)語(yǔ)義模型  
8.4.4  通過(guò)分析器的組合來(lái)擴(kuò)展DSL語(yǔ)義  
8.5  小結(jié)  
8.6  參考文獻(xiàn)  
第三部分  DSL開(kāi)發(fā)的未來(lái)趨勢(shì)
第9章  展望DSL 設(shè)計(jì)的未來(lái).
9.1  語(yǔ)言層面對(duì)DSL 設(shè)計(jì)的支持越來(lái)越充分  
9.1.1  對(duì)表現(xiàn)力的不懈追求  
9.1.2  元編程的能力越來(lái)越強(qiáng)  
9.1.3  S 表達(dá)式取代XML  充當(dāng)載體  
9.1.4  分析器組合子越來(lái)越流行  
9.2  DSL 工作臺(tái)  
9.2.1  DSL 工作臺(tái)的原理  
9.2.2  使用DSL 工作臺(tái)的好處
9.3  其他方面的工具支持  
9.4  DSL 的成長(zhǎng)和演化  
9.4.1  DSL 的版本化  
9.4.2  DSL 平穩(wěn)演化的最佳實(shí)踐  
9.5  小結(jié)  
9.6  參考文獻(xiàn)  
附錄A  抽象在領(lǐng)域建模中的角色  
A.1  設(shè)計(jì)得當(dāng)?shù)某橄髴?yīng)具備的特質(zhì)  
A.1.1  極簡(jiǎn)  
A.1.2  精煉  
A.1.3  擴(kuò)展性和組合性  
A.2  極簡(jiǎn),只公開(kāi)對(duì)外承諾的  
A.2.1  用泛化來(lái)保留演化余地  
A.2.2  用子類(lèi)型化防止實(shí)現(xiàn)的泄露  
A.2.3  正確實(shí)施實(shí)現(xiàn)繼承  
A.3  精煉,只保留自身需要的  
A.3.1  什么是非本質(zhì)的  
A.3.2  非本質(zhì)復(fù)雜性  
A.3.3  撇除雜質(zhì)  
A.3.4  用DI 隱藏實(shí)現(xiàn)細(xì)節(jié)  
A.4  擴(kuò)展性提供成長(zhǎng)的空間  
A.4.1  什么是擴(kuò)展性  
A.4.2  mixin:滿足擴(kuò)展性的一種設(shè)計(jì)模式  
A.4.3  用mixin 擴(kuò)展Map  
A.4.4  函數(shù)式的擴(kuò)展性  
A.4.5  擴(kuò)展性也可以臨時(shí)抱佛腳  
A.5  組合性,源自純粹  
A.5.1  用設(shè)計(jì)模式滿足組合性  
A.5.2  回歸語(yǔ)言  
A.5.3  副作用和組合性  
A.5.4  組合性與并發(fā)  
A.6  參考文獻(xiàn)  
附錄B  元編程與DSL  設(shè)計(jì)  
B.1  DSL 中的元編程  
B.1.1  DSL 實(shí)現(xiàn)中的運(yùn)行時(shí)元編程  
B.1.2  DSL 實(shí)現(xiàn)中的編譯時(shí)元編程  
B.2  作為DSL 載體的Lisp  
B.2.1  Lisp 的特殊之處  
B.2.2  代碼等同于數(shù)據(jù)  
B.2.3  數(shù)據(jù)等同于代碼  
B.2.4  簡(jiǎn)單到只分析列表結(jié)構(gòu)的語(yǔ)法分析器  
B.3  參考文獻(xiàn)  
附錄C  Ruby 語(yǔ)言的DSL 相關(guān)特性  
C.1  Ruby 語(yǔ)言的DSL 相關(guān)特性  
C.2  參考文獻(xiàn)  
附錄D  Scala 語(yǔ)言的DSL 相關(guān)特性  
D.1  Scala 語(yǔ)言的DSL 相關(guān)特性  
D.2  參考文獻(xiàn)  
附錄E  Groovy 語(yǔ)言的DSL 相關(guān)特性  
E.1  Groovy 語(yǔ)言的DSL 相關(guān)特性  
E.2  參考文獻(xiàn)  
附錄F  Clojure 語(yǔ)言的DSL 相關(guān)特性  
F.1  Clojure 語(yǔ)言的DSL 相關(guān)特性  
F.2  參考文獻(xiàn)  
附錄G  多語(yǔ)言開(kāi)發(fā)  
G.1  對(duì)IDE 的特性要求  
G.2  搭建Java 和Groovy 的混合開(kāi)發(fā)環(huán)境  
G.3  搭建Java  和Scala  的混合開(kāi)發(fā)環(huán)境  
G.4  常見(jiàn)的多語(yǔ)言開(kāi)發(fā)IDE  
索引

本目錄推薦

掃描二維碼
Copyright ? 讀書(shū)網(wǎng) ranfinancial.com 2005-2020, All Rights Reserved.
鄂ICP備15019699號(hào) 鄂公網(wǎng)安備 42010302001612號(hào)