|
-- 會員 / 註冊 --
|
|
|
|
D程序設計語言 ( 簡體 字) |
作者:[美] Andrei Alexandrescu | 類別:1. -> 程式設計 -> 綜合 |
譯者: |
出版社:人民郵電出版社 | 3dWoo書號: 35647 詢問書籍請說出此書號!【缺書】 NT售價: 345 元 |
出版日:6/1/2013 |
頁數:330 |
光碟數:0 |
|
站長推薦: |
印刷:黑白印刷 | 語系: ( 簡體 版 ) |
|
加入購物車 │加到我的最愛 (請先登入會員) |
ISBN:9787115314192 |
作者序 | 譯者序 | 前言 | 內容簡介 | 目錄 | 序 |
(簡體書上所述之下載連結耗時費功, 恕不適用在台灣, 若讀者需要請自行嘗試, 恕不保證) |
作者序: |
譯者序: |
前言: |
內容簡介:D語言是一種通用的系統和應用編程語言,它保持了生成高效代碼以及直接訪問操作系統API和硬件的能力。《D程序設計語言》是一本介紹D語言的權威書籍,全面、系統、專業地講解了D語言相關的內容。書中涵蓋了D語言的方方面面,不但介紹了語言的表達式、語句、類型、函數、契約、模塊、類和結構等基本內容,還通過常見示例,深入解釋了所有語言特性,講解了如何將語言特性進行組合以支持重要的編程范型,闡述了每一項主要特性的基本原理,對它們的最佳用途給出了建議,并對跨領域的問題(如錯誤處理、契約編程和并發性)進行了討論。此外,書中還通過大量的圖表,為使用D語言解決日常問題提供了快速參考。其細致入微的講解讓人幾乎覺得有些“?嗦”,但正是這些“?嗦”內容更能加深人們對D語言程序設計的理解,進而拓展到對一般意義上的編程語言程序設計的理解。 《D程序設計語言》不僅適合于D語言初學者,對于想學習編譯器實現的研究人員、想拓展學生的編程語言知識面的教師以及想深入了解編程語言設計的人,也能提供很好的幫助和指導。 |
目錄:第1章 進入D世界 1 1.1 數字與表達式 2 1.2 語句 4 1.3 函數基礎 5 1.4 數組與關聯數組 6 1.4.1 構建詞匯表 6 1.4.2 數組分割、泛型函數、單元測試 8 1.4.3 頻率統計、λ函數 9 1.5 基本數據結構 11 1.6 接口和類 15 1.7 值與引用 19 1.8 小結 20
第2章 基本類型、表達式 21 2.1 符號 22 2.2 字面量 23 2.2.1 布爾字面量 23 2.2.2 整數字面量 23 2.2.3 浮點數字面量 24 2.2.4 字符字面量 26 2.2.5 字符串字面量 26 2.2.6 數組與關聯數組字面量 29 2.2.7 函數字面量 30 2.3 操作符 31 2.3.1 左值和右值 31 2.3.2 隱式數值轉換 31 2.3.3 數值操作符的類型 34 2.3.4 基本表達式 34 2.3.5 后綴表達式 37 2.3.6 一元表達式 38 2.3.7 冪表達式 41 2.3.8 乘法表達式 41 2.3.9 加法表達式 41 2.3.10 移位表達式 41 2.3.11 in表達式 42 2.3.12 比較操作符 43 2.3.13 按位操作符 44 2.3.14 邏輯與 45 2.3.15 邏輯或 45 2.3.16 條件操作符 45 2.3.17 賦值表達式 46 2.3.18 逗號表達式 46 2.4 小結和快速參考 46
第3章 語句 49 3.1 表達式語句 49 3.2 復合語句 50 3.3 if語句 50 3.4 static if語句 51 3.5 switch語句 53 3.6 final switch語句 54 3.7 循環語句 55 3.7.1 while語句 55 3.7.2 do-while語句 55 3.7.3 for語句 55 3.7.4 foreach語句 56 3.7.5 數組foreach 57 3.7.6 continue語句和break語句 58 3.8 goto語句 59 3.9 with語句 60 3.10 return語句 61 3.11 throw語句和try語句 61 3.12 mixin語句 62 3.13 scope語句 63 3.14 synchronized語句 66 3.15 asm語句 67 3.16 小結和快速參考 67
第4章 數組、關聯數組和字符串 70 4.1 動態數組 70 4.1.1 長度 71 4.1.2 邊界檢查 72 4.1.3 分割 73 4.1.4 復制 73 4.1.5 相等性比較 74 4.1.6 拼接 75 4.1.7 數組表達式 75 4.1.8 收縮 76 4.1.9 擴張 77 4.1.10 對.length賦值 79 4.2 固定大小的數組 80 4.2.1 長度 81 4.2.2 邊界檢查 81 4.2.3 分割 81 4.2.4 復制和隱式轉換 82 4.2.5 相等性比較 82 4.2.6 拼接 83 4.2.7 數組運算 83 4.3 多維數組 83 4.4 關聯數組 85 4.4.1 長度 85 4.4.2 讀寫槽 86 4.4.3 復制 86 4.4.4 相等性比較 86 4.4.5 移除元素 87 4.4.6 迭代 87 4.4.7 將自定義類型作為鍵 88 4.5 字符串 88 4.5.1 代碼點 88 4.5.2 編碼 89 4.5.3 字符類型 90 4.5.4 字符數組 + 優勢 = 字符串 91 4.6 數組的遠房表親:指針 93 4.7 小結和快速參考 95
第5章 數據與函數、函數式 98 5.1 編寫一個簡單函數并進行單元測試 98 5.2 傳遞約定和存儲類別 100 5.2.1 ref參數與返回 101 5.2.2 in參數 102 5.2.3 out參數 102 5.2.4 static數據 103 5.3 類型參數 103 5.4 簽名約束 105 5.5 重載 106 5.5.1 偏序函數 108 5.5.2 跨模塊重載 110 5.6 高階函數、函數字面量 111 5.7 嵌套函數 113 5.8 閉包 114 5.9 超越數組、范圍、偽成員 116 5.9.1 偽成員和@property屬性 117 5.9.2 reduce——不只是證法 119 5.10 可變參數函數 120 5.10.1 同構可變參數函數 120 5.10.2 異構可變參數函數 121 5.11 函數屬性 124 5.11.1 純函數 124 5.11.2 函數屬性nothrow 127 5.12 編譯時計算 127
第6章 類、面向對象風格 132 6.1 類 132 6.2 對象名就是引用 133 6.3 對象的生命周期 136 6.3.1 構造函數 137 6.3.2 轉發構造函數 138 6.3.3 構造步驟 139 6.3.4 析構與解除分配 140 6.3.5 拆毀步驟 141 6.3.6 靜態的構造函數與析構函數 142 6.4 方法和繼承 143 6.4.1 術語大雜燴 144 6.4.2 繼承就是子類型化,靜態類型和動態類型 145 6.4.3 改寫只能是自愿的 146 6.4.4 調用被改寫的方法 147 6.4.5 協變返回類型 148 6.5 靜態成員的類級封裝 149 6.6 使用final方法來限制擴展性 149 6.7 封裝 151 6.7.1 private 152 6.7.2 package 152 6.7.3 protected 152 6.7.4 public 152 6.7.5 export 153 6.7.6 封裝到什么程度 153 6.8 一統天下的根類 155 6.8.1 string toString() 156 6.8.2 size_t toHash() 156 6.8.3 bool opEquals(Object rhs) 156 6.8.4 int opC mp(Object rhs) 159 6.8.5 static Object factory(string className) 160 6.9 接口 161 6.9.1 非虛接口(NVI)慣用法 162 6.9.2 protected原語 164 6.9.3 選擇性實現 165 6.10 抽象類 166 6.11 嵌套類 168 6.11.1 函數嵌套類 170 6.11.2 靜態嵌套類 171 6.11.3 匿名類 172 6.12 多重繼承 172 6.13 多重子類型化 175 6.14 參數化的類和接口 177 6.15 小結 180
第7章 其他自定義類型 181 7.1 結構 182 7.1.1 復制語義 183 7.1.2 將結構對象傳遞給函數 184 7.1.3 結構對象的生命周期 184 7.1.4 靜態構造函數和析構函數 192 7.1.5 方法 193 7.1.6 靜態成員 197 7.1.7 訪問指示符 197 7.1.8 嵌套結構和類 198 7.1.9 在函數內部嵌套結構 199 7.1.10 結構子類型化與@disable屬性 199 7.1.11 字段布局與對齊 202 7.2 聯合 204 7.3 枚舉值 206 7.3.1 枚舉類型 208 7.3.2 枚舉特性 208 7.4 別名 209 7.5 使用模板實現參數化作用域 211 7.6 使用mixin模板注入代碼 214 7.7 小結與參考 216
第8章 類型修飾符 217 8.1 immutable修飾符 218 8.2 immutable的書寫 220 8.3 immutable參數和方法 221 8.4 immutable構造函數 222 8.5 immutable相關的轉換 223 8.6 const修飾符 225 8.7 const與immutable進行交互 226 8.8 將修飾符從參數傳送至結果 226 8.9 小結 227
第9章 錯誤處理 229 9.1 拋出與捕捉 229 9.2 類型 230 9.3 finally子句 232 9.4 nothrow函數和Throwable的特殊本質 233 9.5 附屬異常 234 9.6 棧展開與異常安全代碼 235 9.7 未捕捉的異常 237
第10章 契約編程 238 10.1 契約 239 10.2 斷言 240 10.3 前置條件 241 10.4 后置條件 243 10.5 不變量 244 10.6 跳過契約檢查與發行版本 246 10.6.1 enforce不(完全)是assert 247 10.6.2 assert(false) 248 10.7 契約:請不要用于洗滌輸入 248 10.8 契約與繼承 250 10.8.1 繼承與in契約 250 10.8.2 繼承與out契約 252 10.8.3 繼承與invariant契約 253 10.9 接口里的契約 253
第11章 擴展性 255 11.1 包和模塊 255 11.1.1 import聲明 256 11.1.2 模塊搜索根目錄 257 11.1.3 名字查找 258 11.1.4 public import聲明 260 11.1.5 static import聲明 261 11.1.6 選擇性導入 262 11.1.7 在導入里重新命名 262 11.1.8 module聲明 264 11.1.9 模塊摘要 264 11.2 安全性 267 11.2.1 定義行為和未定義行為 267 11.2.2 @safe、@trusted和@system屬性 268 11.3 模塊的構造函數與析構函數 269 11.3.1 模塊內的執行順序 270 11.3.2 跨模塊的執行順序 270 11.4 文檔注釋 271 11.5 與C和C++進行交互 271 11.6 deprecated聲明 272 11.7 version聲明 272 11.8 debug聲明 273 11.9 D語言標準庫 273
第12章 操作符重載 275 12.1 重載操作符 276 12.2 重載一元操作符 276 12.2.1 使用mixin加強操作符定義 277 12.2.2 后增值與后減值 278 12.2.3 重載cast操作符 278 12.2.4 三元操作符重載測試和if測試 279 12.3 重載二元操作符 280 12.3.1 操作符重載的平方 281 12.3.2 交換律 281 12.4 重載比較操作符 282 12.5 重載賦值操作符 283 12.6 重載索引操作符 284 12.7 重載分割操作符 285 12.8 $操作符 286 12.9 重載foreach 286 12.9.1 帶有迭代原語的foreach 286 12.9.2 帶有內部迭代的foreach 287 12.10 在類里定義重載操作符 289 12.11 完全不一樣的重載:opDispatch 290 12.12 小結與快速參考 292
第13章 并發性 294 13.1 并發門 295 13.2 數據共享簡史 296 13.3 快瞧瞧,沒有(默認)共享 299 13.4 啟動線程 300 13.5 線程間的信息交換 302 13.6 receive的模式匹配 303 13.6.1 首次匹配 305 13.6.2 匹配所有消息 305 13.7 文件復制——稍有改變 305 13.8 線程終止 307 13.9 帶外通信 308 13.10 郵箱堵塞 309 13.11 shared類型修飾符 310 13.12 shared數據操作及其效果 312 13.13 使用synchronized類實現基于鎖的同步 313 13.14 synchronized類里的字段類型化 316 13.14.1 臨時保護==無脫離 317 13.14.2 局部保護==尾部共享 317 13.14.3 強制同質的互斥量 319 13.14.4 不可思議:shared可被強制轉換掉 320 13.15 死鎖與synchronized語句 320 13.16 使用shared類進行無鎖編碼 321 13.16.1 shared類 322 13.16.2 幾種無鎖結構 323 13.17 小結 325
參考文獻 327 |
序: |
|