◆学习编程并不仅仅是学习编程语言的细节:要想成为一名优秀的程序员,就必须成为调试代码、测试代码、编写清晰代码的专家,并且能解决遇到的任何疑难问题。同样,要想在编程课程中获得好成绩,就必须学会如何在作业和考试中取得高分。
◆本书通过丰富的小提示、故事和关键术语的解释,清晰地传授各种编程技巧。书中包含Python、Java和Haskell的示例,无论你正在学习哪一种编程语言,都能帮助你获得可移植的编程技能。
◆本书主要面向学习编程课程的学生以及编程初学者和希望提升编程技艺的程序员,能帮助你在课程中取得好成绩,并有助于养成良好的软件工程习惯,从而开发出易读且高效的好程序。
◆本书通过丰富的小提示、故事和关键术语的解释,清晰地传授各种编程技巧。书中包含Python、Java和Haskell的示例,无论你正在学习哪一种编程语言,都能帮助你获得可移植的编程技能。
◆首先介绍什么是好程序,然后讨论如何理解编程语言和使用最佳工具,以及如何确保程序不会丢失。接下来介绍如何让程序清晰,如何测试、调试和优化程序,以及如何获得帮助。最后介绍如何在课程作业和编程考试中取得好成绩,以及如何选择编程语言。
◆第1章 介绍 1
1.1 本书适合谁 3
1.2 关于方框 4
1.3 本书的结构 6
1.4 致谢 6
◆第2章 什么是好程序 8
◆第3章 如何开始 11
3.1 究竟什么是程序 11
3.2 你需要什么 12
3.2.1 使用交互式提示 13
3.2.2 使用文本编辑器 14
3.3 了解待办任务 16
3.4 编写程序 18
3.4.1 设置任务 19
3.4.2 朝着完全正确的代码迈进 24
3.5 感到困惑时怎么办 25
◆第4章 如何理解编程语言 29
4.1 编译与解释 30
4.2 类型 33
4.3 结构 36
4.4 历史、社区与动机 38
4.5 范式 39
◆第5章 如何使用最佳工具 42
5.1 使用最基本的工具 43
5.2 什么是IDE 44
5.3 展望 47
◆第6章 如何确保程序不会丢失 48
6.1 立即恢复:撤销 49
6.2 基本灾难恢复:文件 49
6.3 避免灾难:保存版本 51
6.4 流程自动化:使用版本控制系统 52
6.5 管理未使用的代码 54
6.6 备份和云 56
◆第7章 如何测试程序 59
7.1 手动测试 60
7.2 基本的自动化测试 62
7.3 正确的自动化测试 65
7.4 你应该进行哪些测试 66
7.5 应该在何时编写测试 68
7.6 基于属性的测试 69
◆第8章 如何让程序清晰 72
8.1 编写清晰的代码对你有何帮助 72
8.2 注释 74
8.3 名字 77
8.4 布局和留白 80
8.5 结构和习惯用法 83
◆第9章 如何调试程序 87
9.1 当程序还无法运行时 89
9.2 当程序执行错误时 94
9.3 纸板调试法 103
9.4 如果这些都失败了 103
9.5 修复bug 104
9.6 修复bug后 106
9.6.1 查找类似的bug 106
9.6.2 避免重复出现相同的bug 108
9.6.3 防御式编程 112
◆第10章 如何优化程序 114
10.1 可维护性 115
10.1.1 消除重复 116
10.1.2 选择抽象 120
10.2 效率 122
10.3 重构 126
10.4 提升技能 129
◆第11章 如何获得帮助 132
11.1 解决一般问题 133
11.2 解决具体问题 135
11.2.1 从错误信息中获得帮助 136
11.2.2 查找说明和有用的代码 137
11.2.3 解决复杂的程序问题 138
11.2.4 寻求帮助 140
11.2.5 入门帮助 141
11.3 当老师让你困惑时怎么办 142
◆第12章 如何在课程作业中取得好成绩 144
12.1 七条黄金法则 144
12.2 上机实验 146
12.3 课程设计 147
12.4 团队合作 148
12.5 演示 149
12.6 反思写作 150
◆第13章 如何在编程考试中取得好成绩 152
13.1 准备考试 153
13.1.1 了解考核内容 153
13.1.2 用以前的试卷练手 154
13.1.3 考试规划 155
13.2 考试中 155
13.3 书面考试的具体要点 156
13.4 上机考试的具体要点 156
13.5 选择题考试 157
◆第14章 如何选择编程语言 159
14.1 需要考虑的问题 159
14.2 你可能遇到的几种语言 162
14.3 语言环境的变化 164
◆第15章 如何超越本书 166
15.1 编写更多程序 166
15.2 特定的编程语言 167
15.3 一般编程 167
15.4 软件工程 168
15.5 编程语言理论 170
◆不管是初学者,还是在键盘和屏幕前积累了不少开发经验的在职程序员,养成良好的编程习惯都是事半功倍的关键。测试、调试、优化,让程序清晰而简洁,这些基本功恰好是一个程序员通向职业成功道路的铺路石。可以说,这是一本值得刚上手编程的学生一读的好书。此外,对于有经验的程序员,这本书也打开了一扇用不同视角审视编程艺术的窗口。
——沈刚,华中科技大学软件学院教授
◆程序员不仅要学会编写程序,还要学会测试和调试程序。为了编写大型程序,跟更多的程序员合作,他们要学会写整洁的代码,学会重构,让代码具有自解释性和可维护性。这让程序员更像是一个手艺人。
◆除了方便自己,你的程序如何帮助更多的人呢?尤其是那些弱势群体,如何让他们生活得更好?如何让你的程序符合道德伦理,拒绝侵犯隐私,最后造福整个社会?
我想这才是好程序。
——张凯峰,InfoQ社区编辑
◆本书由浅入深地向读者讲述了写出好程序的思维与方法,并记录了作者丰富的编程思考与经验。无论是刚开始学习编程的“学员”,还是初入职场的编程“新人”,或者是具有一定编程经验的“老兵”,都可以从这本书中汲取到养分,收获良多。同时,这本书中的所思所得对于从事教学与培训行业的讲师与课程设计师而言,也有非常高的学习、借鉴与参考价值。
——宋俊毅,牛鹭学院联合创始人
◆这本书清晰流畅、行云流水,言语之间无一不阐述着那些通用的编程技艺。阅读本书,将从了解编辑器、IDE、版本控制、单元测试、测试程序、调试、重构、防御式编程、优化入手,磨炼基本功,进而培养良好的编程习惯,形成专业的风格和极致的治学态度,并在追求卓越的过程中积累习惯,将其变成编程道路甚至人生道路上的一种修养。
——张喻,腾讯科技研发工程师
◆本书提供了大量特别适用于编程初学者的优秀建议。本书内容与编程语言无关,结构合理,讲授方式通俗易懂。建议不妨用亲切的大号字体在本书封面写上“不用惊慌失措”。
——Jeremy Gibbons,牛津大学教授
◆这是一本非常独特的书,阅读时感觉就像手捧一杯咖啡、听一位经验丰富的计算机编程专家娓娓道来。书中大量实用的小提示、见解和行业故事,对任何想要学习编程的人都大有裨益。
——Tom Ward,利兹大学教授
◆真心希望在我上大学期间和职业生涯之初就有这样一本书!它抛开具体的编程语言来解释基本的概念,并且包含了许多实用的评论和提示,可以帮助新手程序员解决容易出现的难题。
——Jennifer Tenzer,一家全球资产管理公司的
高级开发人员