程序员超强大脑

程序员超强大脑
分享
扫描下方二维码分享到微信
打开微信,点击右上角”+“,
使用”扫一扫“即可将网页分享到朋友圈。
作者: [荷兰] (Felienne Hermans)
2023-04
版次: 1
ISBN: 9787115614162
定价: 89.80
装帧: 平装
页数: 214页
字数: 305千字
4人买过
  • 为什么你在写代码时总会遇到这样或那样的问题?为什么你总是记错某些语法?为什么有些人能够快速学会新的编程语言,而有些人则不能?在试图解决困难或复杂的问题时,我们的大脑其实有一套特定的工作方式。本书从认知科学角度剖析优秀程序设计背后的脑科学原理,为你揭开大脑思考编程的奥秘。本书分为四大部分,共有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
  • 内容简介:
    为什么你在写代码时总会遇到这样或那样的问题?为什么你总是记错某些语法?为什么有些人能够快速学会新的编程语言,而有些人则不能?在试图解决困难或复杂的问题时,我们的大脑其实有一套特定的工作方式。本书从认知科学角度剖析优秀程序设计背后的脑科学原理,为你揭开大脑思考编程的奥秘。本书分为四大部分,共有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
查看详情
相关图书 / 更多
程序员超强大脑
程序员考前突破:考点精讲、真题精解、难点精练
詹宏锋 李锋 许纪贤 编著
程序员超强大脑
程序员的README
[美]克里斯·里科米尼(Chris Riccomini) (美) 德米特里·里
程序员超强大脑
程序员的制胜技
[土耳其]塞达特·卡帕诺格鲁(Sedat Kapanoglu)
程序员超强大脑
程序设计基础(C语言)(第3版)
刘明军 袁宁 张玲 蒋彦 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员超强大脑
程序辩护精要
王学明
程序员超强大脑
程序设计基础(Python语言)(微课视频版)
陈守森;刘衍琦;邵燕;张言上;任爱华
程序员超强大脑
程序设计算法基础
于瑞国 主编;赵满坤 副主编;喻梅;李雪威
程序员超强大脑
程序员的算法趣题2
[日]增井敏克
程序员超强大脑
程序性能优化理论与方法
韩林;高伟
程序员超强大脑
程序设计基础实验和学习指导(C语言)(微课版)
苏小红 张羽 袁永峰 李东
程序员超强大脑
程序设计基础(C语言)习题集与实验指导(第3版)
蒋彦 袁宁 张玲 赵亚欧 编著;潘玉奇 主编;蔺永政
程序员超强大脑
程序设计基础(C语言)教程
刘媛媛;雷莉霞;胡平
您可能感兴趣 / 更多
程序员超强大脑
逃出瓶子的精灵:一部关于“我”的哲学史
[荷兰]戈尔·格罗特
程序员超强大脑
无条件投降博物馆
[荷兰]杜布拉夫卡·乌格雷西奇
程序员超强大脑
合规评估与测量 : 基于企业犯罪与不当行为的防范
[荷兰]本杰明·范·鲁伊 主编;范晓亮 译;[美]梅丽莎·罗里;朱庆
程序员超强大脑
《忠犬山姆》(2024年百班千人寒假书单 四年级推荐阅读)
[荷兰]菲利普·霍普曼 译者:林霄霄 绘者;著者:【荷】爱德华·范戴尔
程序员超强大脑
自有品牌革命
[荷兰]科恩·德·琼(Koen;A.M.;de;Jong;[荷兰]罗伯特·朗贝尔;[荷兰]洛·林普斯
程序员超强大脑
多谢不阅
[荷兰]杜布拉夫卡·乌格雷西奇 著;理想国 出品
程序员超强大脑
文明破晓时
[荷兰]范德莱乌 著;高师宁 宋立道 曹静 王六二 译;何光沪 校
程序员超强大脑
编码理论导论 第3版 香农信息科学经典
[荷兰]雅各布斯·亨德里克斯·范·林特(J.H. van Lint)
程序员超强大脑
小熊战士(99)(获美国巴切尔德奖的真实故事,让孩子更了解战争的本质;作者获荷兰青少年文学终身成就奖!)
[荷兰]彼彼·迪蒙·达克
程序员超强大脑
DevOps持续万物(DevOps组织能力成熟度评估)(数字化转型与创新管理丛书)
[荷兰]巴特·德·贝斯特(Bart de Best) 著
程序员超强大脑
雕版手绘珍鸟图鉴
[荷兰]比比·多姆·塔克
程序员超强大脑
共情时代
[荷兰]弗朗斯·德瓦尔