程序设计实践

[美] BRIAN W.KERNIG

出版时间

2006-12-31

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》等。

AI导读
核心看点
  • 涵盖风格、算法、设计等编程全维度
  • 强调代码清晰、简单与一致性的原则
  • 通过大量实例解析底层机制与陷阱
适合谁读
  • 计算机专业学生及初级开发者
  • 追求代码质量与工程规范的程序员
  • 希望提升底层理解力的软件工程师
读前提醒
  • 注意部分术语译名与现行习惯不同
  • 部分语言细节示例可能略显陈旧
  • 建议结合现代语言特性批判性阅读
读者共识
  • 经典之作,核心思想至今不过时
  • 纯工程派,注重实践而非纯理论
  • 适合有一定基础者深化编程认知

本导读基于书籍简介、目录、原文摘录、短评和书评生成,不等同于全文精读。

精彩摘录
  • "全局变量、全局函数、类和结构体都应该有说明性的名字,以表明它们在程序里扮演的角色。 相反,对局部变量使用短名字就够了。按常规方式使用的局部联邦可以采用极短的名字,比如i、j作为循环变量;p、q作为指针;s、t表示指针等。 函数应该采用动作性的名字。函数名应当用动作性的动词,后面可以跟着名词: now = date.getTime(); putchar('\n');"
  • "对返回布尔类型值(或真/假)的函数命名时,应该清楚地反映其返回值情况。比如下面的命名就不是很好了: if (checkoctal(c)) ... 因为这里函数名字就没有指明什么时候返回真,什么时候返回假。而下面这种写法就挺好: if (isoctal(c)) ... 这样就把返回真假的情况指明了。"
  • "一个变量的作用域越大,它的名字所携带的信息就应该越多。 全局变量使用具有说明性的名字,局部变量用短名字。根据定义,全局变量可以出现在整个程序中的任何地方,因此它们的名字应该足够长,具有足够的说明性,以便使读者能够记得它们是干什么用的。"
  • "释放资源与分配资源应该在同一个层次进行。 这种处理原则的另一种说法是:资源的分配状态在跨过界面时不应该改变。"
  • "当系统内部提供的代码太多时,人们将无法知道程序在其表面下到底做了什么。我们应该如何评价这种对控制和洞察力的丧失,这是更不清楚的事情。这也就是STL版本中遇到的情况,它的性能无法预料,也没有很容易的办法去解决问题。 目前存在着一种对软件的广泛的不断增长的关注:当程序库、界面和工具变得越来越复杂时,它们也变得更难以理解和控制了。当所有东西都正常运转时,功能丰富的程序设计环境可以是非常有生产效率的,但是如果它们出了毛病,那就没什么东西可以依靠了。如果问题牵涉到的是性能或者某些难于捉摸的逻辑错误时,我们很可能根本没有意识到有什么东西出了毛病。"
  • "scanf的所有参数都在函数被真正调用前已经求好值了,所以&profit[yr]实际使用的总是yr原来的值 (PS:scanf("%d %d", &yr, &profit[yr]);)"
  • "含有否定运算的条件表达式比较难理解。"
  • "如果你工作在一个不是自己写的程序上,请注意保留程序原有的风格。当你需要做修改时,不要使用你自己的风格,即使你特别喜欢它。程序的一致性比你本人的习惯更重要,因为这将使随你之后的其他人生活得更容易些。"
作者简介
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,翻译方面,一些名词由于译者没有采用约定俗成的译法导致理解不太顺畅,特别是“界面”一词。 2,时效性,特别涉及语言细节的内容。
总而言之,只有熟悉了这个领域的工具和技术才能对特殊的问题提供正确解答, 只有丰富的经验才能提供坚实的专业性结果:自动化,简单,清晰,通用才是计算机程序的本质。c++,Java都是C的直系衍生语言。更复杂的算法和数据结构都是几个基本的结构衍生的。学习低级语言的意义在于理解细节的机会增加了,而高级语言的正确使用是建立在更多细节或者更多底层语言的熟悉上的。隐藏在设计模式后面的基本思想是:大部分程序所采用的不过是很少几种不同的设计结 构,与此类似,实际上也只有不多的几种基本数据结构。说的远一点,这与我们在第1章讨论过的编码习惯用法也是很相像的
如果看这本书时,脑子里想的是“这不是废话么?当然得这样”,那也就达到本书作者的期望了。
收藏