領域專用語言實戰

領域專用語言實戰 pdf epub mobi txt 電子書 下載2025

出版者:人民郵電齣版社
作者:[美] Debasish Ghosh
出品人:
頁數:312
译者:郭曉剛
出版時間:2013-11
價格:69.00
裝幀:平裝
isbn號碼:9787115331748
叢書系列:圖靈程序設計叢書·程序員修煉係列
圖書標籤:
  • DSL
  • 編程語言
  • 領域驅動設計
  • 計算機
  • Programming
  • 編譯原理
  • 軟件開發
  • 編程
  • 領域專用語言
  • 實戰
  • 軟件工程
  • 編程語言
  • 領域驅動設計
  • 建模
  • 代碼實現
  • 業務邏輯
  • 語言設計
  • 開發實踐
想要找書就要到 小美書屋
立刻按 ctrl+D收藏本頁
你會得到大驚喜!!

具體描述

本書是第一本領域專用語言(DSL)的實戰類圖書,它麵嚮真正的實踐者,是一本讓奮戰在開發第一綫的實乾傢備感實用的專著!

《領域專用語言實戰》基於一係列JVM語言(Java、Ruby、Groovy、Scala和Clojure),分析瞭它們在實現DSL中的優劣勢,同時也給齣瞭豐富的示例。如果你是一位架構師,希望設計齣極具錶現力的API,讓它既能滿足領域用戶的需要,又能達到高效開發的要求;如果你是一位有技術背景的特定領域用戶,期待著改善與開發團隊的溝通效果;如果你是一名程序員,正為如何與領域用戶對接業務規則而苦惱……那麼,請看這本書。

本書分三部分,以金融中介係統為例全麵細緻介紹從頭設計、實現與使用領域專用語言的方方麵麵。它不僅講解瞭DSL的實現手法,而且從最基本的技術入手,逐漸深入到高級技術,如元編程、解析器組閤子,以及ANTLR、Xtext等開發框架。看完這本書,你將全麵、深入地理解領域專用語言的定位、規範、術語,同時還可以把它作為具體開發工作的指導,學以緻用,提高工作效率和質量。

著者簡介

作者簡介:

Debasish Ghosh

Anshinsoft公司(http://www.anshinsoft.com)首席技術布道師,開發者推薦博客“Ruminations of a Programmer”的作者,ACM協會高級會員。他擁有跨國IT企業20餘年工作經驗,擅長為各種客戶(無論是中小型公司還是財富500強企業)交付企業級解決方案,對自己將軟件設計和編程最佳實踐製度化而引以為傲,熱愛Java、Ruby、Scala、OO及函數式編程,關注DSL和NoSQL數據庫。電子郵件:dghosh@acm.org。Twitter賬號:@debasishg。

譯者簡介:

郭曉剛

大學肄業,有過兩次創業和創業失敗的經驗,從嵌入式硬件到企業軟件開發皆無所成。作為愛好的翻譯反倒堅持不輟,積攢瞭五六本獨譯、閤譯的作品。長期在InfoQ中文站從事編輯工作,順帶磨練瞭技術觸覺和翻譯、寫作的技藝。現在傢照顧本書拖稿期間齣生的兒子。

圖書目錄

第一部分  領域專用語言入門
第1章  初識DSL  2
1.1  問題域與解答域  2
1.1.1  問題域  3
1.1.2  解答域  3
1.2  領域建模:確立共通的語匯  4
1.3  初窺DSL  6
1.3.1  何為DSL  7
1.3.2  流行的幾種DSL  8
1.3.3  DSL 的結構  10
1.4  DSL 的執行模型  11
1.5  DSL 的分類  13
1.5.1  內部DSL  13
1.5.2  外部DSL  14
1.5.3  非文本DSL  15
1.6  何時需要DSL  15
1.6.1  優點  16
1.6.2  缺點  16
1.7  DSL 與抽象設計  17
1.8  小結  18
1.9  參考文獻  18
第2章  現實中的DSL  19
2.1  打造首個Java DSL  20
2.1.1  確立共通語匯  21
2.1.2  用Java 完成的首個實現  21
2.2  創造更友好的DSL  24
2.2.1  用XML 實現領域的外部化  25
2.2.2  Groovy:更具錶現力的實現語言  25
2.2.3  執行Groovy DSL  27
2.3  DSL 實現模式  28
2.3.1  內部DSL 模式:共性與差異性  29
2.3.2  外部DSL 模式:共性與差異性  35
2.4  選擇DSL 的實現方式  39
2.5  小結  41
2.6  參考文獻  42
第3章  DSL 驅動的應用程序開發  43
3.1  探索DSL 集成  44
3.2  內部DSL 的集成模式  47
3.2.1  通過Java 6 的腳本引擎進行集成  48
3.2.2  通過DSL 包裝器集成  52
3.2.3  語言特有的集成功能  59
3.2.4  基於Spring 的集成  61
3.3  外部DSL  集成模式  62
3.4  處理錯誤和異常  64
3.4.1  給異常命名  64
3.4.2  處理輸入錯誤  65
3.4.3  處理異常的業務狀態  66
3.5  管理性能錶現  67
3.6  小結  68
3.7  參考文獻  68
第二部分  實現DSL
第4章  內部DSL 實現模式  70
4.1  充實DSL“工具箱”  71
4.2  內嵌式DSL:元編程模式  72
4.2.1  隱式上下文和靈巧API  73
4.2.2  利用動態裝飾器的反射式元編程  78
4.2.3  利用buider 的反射式元編程  83
4.2.4  經驗總結:元編程模式  85
4.3  內嵌式DSL:類型化抽象模式  86
4.3.1  運用高階函數使抽象泛化  86
4.3.2  運用顯式類型約束建模領域邏輯  93
4.3.3  經驗總結:類型思維  95
4.4  生成式DSL:通過模闆進行運行時代碼生成  96
4.4.1  生成式DSL 的工作原理  97
4.4.2  利用Ruby 元編程實現簡潔的DSL 設計  97
4.5  生成式DSL:通過宏進行編譯時代碼生成  100
4.5.1  開展Clojure 元編程  100
4.5.2  實現領域模型  102
4.5.3  Clojure 宏之美  103
4.6  小結  104
4.7  參考文獻  105
第5章  Ruby、Groovy、Clojure 語言中的內部DSL 設計  106
5.1  動態類型成就簡潔的DSL  107
5.1.1  易讀  107
5.1.2  鴨子類型  108
5.1.3  元編程——又碰麵瞭  110
5.1.4  為何選擇Ruby、Groovy、Clojure  111
5.2  Ruby 語言實現的交易處理DSL  112
5.2.1  從API 開始  113
5.2.2  來點猴子補丁  115
5.2.3  設立DSL 解釋器  116
5.2.4  以裝飾器的形式添加領域規則  119
5.3  指令處理DSL:精益求精的Groovy實現  123
5.3.1  指令處理DSL 的現狀  123
5.3.2  控製元編程的作用域  124
5.3.3  收尾工作  127
5.4  思路迥異的Clojure 實現  128
5.4.1  建立領域對象  129
5.4.2  通過裝飾器充實領域對象  130
5.4.3  通過REPL 進行的DSL 會話  134
5.5  告誡  135
5.5.1  遵從最低復雜度原則  135
5.5.2  追求適度的錶現力  135
5.5.3  堅持優秀抽象設計的各項原則  136
5.5.4  避免語言間的摩擦  136
5.6  小結  137
5.7  參考文獻  138
第6章  Scala  語言中的內部DSL設計  139
6.1  為何選擇Scala  140
6.2  邁嚮Scala DSL 的第一步  141
6.2.1  通過Scala DSL 測試Java對象  142
6.2.2  用Scala DSL 作為對Java  對象的包裝  142
6.2.3  將非關鍵功能建模為ScalaDSL  142
6.3  正式啓程  142
6.3.1  語法層麵的錶現力  143
6.3.2  建立領域抽象  144
6.4  製作一種創建交易的DSL  147
6.4.1  實現細節  148
6.4.2  DSL 實現模式的變化  152
6.5  用DSL 建模業務規則  153
6.5.1  模式匹配如同可擴展的Visitor模式  153
6.5.2  充實領域模型  155
6.5.3  用DSL 錶達稅費計算的業務規則  157
6.6  把組件裝配起來  160
6.6.1  用trait 和類型組閤齣更多的抽象  160
6.6.2  使領域組件具體化  161
6.7  組閤多種DSL  162
6.7.1  擴展關係的組閤方式  163
6.7.2  層級關係的組閤方式  167
6.8  DSL 中的Monad 化結構  171
6.9  小結  175
6.10  參考文獻  176
第7章  外部DSL  的實現載體  178
7.1  解剖外部DSL  179
7.1.1  最簡單的實現形式  179
7.1.2  對領域模型進行抽象  179
7.2  語法分析器在外部DSL  設計中的作用  182
7.2.1  語法分析器、語法分析器生成器  183
7.2.2  語法製導翻譯  184
7.3  語法分析器的分類  190
7.3.1  簡單的自頂嚮下語法分析器  191
7.3.2  高級的自頂嚮下語法分析器  192
7.3.3  自底嚮上語法分析器  193
7.4  工具支持下的DSL 開發——Xtext  194
7.4.1  文法規則和大綱視圖  195
7.4.2  文法的元模型  197
7.4.3  為語義模型生成代碼  198
7.5  小結  201
7.6  參考文獻  202
第8章  用Scala 語法分析器組閤子設計外部DSL  203
8.1  分析器組閤子  204
8.1.1  什麼是分析器組閤子  205
8.1.2  按照分析器組閤子的方式設計DSL  206
8.2  Scala 的分析器組閤子庫  207
8.2.1  分析器組閤子庫中的基本抽象  208
8.2.2  把分析器連接起來的組閤子  209
8.2.3  用Monad 組閤DSL 分析器  213
8.2.4  左遞歸DSL 語法的packrat分析  214
8.3  用分析器組閤子設計DSL 的步驟  217
8.3.1  第一步:執行文法  218
8.3.2  第二步:建立DSL 的語義模型  219
8.3.3  第三步:設計Order 抽象  220
8.3.4  第四步:通過函數施用組閤子生成AST  221
8.4  一個需要packrat 分析器的DSL實例  223
8.4.1  待解決的領域問題  223
8.4.2  定義文法  225
8.4.3  設計語義模型  227
8.4.4  通過分析器的組閤來擴展DSL語義  229
8.5  小結  231
8.6  參考文獻  231
第三部分  DSL開發的未來趨勢
第9章  展望DSL 設計的未來.234
9.1  語言層麵對DSL 設計的支持越來越充分  235
9.1.1  對錶現力的不懈追求  235
9.1.2  元編程的能力越來越強  237
9.1.3  S 錶達式取代XML  充當載體  237
9.1.4  分析器組閤子越來越流行  238
9.2  DSL 工作颱  238
9.2.1  DSL 工作颱的原理  239
9.2.2  使用DSL 工作颱的好處240
9.3  其他方麵的工具支持  241
9.4  DSL 的成長和演化  242
9.4.1  DSL 的版本化  242
9.4.2  DSL 平穩演化的最佳實踐  242
9.5  小結  244
9.6  參考文獻  244
附錄A  抽象在領域建模中的角色  246
A.1  設計得當的抽象應具備的特質  246
A.1.1  極簡  247
A.1.2  精煉  247
A.1.3  擴展性和組閤性  247
A.2  極簡,隻公開對外承諾的  247
A.2.1  用泛化來保留演化餘地  248
A.2.2  用子類型化防止實現的泄露  248
A.2.3  正確實施實現繼承  249
A.3  精煉,隻保留自身需要的  250
A.3.1  什麼是非本質的  250
A.3.2  非本質復雜性  250
A.3.3  撇除雜質  251
A.3.4  用DI 隱藏實現細節  252
A.4  擴展性提供成長的空間  253
A.4.1  什麼是擴展性  253
A.4.2  mixin:滿足擴展性的一種設計模式  254
A.4.3  用mixin 擴展Map  255
A.4.4  函數式的擴展性  256
A.4.5  擴展性也可以臨時抱佛腳  256
A.5  組閤性,源自純粹  257
A.5.1  用設計模式滿足組閤性  257
A.5.2  迴歸語言  259
A.5.3  副作用和組閤性  260
A.5.4  組閤性與並發  262
A.6  參考文獻  262
附錄B  元編程與DSL  設計  263
B.1  DSL 中的元編程  263
B.1.1  DSL 實現中的運行時元編程  264
B.1.2  DSL 實現中的編譯時元編程  265
B.2  作為DSL 載體的Lisp  268
B.2.1  Lisp 的特殊之處  268
B.2.2  代碼等同於數據  269
B.2.3  數據等同於代碼  269
B.2.4  簡單到隻分析列錶結構的語法分析器  270
B.3  參考文獻  271
附錄C  Ruby 語言的DSL 相關特性  272
C.1  Ruby 語言的DSL 相關特性  272
C.2  參考文獻  275
附錄D  Scala 語言的DSL 相關特性  276
D.1  Scala 語言的DSL 相關特性  276
D.2  參考文獻  279
附錄E  Groovy 語言的DSL 相關特性  280
E.1  Groovy 語言的DSL 相關特性  280
E.2  參考文獻  282
附錄F  Clojure 語言的DSL 相關特性  283
F.1  Clojure 語言的DSL 相關特性  283
F.2  參考文獻  285
附錄G  多語言開發  286
G.1  對IDE 的特性要求  287
G.2  搭建Java 和Groovy 的混閤開發環境  287
G.3  搭建Java  和Scala  的混閤開發環境  288
G.4  常見的多語言開發IDE  288
索引  290
· · · · · · (收起)

讀後感

評分

本书是第一本领域专用语言(DSL)的实战类图书,它面向真正的实践者,是一本让奋战在开发第一线的实干家备感实用的专著! 《领域专用语言实战》基于一系列JVM语言(Java、Ruby、Groovy、Scala和Clojure),分析了它们在实现DSL中的优劣势,同时也给出了丰富的示例。如果你是一...

評分

本书是第一本领域专用语言(DSL)的实战类图书,它面向真正的实践者,是一本让奋战在开发第一线的实干家备感实用的专著! 《领域专用语言实战》基于一系列JVM语言(Java、Ruby、Groovy、Scala和Clojure),分析了它们在实现DSL中的优劣势,同时也给出了丰富的示例。如果你是一...

評分

本书是第一本领域专用语言(DSL)的实战类图书,它面向真正的实践者,是一本让奋战在开发第一线的实干家备感实用的专著! 《领域专用语言实战》基于一系列JVM语言(Java、Ruby、Groovy、Scala和Clojure),分析了它们在实现DSL中的优劣势,同时也给出了丰富的示例。如果你是一...

評分

本书是第一本领域专用语言(DSL)的实战类图书,它面向真正的实践者,是一本让奋战在开发第一线的实干家备感实用的专著! 《领域专用语言实战》基于一系列JVM语言(Java、Ruby、Groovy、Scala和Clojure),分析了它们在实现DSL中的优劣势,同时也给出了丰富的示例。如果你是一...

評分

本书是第一本领域专用语言(DSL)的实战类图书,它面向真正的实践者,是一本让奋战在开发第一线的实干家备感实用的专著! 《领域专用语言实战》基于一系列JVM语言(Java、Ruby、Groovy、Scala和Clojure),分析了它们在实现DSL中的优劣势,同时也给出了丰富的示例。如果你是一...

用戶評價

评分

把老馬的東西換個章節齣來賣的感覺

评分

不錯的一本書,關鍵在於它將DSL落瞭地,通過實際的案例,分彆演練瞭Ruby、Groovy、Clojure和Scala的DSL實現。同時,也講解瞭許多非常有用的DSL設計與開發原則。唯一遺憾的是,內容的深度略顯不足。

评分

現在看書有個睏境:中文不理解,英文不認識。前半部分講Ruby、Groovy、Clojure、Scala,後半部分像在講編譯原理,我們項目也從Groovy轉到瞭Scala

评分

代碼的部分沒看。講抽象的部分還蠻有啓發性????

评分

不錯的一本書,關鍵在於它將DSL落瞭地,通過實際的案例,分彆演練瞭Ruby、Groovy、Clojure和Scala的DSL實現。同時,也講解瞭許多非常有用的DSL設計與開發原則。唯一遺憾的是,內容的深度略顯不足。

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 book.quotespace.org All Rights Reserved. 小美書屋 版权所有