代碼之髓

代碼之髓

《代碼之髓》是一部由[日] 西尾泰和 所著書籍,人民郵電出版社出版發行。

基本介紹

出版信息,內容簡介,作者簡介,目錄,叢書信息,

出版信息

作者:[日] 西尾泰和
出版社:人民郵電出版社
副標題:程式語言核心概念
原作名:コーディングを支える技術 ~成り立ちから學ぶプログラミング作法
譯者:曾一鳴
出版年:2014-8
頁數:236
定價:45.00元
裝幀:平裝
叢書:圖靈程式設計叢書
ISBN:9787115361530

內容簡介

《代碼之髓:程式語言核心概念》作者從編程語言設計的角度出發,圍繞語言中共通或特有的核心概念,通過語言演變過程中的縱向比較和在多門語言中的橫向比較,清晰地呈現了程式設計語言中函式、類型、作用域、類、繼承等核心知識。本書旨在幫助讀者更好地理解各種概念是因何而起,並在此基礎上更好地判斷為何使用、何時使用及怎樣使用。同時,在閱讀本書後,讀者對今後不斷出現的新概念的理解能力也將得到提升。

作者簡介

西尾 泰和(Nishio Hirokazu),理學博士。2007年起在Cybozu實驗室從事提高知識生產力的軟體開發工作,著作有《Jython語言程式設計》《程式設計師應該了解的程式設計基礎知識》《WEB+DB PRESS》等。

目錄

第1章
如何深入高效地學習語言 1
1.1 在比較中學習 2
語言不同,規則不同 2
c語言和ruby語言中的真假值 3
java語言中的真假值 3
1.2 在歷史中學習 4
理解語言設計者的意圖 4
應該學哪種語言,我們無從所知 4
學習適用於各種語言的知識 5
1.3 小結 6
第2章
程式設計語言誕生史 7
2.1 程式設計語言誕生的歷史 8
連線電纜 8
程式內置 9
fortran語言問世 10
2.2 程式設計語言產生的原因 11
懶惰:程式設計師的三大美德之一 11
語言們各有各的便捷 12
2.3 小結 13
第3章
語法的誕生 15
3.1 什麼是語法 16
運算符的優先順序 16
語法是語言設計者制定的規則 17
3.2 棧機器和forth語言 17
計算的流程 18
如何表達計算順序 18
現在仍然使用的棧機器 19
3.3 語法樹和lisp語言 20
計算流 20
如何表達計算順序 20
現在仍然使用的語法樹 21
專欄  要確認理解是否正確,首先得表達出來 23
3.4 中綴表示法 24
語法分析器 24
規則的競爭 25
專欄  當你不知道該學習什麼時 25
3.5 小結 26
第4章
程式的流程控制 27
4.1 結構化程式設計的誕生 28
4.2 if語句誕生以前 28
為什麼會有if語句 28
為什麼會有if...else語句 30
4.3 while語句——讓反覆執行的if語句更簡潔 33
使用while語句的表達方式 33
不使用while語句的表達方式 34
4.4 for語句——讓數值漸增的while語句更簡潔 35
使用for語句的表達方式 35
不使用for語句的表達方式 35
foreach——根據處理的對象來控制循環操作 36
4.5 小結 37
第5章
函式 39
5.1 函式的作用 40
便於理解——如同一個組織 40
便於再利用——如同零部件 41
程式中再利用的特徵 41
5.2 返回命令 42
函式的誕生 43
記錄跳轉目的地的專用記憶體 44
專欄  函式命名 45
棧 45
5.3 遞歸調用 47
嵌套結構體的高效處理 48
嵌套結構體的處理方法 48
5.4 小結 52
第6章
錯誤處理 53
6.1 程式也會出錯 54
6.2 如何傳達錯誤 55
通過返回值傳達出錯信息 55
出錯則跳轉 58
6.3 將可能出錯的代碼括起來的語句結構 61
john goodenough 的觀點 61
引入clu語言 62
引入c++語言 62
引入windows nt 3.1 63
6.4 出口只要一個 64
為什麼引入finally 64
成對操作的無遺漏執行 64
6.5 何時拋出異常 68
函式調用時參數不足的情況 68
數組越界的情況 69
出錯後就要立刻拋出異常 70
6.6 異常傳遞 71
異常傳遞的問題 71
java語言的檢查型異常  71
檢查型異常沒有得到普及的原因 73
專欄  具體的知識和抽象的知識 73
專欄  學習講求細嚼慢咽 74
6.7 小結 74
專欄  從需要的地方開始閱讀 75
第7章
名字和作用域 77
7.1 為什麼要取名 78
怎樣取名 79
名字衝突 80
如何避免衝突 80
7.2 作用域的演變 81
動態作用域 82
靜態作用域 84
7.3 靜態作用域是完美的嗎 88
專欄  其他語言中的作用域 88
嵌套函式的問題 89
外部作用域的再綁定問題 91
7.4 小結 93
第8章
類型 95
8.1 什麼是類型 96
8.2 數值的on和off的表達方式 97
數位的發明 97
七段數碼管顯示器 98
算盤 99
8.3 一個數位上需要幾盞燈泡 100
從十進制到二進制 100
八進制與十六進制 102
8.4 如何表達實數 103
定點數——小數點位置確定 103
浮點數——數值本身包含小數部分何處開始的信息 104
8.5 為什麼會出現類型 107
沒有類型帶來的麻煩 107
早期的fortran語言中的類型 108
告訴處理器變數的類型 108
隱性類型轉換 109
8.6 類型的各種展開 111
用戶定義型和面向對象 112
作為功能的類型 112
總稱型、泛型和模板 113
動態類型 116
類型推斷 118
8.7 小結 122
專欄  先掌握概要再閱讀細節 122
第9章
容器和字元串 125
9.1 容器種類多樣 126
9.2 為什麼存在不同種類的容器 127
數組與鍊表 127
鍊表的長處與短處 130
專欄  大o表示法——簡潔地表達計算時間和數據量之間的關係 131
語言的差異 132
9.3 字典、散列、關聯數組 132
散列表 133
樹 134
元素的讀取時間 136
沒有萬能的容器 138
9.4 什麼是字元 139
字元集和字元的編碼方式 139
計算機誕生以前的編碼 140
edsac的字元編碼 142
ascii時代和ebcdic時代 142
日語的編碼 144
shift_jis編碼對程式的破壞 145
魔術注釋符 147
unicode帶來了統一 148
9.5 什麼是字元串 150
帶有長度信息的pascal語言字元串和不帶這一信息的c語言字元串 150
1個字元為16比特的java語言字元串 153
python 3中引入的設計變更 153
ruby 1.9的挑戰 154
9.6 小結 155
第10章
並行處理 157
10.1 什麼是並行處理 158
10.2 細分後再執行 158
10.3 交替的兩種方法 159
協作式多任務模式——在合適的節點交替 159
搶占式多任務模式——一定時間後進行交替 160
10.4 如何避免競態條件 160
競態條件成立的三個條件 161
沒有共享——進程和actor模型 162
不修改——const、val、immutable 164
不介入 164
10.5 鎖的問題及對策 166
鎖的問題 166
藉助事務記憶體來解決 167
事務記憶體的歷史 168
事務記憶體成功嗎 169
10.6 小結 170
第11章
對象與類 171
11.1 什麼是面向對象 172
內涵因語言而異的面向對象 172
對象是現實世界的模型 174
什麼是類 175
11.2 歸集變數與函式建立模型的方法 175
11.3 方法1:模組、包 176
什麼是模組、包 176
用perl語言的包設計對象 177
光有模組不夠用 178
分開保存數據 179
向參數傳遞不同的散列 179
把初始化處理也放入包中 180
把散列和包綁定在一起 181
11.4 方法2:把函式也放入散列中 183
first class 183
把函式放入散列中 184
創建多個計數器 185
把共享的屬性放入原型中 186
這就是面向對象嗎 189
11.5 方法3:閉包 190
什麼是閉包 190
為什麼叫做閉包 191
11.6 方法4:類 191
霍爾構想的類 192
c++語言中的類 192
功能說明的作用 193
類的三大作用 193
11.7 小結 194
第12章
繼承與代碼再利用 195
12.1 什麼是繼承 196
繼承的不同實現策略 197
繼承是把雙刃劍 199
里氏置換原則 199
12.2 多重繼承 201
一種事物在多個分類中 201
多重繼承對於實現方式再利用非常便利 202
12.3 多重繼承的問題——還是有衝突 203
解決方法1:禁止多重繼承 205
解決方法2:按順序進行搜尋 207
解決方法3:混入式處理 211
解決方法4:trait 213
12.4 小結 216
專欄  從頭開始逐章手抄 217

叢書信息

圖靈程式設計叢書 (共116冊), 這套叢書還有 《Spark高級數據分析》,《Python科學計算基礎教程》,《GitHub入門與實踐》,《大數據》,《TensorFlow深度學習》 等。

相關詞條

熱門詞條

聯絡我們