作者:
[美] BRIAN W.KERNIG
出版社: 机械工业出版社
译者: 裘宗燕
出版年: 2007-1
页数: 470
定价: 59.00元
装帧: 简裝本
ISBN: 9787111211273
出版社: 机械工业出版社
译者: 裘宗燕
出版年: 2007-1
页数: 470
定价: 59.00元
装帧: 简裝本
ISBN: 9787111211273
内容简介 · · · · · ·
从排错、测试、性能、可移植性、设计、界面、风格和记法等方面,讨论了程序设计中实际的、又是非常深刻和具有广泛意义的思想、技术和方法,它的翻译出版将填补国内目前这方面书籍的空白。《程序设计实践》(双语版)值得每个梦想并努力使自己成为优秀程序员的人参考,值得每个计算机专业的学生和计算机工作者阅读,也可作为程序设计高级课程的教材或参考书。
程序设计实践的创作者
· · · · · ·
作者简介 · · · · · ·
Brian W.Kernighan,贝尔实验室计算科学研究中心高级研究人员,著名的计算机科学家。他参加了UNIX系统、C语言、AWK语言和许多其他系统的开发,同时出版了许多在计算机领域具有影响的著作,包括《The Elements of Programming Style》、《The Practice of Programming》、《The UNIX Programming Environment》、《The AWK Language》、《Software Tools》等。
目录 · · · · · ·
译者序
Preface/前言
Chapter 1:Style/风格
1.1 Names/名字
1.2 Expressio and Statements/表达式和语句
1.3 Coistency and Idioms/一致性和习惯用法
· · · · · · (更多)
Preface/前言
Chapter 1:Style/风格
1.1 Names/名字
1.2 Expressio and Statements/表达式和语句
1.3 Coistency and Idioms/一致性和习惯用法
· · · · · · (更多)
译者序
Preface/前言
Chapter 1:Style/风格
1.1 Names/名字
1.2 Expressio and Statements/表达式和语句
1.3 Coistency and Idioms/一致性和习惯用法
1.4 Function Macros/函数宏
1.5 Magic Numbe/神秘的数
1.6 Comments/注释
1.7 Why Bother?/为何对此费心
Chapter 2:Algorithms and Data Structures/算法与数据结构
2.1 Searching/检索
2.2 Sorting/排序
2.3 Libraries/库
2.4 A Java Quicksort/一个Java快速排序
2.5 O-Notation/大O记法
2.6 Growing Arrays/可增长数组
2.7 Lists/表
2.8 Trees/树
2.9 Hash Tables/散列表
2.10 Summary/小结
Chapter 3:Design and Implementation/设计与实现
3.1 The Markov Chain Algorithm/马尔可夫链算法
3.2 Data Structure Alternatives/数据结构的选择
3.3 Building the Data Structure in C/在C中构造数据结构
3.4 Generating Output/生成输出
3.5 Java/Java
3.6 C++/C++
3.7 Awk and Perl/Awk and Perl
3.8 Performance/性能
3.9 Lesso/经验教训
Chapter 4:Interfaces/界面
4.1 Comma-Separated Values/逗号分隔的值
4.2 A Prototype Library/一个原型库
4.3 A Library for Othe/为别人用的库
4.4 A C++Implementation/c++实现
4.5 Interface Principles/界面原则
4.6 Resource Management/资源管理
4.7 Abort,Retry,Fail?/终止、重试或失败
4.8 User Interfaces/用户界面
Chapter 5:Debugging/排错
5.1 Debugge/排错系统
5.2 Good Clues,Easy Bugs/好线索,简单错误
5.3 No Clues,Hard Bugs/无线索,难办的错误
5.4 Last Resorts/最后的手段
5.5 Non-reproducible Bugs/不可重现的错误
5.6 Debugging Tools/排错工具
5.7 Other People's Bugs/其他人的程序错误
5.8 Summary/小结
Chapter 6:Testing/测试
6.1 Test as You Write the Code/在编码过程中测试
6.2 Systematic Testing/系统化测试
6.3 Test Automation/测试自动化
6.4 Test Scaffolds/测试台
6.5 Stress Tests/应力测试
6.6 Tips for Testing/测试秘诀
6.7 Who Does the Testing?/谁来测试
6.8 Testing the Markov Program/测试马尔可夫程序
6.9 Summary/小结
Chapter 7:Performance/性能
7.1 A Bottleneck/瓶颈
7.2 Timing and Profiling/计时和轮廓
7.3 Strategies for Speed/加速策略
7.4 Tuning the Code/代码调整
7.5 Space Efficiency/空间效率
7.6 Estimation/估计
7.7 Summary小结
Chapter 8:Portability/可移植性
8.1 Language/语言
8.2 Heade and Libraries/头文件和库
8.3 Program Organization/程序组织
8.4 Isolation/隔离
8.5 Data Exchange/数据交换
8.6 Byte Order/字节序
8.7 Portability and Upgrade/可移植性和升级
8.8 Internationalization/国际化
8.9 Summary/小结
Chapter 9:Notation/记法
9.1 Formatting Data/数据格式
9.2 Regular Expressio/正则表达式
9.3 Programmable Tools/可编程工具
9.4 Interprete,Compile.and Virtual Machines
/解释器、编译器和虚拟机
9.5 Programs that Write Programs/写程序的程序
9.6 Using Macros to Generate Code/用宏生成代码
9.7 Compiling on the Fly/运行中编译
Epilogue/后记
Appendix:Collected Rules/附录:规则汇编
· · · · · · (收起)
Preface/前言
Chapter 1:Style/风格
1.1 Names/名字
1.2 Expressio and Statements/表达式和语句
1.3 Coistency and Idioms/一致性和习惯用法
1.4 Function Macros/函数宏
1.5 Magic Numbe/神秘的数
1.6 Comments/注释
1.7 Why Bother?/为何对此费心
Chapter 2:Algorithms and Data Structures/算法与数据结构
2.1 Searching/检索
2.2 Sorting/排序
2.3 Libraries/库
2.4 A Java Quicksort/一个Java快速排序
2.5 O-Notation/大O记法
2.6 Growing Arrays/可增长数组
2.7 Lists/表
2.8 Trees/树
2.9 Hash Tables/散列表
2.10 Summary/小结
Chapter 3:Design and Implementation/设计与实现
3.1 The Markov Chain Algorithm/马尔可夫链算法
3.2 Data Structure Alternatives/数据结构的选择
3.3 Building the Data Structure in C/在C中构造数据结构
3.4 Generating Output/生成输出
3.5 Java/Java
3.6 C++/C++
3.7 Awk and Perl/Awk and Perl
3.8 Performance/性能
3.9 Lesso/经验教训
Chapter 4:Interfaces/界面
4.1 Comma-Separated Values/逗号分隔的值
4.2 A Prototype Library/一个原型库
4.3 A Library for Othe/为别人用的库
4.4 A C++Implementation/c++实现
4.5 Interface Principles/界面原则
4.6 Resource Management/资源管理
4.7 Abort,Retry,Fail?/终止、重试或失败
4.8 User Interfaces/用户界面
Chapter 5:Debugging/排错
5.1 Debugge/排错系统
5.2 Good Clues,Easy Bugs/好线索,简单错误
5.3 No Clues,Hard Bugs/无线索,难办的错误
5.4 Last Resorts/最后的手段
5.5 Non-reproducible Bugs/不可重现的错误
5.6 Debugging Tools/排错工具
5.7 Other People's Bugs/其他人的程序错误
5.8 Summary/小结
Chapter 6:Testing/测试
6.1 Test as You Write the Code/在编码过程中测试
6.2 Systematic Testing/系统化测试
6.3 Test Automation/测试自动化
6.4 Test Scaffolds/测试台
6.5 Stress Tests/应力测试
6.6 Tips for Testing/测试秘诀
6.7 Who Does the Testing?/谁来测试
6.8 Testing the Markov Program/测试马尔可夫程序
6.9 Summary/小结
Chapter 7:Performance/性能
7.1 A Bottleneck/瓶颈
7.2 Timing and Profiling/计时和轮廓
7.3 Strategies for Speed/加速策略
7.4 Tuning the Code/代码调整
7.5 Space Efficiency/空间效率
7.6 Estimation/估计
7.7 Summary小结
Chapter 8:Portability/可移植性
8.1 Language/语言
8.2 Heade and Libraries/头文件和库
8.3 Program Organization/程序组织
8.4 Isolation/隔离
8.5 Data Exchange/数据交换
8.6 Byte Order/字节序
8.7 Portability and Upgrade/可移植性和升级
8.8 Internationalization/国际化
8.9 Summary/小结
Chapter 9:Notation/记法
9.1 Formatting Data/数据格式
9.2 Regular Expressio/正则表达式
9.3 Programmable Tools/可编程工具
9.4 Interprete,Compile.and Virtual Machines
/解释器、编译器和虚拟机
9.5 Programs that Write Programs/写程序的程序
9.6 Using Macros to Generate Code/用宏生成代码
9.7 Compiling on the Fly/运行中编译
Epilogue/后记
Appendix:Collected Rules/附录:规则汇编
· · · · · · (收起)
原文摘录 · · · · · · ( 全部 )
-
全局变量、全局函数、类和结构体都应该有说明性的名字,以表明它们在程序里扮演的角色。 相反,对局部变量使用短名字就够了。按常规方式使用的局部联邦可以采用极短的名字,比如i、j作为循环变量;p、q作为指针;s、t表示指针等。 函数应该采用动作性的名字。函数名应当用动作性的动词,后面可以跟着名词: now = date.getTime(); putchar('\n'); (查看原文) —— 引自第2页 -
对返回布尔类型值(或真/假)的函数命名时,应该清楚地反映其返回值情况。比如下面的命名就不是很好了: if (checkoctal(c)) ... 因为这里函数名字就没有指明什么时候返回真,什么时候返回假。而下面这种写法就挺好: if (isoctal(c)) ... 这样就把返回真假的情况指明了。 (查看原文) —— 引自第2页
> 全部原文摘录
喜欢读"程序设计实践"的人也喜欢的电子书 · · · · · ·
支持 Web、iPhone、iPad、Android 阅读器
喜欢读"程序设计实践"的人也喜欢 · · · · · ·
程序设计实践的书评 · · · · · · ( 全部 22 条 )
![](https://img1.doubanio.com/icon/user_normal.jpg)
![](https://img3.doubanio.com/icon/u48090372-3.jpg)
发现上当了,不如买英文原版的
英语不好,第一次买英文书,没信心,正好发现这个评注版,欣然买之。然后发现所谓的评注不是针对难点的解释,大都是没用的,该解释的作者都已解释清楚了,而这本书又是写思想的不是技术,没有什么难点,评注看的反而碍眼,影响书原汁原味的感觉,这本书40多块329页,而原版的才...
(展开)
![](https://img9.doubanio.com/icon/u19191439-4.jpg)
不少程序员会放弃的书
足足看了一整天才翻到了最后的后记。 昨天告诉朋友在读此书,朋友看了目录说这个大而全,感觉不到有东西在里面。 说说自己的感受吧。 风格部分最简单,类似于代码大全中的一些。 算法,数据结构很简略,把树拿出来大概能吓跑一堆没经过学习的程序员。 马可夫链很好,立马去翻编...
(展开)
![](https://img2.doubanio.com/icon/u1380183-1.jpg)
![](https://img3.doubanio.com/icon/u50931505-7.jpg)
> 更多书评 22篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部7 )
-
机械工业出版社 (2000)9.1分 608人读过
-
Addison-Wesley (1999)9.3分 180人读过
-
机械工业出版社 (2005)9.3分 136人读过
-
电子工业出版社 (2011)8.3分 58人读过
在哪儿借这本书 · · · · · ·
以下书单推荐 · · · · · · ( 全部 )
- 各学科领域入门书籍推荐 (磐丘)
- 止读经典(计算机科学) (pattern)
- IT十年经典书籍 (wilde)
- 数学计算机专业书籍 (万籁君)
- 交互设计师养成书单 (LimboMinaïss)
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于程序设计实践的评论:
feed: rss 2.0
0 有用 chameleo 2015-02-09 20:29:59
书上的内容很合理,而且对于写程序很有帮助,但是现实中会有各种条件的限制使得我们无法完全按照书中的要求做。有些名词的翻译和现在的说法不同,如“interface”被翻译成了“界面”。总的来说,和编程珠玑差不多。
0 有用 SavEn 2011-02-14 13:14:11
星星的书,去年过年就拿来了,马上今年又要过年了还没看过。。 汗自己下
0 有用 Euclidvi31 2009-04-07 17:36:35
找机会还要再看一遍。
1 有用 灵茶山艾府 2014-10-26 19:41:10
我为什么不去看代码大全呢?
0 有用 iCoolSea 2017-05-09 17:48:19
程序设计方方面面,时隔多年,绝大多数东西没有过时,特别适合入行一两年经验的人(当然对于多年的也有收获)。 不足: 1,翻译方面,一些名词由于译者没有采用约定俗成的译法导致理解不太顺畅,特别是“界面”一词。 2,时效性,特别涉及语言细节的内容。
0 有用 Hugo_K 2022-11-20 21:51:06 上海
这本书图书馆有的,毕业前要借来好好读读
0 有用 王悟空 2020-03-06 09:53:12
可能是自己写码太少,总感觉后几章有一些过时了,第三章值得多读几遍
0 有用 iCoolSea 2017-05-09 17:48:19
程序设计方方面面,时隔多年,绝大多数东西没有过时,特别适合入行一两年经验的人(当然对于多年的也有收获)。 不足: 1,翻译方面,一些名词由于译者没有采用约定俗成的译法导致理解不太顺畅,特别是“界面”一词。 2,时效性,特别涉及语言细节的内容。
6 有用 阅微草堂 2016-11-04 00:42:30
总而言之,只有熟悉了这个领域的工具和技术才能对特殊的问题提供正确解答, 只有丰富的经验才能提供坚实的专业性结果:自动化,简单,清晰,通用才是计算机程序的本质。c++,Java都是C的直系衍生语言。更复杂的算法和数据结构都是几个基本的结构衍生的。学习低级语言的意义在于理解细节的机会增加了,而高级语言的正确使用是建立在更多细节或者更多底层语言的熟悉上的。隐藏在设计模式后面的基本思想是:大部分程序所采用... 总而言之,只有熟悉了这个领域的工具和技术才能对特殊的问题提供正确解答, 只有丰富的经验才能提供坚实的专业性结果:自动化,简单,清晰,通用才是计算机程序的本质。c++,Java都是C的直系衍生语言。更复杂的算法和数据结构都是几个基本的结构衍生的。学习低级语言的意义在于理解细节的机会增加了,而高级语言的正确使用是建立在更多细节或者更多底层语言的熟悉上的。隐藏在设计模式后面的基本思想是:大部分程序所采用的不过是很少几种不同的设计结 构,与此类似,实际上也只有不多的几种基本数据结构。说的远一点,这与我们在第1章讨论过的编码习惯用法也是很相像的 (展开)
0 有用 逐风刀客 2016-09-28 21:23:49
如果看这本书时,脑子里想的是“这不是废话么?当然得这样”,那也就达到本书作者的期望了。