中图网(原中国图书网):网上书店,尾货特色书店,30万种特价书低至2折!

歡迎光臨中圖網 請 | 注冊

包郵 領域特定語言

出版社:人民郵電出版社出版時間:2021-07-01
開本: 16開 頁數: 473
中 圖 價:¥112.4(7.5折) 定價  ¥149.9 登錄后可看到會員價
加入購物車 收藏
開年大促, 全場包郵
?新疆、西藏除外
本類五星書更多>

領域特定語言 版權信息

  • ISBN:9787115563163
  • 條形碼:9787115563163 ; 978-7-115-56316-3
  • 裝幀:一般膠版紙
  • 冊數:暫無
  • 重量:暫無
  • 所屬分類:>

領域特定語言 本書特色

1.本書由世界軟件開發大師Martin Fowler歷時多年完成,堪稱DSL領域的豐碑之作,書中充分介紹了在適用的場景中構建DSL的多種有效技。 2.本書介紹的技巧可用于大多數現代面向對象語言。書中給出了許多采用Java和C#編寫的示例,并精選了部分適合采用Ruby編寫的示例。 3.通過這部內容豐富、覆蓋范圍廣泛的著作,開發人員能夠掌握做出DSL重要決策所需的知識,并在恰當使用DSL時獲得技術和業務上的顯著收益。 4.通過閱讀本書,軟件開發人員可全面的了解各種DSL及其構建方式,提高開發生產力和溝通能力。

領域特定語言 內容簡介

《領域特定語言》是領域特定語言(Domain-Specific Language,DSL)領域的豐碑之作,由重量軟件開發大師馬丁·福勒(Martin Fowler)歷時多年寫作而成。 全書共57章,分為6個部分,全面介紹了DSL概念、DSL常見主題、外部DSL主題、內部DSL主題、備選計算模型以及代碼生成等內容,揭示了與編程語言無關的通用原則和模式,闡釋了如何通過DSL有效提高開發人員的生產力以及增進與領域專家的有效溝通,能為開發人員選擇和使用DSL提供有效的決策依據和指導方法。 本書適合想要了解各種DSL及其構造方式,理解其通用原則、模式和適用場景,以提高開發生產力和溝通能力的軟件開發人員閱讀。

領域特定語言 目錄

第 一部分 敘述
第 1章 入門示例 2
1.1 古堡安全系統 2
1.2 狀態機模型 4
1.3 為格蘭特女士的控制器編程 7
1.4 語言和語義模型 13
1.5 使用代碼生成 15
1.6 使用語言工作臺 17
1.7 可視化 19
第 2章 使用DSL 21
2.1 定義DSL 21
2.1.1 DSL的邊界 22
2.1.2 片段DSL和獨立DSL 25
2.2 為何使用DSL 25
2.2.1 提高開發效率 26
2.2.2 與領域專家溝通 26
2.2.3 改變執行環境 27
2.2.4 備選計算模型 28
2.3 DSL的問題 28
2.3.1 語言噪聲 29
2.3.2 構建成本 29
2.3.3 集中營語言 30
2.3.4 狹隘的抽象 30
2.4 廣義的語言處理 31
2.5 DSL的生命周期 31
2.6 設計優良的DSL從何而來 33
第3章 實現DSL 34
3.1 DSL處理的架構 34
3.2 語法分析器的工作方式 37
3.3 文法、語法和語義 39
3.4 語法分析中的數據 39
3.5 宏 41
3.6 DSL的測試 42
3.6.1 語義模型的測試 42
3.6.2 語法分析器的測試 46
3.6.3 腳本的測試 49
3.7 錯誤處理 50
3.8 DSL的遷移 51
第4章 實現內部DSL 53
4.1 連貫API和命令查詢API 53
4.2 對語法分析層的需要 56
4.3 使用函數 57
4.4 字面量集合 61
4.5 基于文法選擇內部元素 62
4.6 閉包 63
4.7 語法分析樹操作 65
4.8 注解 66
4.9 字面量擴展 67
4.10 降低語法噪聲 68
4.11 動態接收 68
4.12 提供類型檢查 69
第5章 實現外部DSL 71
5.1 語法分析策略 71
5.2 輸出生成策略 74
5.3 解析中的概念 75
5.3.1 單獨的詞法分析 75
5.3.2 文法和語言 76
5.3.3 正則文法、上下文無關文法和上下文相關文法 77
5.3.4 自頂向下解析和自底向上解析 78
5.4 混入另一種語言 80
5.5 XML DSL 81
第6章 在內部DSL和外部DSL之間做選擇 83
6.1 學習曲線 83
6.2 構建成本 84
6.3 程序員的熟悉度 85
6.4 與領域專家溝通 85
6.5 與宿主語言混合 85
6.6 表達性強邊界 86
6.7 運行時配置 86
6.8 趨于通用 87
6.9 組合多種DSL 87
6.10 小結 88
第7章 備選計算模型 89
7.1 決策表 91
7.2 產生式規則系統 92
7.3 狀態機 93
7.4 依賴網絡 94
7.5 選擇模型 94
第8章 代碼生成 95
8.1 選擇生成什么 96
8.2 如何生成 98
8.3 混合生成的代碼和手寫代碼 99
8.4 生成可讀的代碼 100
8.5 語法分析前的代碼生成 100
8.6 延伸閱讀 101
第9章 語言工作臺 102
9.1 語言工作臺的要素 102
9.2 模式定義語言和元模型 103
9.3 源編輯和投射編輯 107
9.4 說明性編程 109
9.5 工具之旅 110
9.6 語言工作臺和CASE工具 111
9.7 是否應該使用語言工作臺 112

第二部分 常見主題
第 10章 DSL集錦 114
10.1 Graphviz 114
10.2 JMock 115
10.3 CSS 116
10.4 HQL 118
10.5 XAML 118
10.6 FIT 120
10.7 Make等 121
第 11章 語義模型(Semantic Model) 123
11.1 運行機制 123
11.2 使用時機 125
11.3 入門示例(Java) 126
第 12章 符號表(Symbol Table) 127
12.1 運行機制 127
12.2 使用時機 129
12.3 延伸閱讀 129
12.4 以外部DSL實現的依賴網絡(Java和ANTLR) 130
12.5 在內部DSL中使用符號鍵(Ruby) 131
12.6 以枚舉作為靜態類型符號(Java) 132
第 13章 上下文變量(Context Variable) 135
13.1 運行機制 135
13.2 使用時機 136
13.3 讀取INI文件(C#) 136
第 14章 構造型構建器(Construction Builder) 139
14.1 運行機制 139
14.2 使用時機 140
14.3 構建簡單的航班數據(C#) 140
第 15章 宏(Macro) 142
15.1 運行機制 142
15.1.1 文本宏 143
15.1.2 語法宏 146
15.2 使用時機 149
第 16章 通知(Notification) 150
16.1 運行機制 150
16.2 使用時機 151
16.3 非常簡單的通知(C#) 151
16.4 對通知進行語法分析(Java) 152

第三部分 外部DSL主題
第 17章 分隔符制導翻譯(Delimiter-Directed Translation) 156
17.1 運行機制 156
17.2 使用時機 159
17.3 常客記分(C#) 159
17.3.1 語義模型 159
17.3.2 語法分析器 161
17.4 使用格蘭特女士的控制器對非自治語句進行語法分析(Java) 164
第 18章 語法制導翻譯(Syntax-Directed Translation) 171
18.1 運行機制 172
18.1.1 詞法分析器 172
18.1.2 語法分析器 175
18.1.3 產生輸出 177
18.1.4 語義謂詞 177
18.2 使用時機 178
18.3 延伸閱讀 178
第 19章 巴克斯-諾爾范式(BNF) 179
19.1 運行機制 179
19.1.1 多重性符號(克林運算符) 181
19.1.2 其他有用的運算符 182
19.1.3 解析表達式文法 182
19.1.4 將EBNF轉換為基礎BNF 183
19.1.5 行為代碼 185
19.2 使用時機 187
第 20章 基于正則表達式表的詞法分析器(Regex Table Lexer) 188
20.1 運行機制 189
20.2 使用時機 190
20.3 對格蘭特女士的控制器進行詞法分析(Java) 190
第 21章 遞歸下降語法分析器(Recursive Descent Parser) 193
21.1 運行機制 194
21.2 使用時機 196
21.3 延伸閱讀 197
21.4 遞歸下降和格蘭特女士的控制器(Java) 197
第 22章 語法分析器組合子(Parser Combinator) 202
22.1 運行機制 203
22.1.1 處理動作 205
22.1.2 函數式風格的組合子 206
22.2 使用時機 207
22.3 語法分析器組合子和格蘭特女士的控制器(Java) 207
第 23章 語法分析器生成器(Parser Generator) 214
23.1 運行機制 214
23.2 使用時機 216
23.3 Hello World(Java和ANTLR) 216
23.3.1 編寫基本的文法 217
23.3.2 構建語法分析器 218
23.3.3 為文法添加行為代碼 220
23.3.4 使用代溝 221
第 24章 樹構造(Tree Construction) 224
24.1 運行機制 224
24.2 使用時機 226
24.3 使用ANTLR的樹構造語法(Java和ANTLR) 227
24.3.1 分詞 228
24.3.2 語法分析 228
24.3.3 組裝語義模型 230
24.4 使用行為代碼進行樹構造(Java和ANTLR) 233
第 25章 內嵌翻譯(Embedded Translation) 239
25.1 運行機制 239
25.2 使用時機 240
25.3 格蘭特女士的控制器(Java和ANTLR) 240
第 26章 內嵌解釋(Embedded Interpretation) 244
26.1 運行機制 244
26.2 使用時機 244
26.3 計算器(ANTLR和Java) 245
第 27章 外來代碼(Foreign Code) 247
27.1 運行機制 247
27.2 使用時機 248
27.3 嵌入動態代碼(ANTLR、Java和JavaScript) 249
27.3.1 語義模型 249
27.3.2 語法分析器 251
第 28章 可變分詞方式(Alternative Tokenization) 255
28.1 運行機制 255
28.1.1 引用 256
28.1.2 詞法狀態 258
28.1.3 修改記號類型 259
28.1.4 忽略記號類型 260
28.2 使用時機 261
第 29章 嵌套運算符表達式(Nested Operator Expression) 262
29.1 運行機制 262
29.1.1 自底向上的語法分析器 262
29.1.2 自頂向下的語法分析器 264
29.2 使用時機 266
第30章 換行分隔符(Newline Separator) 267
30.1 運行機制 267
30.2 使用時機 269
第31章 外部DSL拾遺 271
31.1 語法縮進 271
31.2 模塊化文法 273

第四部分 內部DSL主題
第32章 表達式構建器(Expression Builder) 276
32.1 運行機制 277
32.2 使用時機 277
32.3 用構建器和不用構建器的連貫接口日程表(Java) 278
32.4 對日程表使用多個構建器(Java) 280
第33章 函數序列(Function Sequence) 283
33.1 運行機制 283
33.2 使用時機 284
33.3 簡單的計算機配置范例(Java) 284
第34章 嵌套函數(Nested Function) 287
34.1 運行機制 287
34.2 使用時機 289
34.3 簡單的計算機配置示例(Java) 289
34.4 用記號處理多個不同的參數(C#) 291
34.5 針對IDE支持使用子類型記號(Java) 292
34.6 使用對象初始化器(C#) 294
34.7 重復事件(C#) 295
34.7.1 語義模型 295
34.7.2 DSL 298
第35章 方法級聯(Method Chaining) 300
35.1 運行機制 300
35.1.1 使用構建器還是值 301
35.1.2 收尾問題 302
35.1.3 分層結構 303
35.1.4 漸進式接口 303
35.2 使用時機 304
35.3 簡單的計算機配置示例(Java) 304
35.4 帶有屬性的方法級聯(C#) 307
35.5 漸進式接口(C#) 308
第36章 對象作用域(Object Scoping) 310
36.1 運行機制 310
36.2 使用時機 311
36.3 安全代碼(C#) 312
36.3.1 語義模型 312
36.3.2 DSL 314
36.4 使用實例求值(Ruby) 316
36.5 使用實例初始化程序(Java) 318
第37章 閉包(Closure) 320
37.1 運行機制 320
37.2 使用時機 324
第38章 嵌套閉包(Nested Closure) 325
38.1 運行機制 325
38.2 使用時機 326
38.3 用嵌套閉包來包裝函數序列(Ruby) 327
38.4 簡單的C#范例(C#) 329
38.5 使用方法級聯(Ruby) 330
38.6 帶有顯式閉包參數的函數序列(Ruby) 331
38.7 使用實例求值(Ruby) 333
第39章 字面量列表(Literal List) 336
39.1 運行機制 336
39.2 使用時機 336
第40章 字面量映射(Literal Map) 338
40.1 運行機制 338
40.2 使用時機 339
40.3 使用列表和映射表達計算機的配置信息(Ruby) 339
40.4 演化為格林斯潘式(Ruby) 340
第41章 動態接收(Dynamic Reception) 344
41.1 運行機制 344
41.2 使用時機 345
41.3 積分—使用經過語法分析的方法名(Ruby) 347
41.3.1 模型 347
41.3.2 構建器 349
41.4 積分—使用方法級聯(Ruby) 350
41.4.1 模型 351
41.4.2 構建器 351
41.5 去除密室控制器中的引用(JRuby) 354
第42章 注解(Annotation) 359
42.1 運行機制 359
42.1.1 定義注解 360
42.1.2 處理注解 361
42.2 使用時機 362
42.3 用于運行時處理的自定義語法(Java) 362
42.4 使用類方法(Ruby) 364
42.5 動態代碼生成(Ruby) 365
第43章 語法分析樹操作(Parse Tree Manipulation) 367
43.1 運行機制 367
43.2 使用時機 368
43.3 由C#條件生成IMAP查詢(C#) 369
43.3.1 語義模型 369
43.3.2 使用C#構建 371
43.3.3 退后一步 375
第44章 類符號表(Class Symbol Table) 377
44.1 運行機制 377
44.2 使用時機 378
44.3 靜態類型的類符號表(Java) 379
第45章 文本打磨(Textual Polishing) 385
45.1 運行機制 385
45.2 使用時機 386
45.3 打磨后的折扣規則(Ruby) 386
第46章 字面量擴展(Literal Extension) 389
46.1 運行機制 389
46.2 使用時機 390
46.3 食譜配料(C#) 390

第五部分 備選計算模型
第47章 適應性模型(Adaptive Model) 394
47.1 運行機制 395
47.1.1 在適應性模型中納入命令式代碼 396
47.1.2 工具 397
47.2 使用時機 398
第48章 決策表(Decision Table) 400
48.1 運行機制 400
48.2 使用時機 401
48.3 訂單費用計算(C#) 402
48.3.1 模型 402
48.3.2 語法分析器 405
第49章 依賴網絡(Dependency Network) 408
49.1 運行機制 408
49.2 使用時機 410
49.3 分析藥劑(C#) 411
49.3.1 語義模型 411
49.3.2 語法分析器 413
第50章 產生式規則系統(Production Rule System) 414
50.1 運行機制 415
50.1.1 規則鏈 415
50.1.2 矛盾的推理 416
50.1.3 規則結構里的模式 417
50.2 使用時機 417
50.3 俱樂部會員驗證(C#) 418
50.3.1 模型 418
50.3.2 語法分析器 419
50.3.3 演進DSL 420
50.4 適任資格的規則:擴展俱樂部成員(C#) 421
50.4.1 模型 422
50.4.2 語法分析器 425
第51章 狀態機(State Machine) 426
51.1 運行機制 426
51.2 使用時機 428
51.3 密室控制器(Java) 428

第六部分 代碼生成
第52章 基于轉換器的代碼生成(Transformer Generation) 430
52.1 運行機制 430
52.2 使用時機 431
52.3 密室控制器(Java生成C) 432
第53章 基于模板的代碼生成(Templated Generation) 435
53.1 運行機制 435
53.2 使用時機 436
53.3 使用嵌套條件生成密室狀態機(Velocity和Java生成C) 437
第54章 嵌入助手(Embedment Helper) 442
54.1 運行機制 443
54.2 使用時機 443
54.3 密室狀態(Java和ANTLR) 444
54.4 輔助類是否應該生成HTML(Java和Velocity) 446
第55章 基于模型的代碼生成(Model-Aware Generation) 448
55.1 運行機制 448
55.2 使用時機 449
55.3 密室狀態機(C) 449
55.4 動態加載狀態機(C) 455
第56章 無視模型的代碼生成(Model Ignorant Generation) 458
56.1 運行機制 458
56.2 使用時機 459
56.3 使用嵌套條件的密室狀態機(C) 459
第57章 代溝(Generation Gap) 461
57.1 運行機制 461
57.2 使用時機 462
57.3 根據數據模式生成類(Java和一些Ruby) 463
參考文獻 467
模式清單 468
速查表 470
展開全部

領域特定語言 作者簡介

馬丁.福勒(Martin Fowler),***軟件開發大師,ThoughtWorks首席科學家。他是一位作家、演說者、咨詢師和泛軟件開發領域的意見領袖。他致力于改善企業級的軟件設計,對優秀的設計以及支撐優秀設計的工程實踐孜孜以求。他在重構、面向對象分析設計、模式、XP和UML等領域都有卓越貢獻,著有《重構:改善既有代碼的設計》《分析模式:可復用的對象模型》《領域特定語言》《企業應用架構模式》等經典著作。

商品評論(0條)
暫無評論……
書友推薦
本類暢銷
編輯推薦
返回頂部
中圖網
在線客服
主站蜘蛛池模板: 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | 天津次氯酸钠酸钙溶液-天津氢氧化钠厂家-天津市辅仁化工有限公司 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 贵州成人高考网_贵州成考网 | 危废处理系统,水泥厂DCS集散控制系统,石灰窑设备自动化控制系统-淄博正展工控设备 | 河南生物显微镜,全自动冰冻切片机-河南荣程联合科技有限公司 | 济南网站策划设计_自适应网站制作_H5企业网站搭建_济南外贸网站制作公司_锐尚 | 上海乾拓贸易有限公司-日本SMC电磁阀_德国FESTO电磁阀_德国FESTO气缸 | 工业洗衣机_工业洗涤设备_上海力净工业洗衣机厂家-洗涤设备首页 bkzzy在职研究生网 - 在职研究生招生信息咨询平台 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 | 山东PE给水管厂家,山东双壁波纹管,山东钢带增强波纹管,山东PE穿线管,山东PE农田灌溉管,山东MPP电力保护套管-山东德诺塑业有限公司 | 深圳工程师职称评定条件及流程_深圳职称评审_职称评审-职称网 | 好杂志网-首页 | 环压强度试验机-拉链拉力试验机-上海倾技仪器仪表科技有限公司 | 游戏版号转让_游戏资质出售_游戏公司转让-【八九买卖网】 | 九爱图纸|机械CAD图纸下载交流中心 | 北京开源多邦科技发展有限公司官网 | 背压阀|减压器|不锈钢减压器|减压阀|卫生级背压阀|单向阀|背压阀厂家-上海沃原自控阀门有限公司 本安接线盒-本安电路用接线盒-本安分线盒-矿用电话接线盒-JHH生产厂家-宁波龙亿电子科技有限公司 | 合肥制氮机_合肥空压机厂家_安徽真空泵-凯圣精机 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 辊道窑炉,辊道窑炉厂家-山东艾希尔 | 真空搅拌机-行星搅拌机-双行星动力混合机-广州市番禺区源创化工设备厂 | 铝扣板-铝方通-铝格栅-铝条扣板-铝单板幕墙-佳得利吊顶天花厂家 elisa试剂盒价格-酶联免疫试剂盒-猪elisa试剂盒-上海恒远生物科技有限公司 | 深圳展厅设计_企业展馆设计_展厅设计公司_数字展厅设计_深圳百艺堂 | 土壤有机碳消解器-石油|表层油类分析采水器-青岛溯源环保设备有限公司 | 汽车整车综合环境舱_军标砂尘_盐雾试验室试验箱-无锡苏南试验设备有限公司 | 谈股票-今日股票行情走势分析-牛股推荐排行榜 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 老房子翻新装修,旧房墙面翻新,房屋防水补漏,厨房卫生间改造,室内装潢装修公司 - 一修房屋快修官网 | RO反渗透设备_厂家_价格_河南郑州江宇环保科技有限公司 | 雨燕360体育免费直播_雨燕360免费NBA直播_NBA篮球高清直播无插件-雨燕360体育直播 | 手术室净化厂家-成都做医院净化工程的公司-四川华锐-15年特殊科室建设经验 | 国标白水泥,高标号白水泥,白水泥厂家-淄博华雪建材有限公司 | 深圳公司注册-工商注册代理-注册公司流程和费用_护航财税 | 河南档案架,档案密集架,手动密集架,河南密集架批发/报价 | 臭氧发生器_臭氧消毒机 - 【同林品牌 实力厂家】 | 合肥地磅_合肥数控切割机_安徽地磅厂家_合肥世佳电工设备有限公司 | 橡胶弹簧|复合弹簧|橡胶球|振动筛配件-新乡市永鑫橡胶厂 | 恒湿机_除湿加湿一体机_恒湿净化消毒一体机厂家-杭州英腾电器有限公司 | 江西自考网 |