《程式設計師超強大腦》是2023年人民郵電出版社出版的圖書,作者是[荷] 費莉安·赫爾曼斯(Felienne Hermans)。
基本介紹
- 中文名:程式設計師超強大腦
- 作者:[荷] 費莉安·赫爾曼斯(Felienne Hermans)
- 出版時間:2023年4月
- 出版社:人民郵電出版社
- ISBN:9787115614162
- 開本:16 開
- 裝幀:平裝
內容簡介,作者簡介,圖書目錄,
內容簡介
為什麼你在寫代碼時總會遇到這樣或那樣的問題?為什麼你總是記錯某些語法?為什麼有些人能夠快速學會新的程式語言,而有些人則不能?在試圖解決困難或複雜的問題時,我們的大腦其實有一套特定的工作方式。本書從認知科學角度剖析優秀程式設計背後的腦科學原理,為你揭開大腦思考編程的奧秘。本書分為四大部分,共有13章。你將了解如下內容:如何高效地學習新的程式語言,如何快速地理解複雜的代碼,如何牢固地記住各種語法,如何在繁雜的程式設計工作中最佳化認知資源。
本書是程式設計師的普適書,初學編程的初高中生也可以閱讀。
作者簡介
【作者簡介】
費莉安.赫爾曼斯(Felienne Hermans),荷蘭萊頓大學副教授,致力於研究人類如何利用認知科學快速、有效地學習程式設計語言。費莉安對ChatGPT給軟體工程領域帶來的深遠影響有獨到見解,多次就這一話題接受媒體專訪。她是TC39(JavaScript標準委員會)成員,還自創了Hedy程式設計語言。
【譯者簡介】蔣楠
出身電子與計算機工程專業的高級技術產品經理,負責C端產品的規劃和設計,對算法和數據密集型套用同樣興趣濃厚。兼具科技圖書譯者、馬拉松跑者、航天愛好者等多重身份,譯作包括《計算機簡史(第三版)》《計算機科學精粹》等。
圖書目錄
第 一部分 代碼閱讀
第 1章 剖析程式設計之惑 2
1.1 代碼造成的各種困惑 2
1.1.1 第 一種困惑:缺乏知識 3
1.1.2 第二種困惑:缺乏信息 4
1.1.3 第三種困惑:缺乏加工能力 4
1.2 影響程式設計的不同認知過程 5
1.2.1 長時記憶和程式設計 5
1.2.2 短時記憶和程式設計 6
1.2.3 工作記憶和程式設計 7
1.3 認知過程之間的關係 8
1.3.1 簡要剖析認知過程如何相互作用 8
1.3.2 編程任務涉及的認知過程 9
1.4 小結 10
第 2章 快速閱讀代碼 12
2.1 快速閱讀代碼 13
2.1.1 大腦的活動情況 14
2.1.2 回顧默寫的代碼 15
2.1.3 回顧第二次默寫的代碼 16
2.1.4 閱讀不熟悉的代碼時為什麼會感到困難 16
2.2 彌補記憶容量不足的短板 17
2.2.1 組塊威力大 18
2.2.2 資深程式設計師比新手程式設計師更善於記憶代碼 21
2.3 看到的代碼比讀到的代碼多 22
2.3.1 圖像記憶 22
2.3.2 不是記憶的內容,而是記憶的方法 24
2.3.3 代碼分塊練習 30
2.4 小結 31
第3章 快速學習編程語法 32
3.1 語法記憶小貼士 32
3.2 如何利用抽認卡快速學習語法 34
3.2.1 使用抽認卡 34
3.2.2 擴充抽認卡 35
3.2.3 精簡抽認卡 35
3.3 如何避免遺忘 36
3.3.1 遺忘的原因何在 37
3.3.2 間隔重複 38
3.4 如何牢記編程語法 39
3.4.1 記憶信息的兩種機制 39
3.4.2 “眼見”還不夠 40
3.4.3 主動回憶能夠鞏固記憶 41
3.4.4 主動思考也能鞏固記憶 42
3.5 小結 44
第4章 閱讀複雜的代碼 45
4.1 為什麼複雜的代碼難以理解 45
4.1.1 工作記憶與短時記憶的區別 46
4.1.2 與程式設計相關的3種認知負荷 47
4.2 減輕認知負荷的方法 49
4.2.1 重構 50
4.2.2 替換不熟悉的語言結構 51
4.2.3 在抽認卡兩面寫上等價的代碼可以顯著增強學習效果 54
4.3 利用記憶輔助工具解決工作記憶過載的問題 54
4.3.1 繪製依賴圖 55
4.3.2 創建狀態表 57
4.3.3 結合使用依賴圖和狀態表 59
4.4 小結 61
第二部分 代碼思考
第5章 深入理解代碼 64
5.1 變數角色框架 65
5.1.1 變數不同,承擔的任務也不同 65
5.1.2 涵蓋大多數變數的11種角色 66
5.2 角色和範式 68
5.2.1 角色的優點 68
5.2.2 匈牙利命名法 70
5.3 加深對程式的了解 72
5.3.1 文本結構知識與計畫知識 72
5.3.2 程式理解的不同步驟 72
5.4 閱讀代碼和閱讀文本有相似之處 75
5.4.1 閱讀代碼時大腦的活動情況 76
5.4.2 能學會法語,就能學會Python 77
5.5 運用文本理解策略來閱讀代碼 80
5.5.1 激活先驗知識 81
5.5.2 監測 82
5.5.3 確定不同代碼行的重要性 83
5.5.4 推斷變數名的含義 84
5.5.5 視覺化 85
5.5.6 提問 86
5.5.7 摘要 86
5.6 小結 87
第6章 更好地解決編程問題 88
6.1 藉助模型來思考代碼 89
6.2 心智模型 91
6.2.1 詳細剖析心智模型 92
6.2.2 學習新的心智模型 93
6.2.3 如何運用心智模型提高代碼分析的效率 94
6.3 概念機器 98
6.3.1 概念機器的定義 99
6.3.2 概念機器的例子 99
6.3.3 概念機器適用的不同層面 100
6.4 概念機器和語言描述 101
6.4.1 概念機器可以擴展 102
6.4.2 不同的概念機器可能催生出相互矛盾的心智模型 103
6.5 概念機器和圖式 104
6.5.1 圖式的重要性 104
6.5.2 概念機器是否具有語義性 105
6.6 小結 105
第7章 迷思概念:錯誤的思維方式 106
7.1 為什麼學習第二門程式語言比學習第 一門程式語言更容易 107
7.1.1 充分挖掘現有編程知識的潛力 108
7.1.2 不同的遷移類型 109
7.1.3 已經掌握的知識:是福還是禍 110
7.1.4 遷移有難度 111
7.2 迷思概念:思維中存在的錯誤 113
7.2.1 通過概念轉變來消除迷思概念 114
7.2.2 抑制迷思概念 114
7.2.3 與程式語言有關的迷思概念 115
7.2.4 在學習新的程式語言時避免形成迷思概念 117
7.2.5 判斷代碼庫中存在的迷思概念 118
7.3 小結 118
第三部分 代碼編寫
第8章 提高命名的質量 120
8.1 命名為什麼重要 121
8.1.1 命名的重要性何在 121
8.1.2 與命名有關的不同觀點 122
8.1.3 最初的命名實踐影響深遠 124
8.2 從認知的角度剖析命名 125
8.2.1 規範的命名方式對短時記憶有利 126
8.2.2 含義明確的標識符對長時記憶有利 127
8.2.3 標識符可以包括不同類型的信息以幫助理解 127
8.2.4 評估標識符質量的時機 129
8.3 哪些類型的標識符更容易理解 129
8.3.1 是否應該使用縮寫 129
8.3.2 採用駝峰命名法還是蛇形命名法 133
8.4 標識符與代碼錯誤之間的關係 134
8.5 如何設計質量更高的標識符 135
8.5.1 名稱模具 135
8.5.2 運用Feitelson設計的三步模型來提高標識符質量 138
8.6 小結 139
第9章 避免低質量代碼和認知負荷:兩種框架 140
9.1 為什麼存在異味的代碼會加重認知負荷 140
9.1.1 代碼異味簡介 141
9.1.2 代碼異味對認知的負面影響 144
9.2 低質量標識符對認知負荷的影響 146
9.2.1 語言反模式 146
9.2.2 認知負荷的測量 147
9.2.3 語言反模式和認知負荷 151
9.2.4 語言反模式為什麼令人困惑 152
9.3 小結 152
第 10章 提高解決複雜問題的能力 153
10.1 問題解決的實質 153
10.1.1 問題解決的三大要素 153
10.1.2 狀態空間 154
10.2 長時記憶在解決編程問題時所起的作用 155
10.2.1 問題解決本身是否屬於認知過程 155
10.2.2 培養長時記憶來解決問題 157
10.2.3 解決問題時起作用的兩類記憶 157
10.3 自動化:構建內隱記憶 160
10.3.1 內隱記憶會隨著時間的推移而變化 161
10.3.2 為什麼自動化可以加快編程速度 163
10.3.3 強化內隱記憶 164
10.4 從代碼及其解釋中汲取經驗 165
10.4.1 第三種認知負荷:關聯認知負荷 166
10.4.2 在工作中運用樣例 168
10.5 小結 169
第四部分 代碼協作
第 11章 編程活動和任務 172
11.1 程式設計包括不同的編程活動 172
11.1.1 搜尋活動 173
11.1.2 理解活動 173
11.1.3 轉寫活動 174
11.1.4 遞增活動 174
11.1.5 探索活動 174
11.1.6 為什麼符號認知維度框架不包括調試活動 175
11.2 受到干擾的程式設計師 176
11.2.1 編程任務需要“預熱” 176
11.2.2 思路被打斷的後果 177
11.2.3 如何減輕干擾的影響 177
11.2.4 限制干擾出現的時機 180
11.2.5 關於多任務處理的一些思考 182
11.3 小結 183
第 12章 設計和改進大型系統 184
12.1 代碼庫的屬性 185
12.1.1 認知維度 185
12.1.2 利用代碼庫認知維度來改進代碼庫 193
12.1.3 設計策略及其權衡 194
12.2 認知維度和編程活動 196
12.2.1 認知維度對不同編程活動的影響 196
12.2.2 針對預期的編程活動最佳化代碼庫 197
12.3 小結 198
第 13章 對新程式設計師進行適崗培訓 199
13.1 適崗培訓中存在的問題 199
13.2 高級程式設計師與初級程式設計師的區別 200
13.2.1 深入分析初級程式設計師的表現 201
13.2.2 具體看待概念與抽象看待概念之間的區別 205
13.3 完善適崗培訓流程 207
13.3.1 貪多嚼不爛 207
13.3.2 改善受訓者的記憶 208
13.3.3 代碼共讀 210
13.4 小結 212
寫在最後 213