程序设计实践(评注版) 评注者序
评注者序
程序员的一生(武林大侠的人生貌似也是如此)往往都是在激情和 迷惘两种状态之间来回切换。当我们接触到一些新的东西(新的编程语 言、新的语法特性、新的协议工具,等等)时,就会急切地想去了解它、 掌握它,会坐在心爱的计算机前,废寝忘食、夜以继日地反复实践。可是 当我们的实践达到一定的程度时,往往又会陷入另外一种状态——觉得很 迷惘。一方面感觉自己学习的那点编程技巧已经足够,足以应付一些实际 的项目。但另一方面又会在实战过程中隐隐地感觉到有些问题存在:代码 写得总是有点丑陋、运行效率总是比想象中的要慢一些、和其他程序模块 交互起来总是存在着一些别扭、一些莫名其妙的错误总是会在一些不恰 当的时候出现,你无法自信地告诉用户你的程序真的很棒,如果将它从 Windows下移植到Linux下,你甚至不知道会有什么问题……你明明意识到 了这些问题,却苦于无法去改进,教科书中的每一句话早已烂熟于心,却 丝毫找不到问题的答案,和程序员前辈讨论的时候,也只会得到一些只言 片语,总不 能找到一套系统的修炼之道——针对这种情况,你要做的就是 寻找一些能针对实际问题对症下药的读本,而The Practice of Programming 就是这样的一本书。
The Practice of Programming 由Kernighan和Pike编著,成书于上个世纪
(1999年)。年代看似有些久远,但该书讨论的是一些很难过时的话题, 就像我们今天还在讨论2000多年前“孔孟之道”和“孙子兵法”一样,12 年后的今天,我们再次读起The Practice of Programming ,仍没有感觉到一 丝腐朽的气味。从内容上看,该书几乎囊括了程序员深有感触的各种问题,对于很多彷徨的程序员来说,这绝对是一贴切中要害的良药。全书主 要采用C++/Java作为范例语言,但丝毫不影响其他语言的爱好者以此作为 升级读本。
全书分成9章,分别是:
Chapter 1: Style(风格)
指导你如何写出优雅的代码,而不是乱写一气。
Chapter 2: Algorithms and Data Structures(算法与数据结构) 总结一下各种基本的算法和数据结构。
Chapter 3: Design and Implementation(设计与实现) 紧接第2章,用5种不同的语言讨论具体的程序实现。
Chapter 4: Interfaces(界面) 展示了用户和程序之间、程序模块之间应有的界面设计。
Chapter 5: Debugging(除错) 系统地讨论了除错的各种策略和技巧。
Chapter 6: Testing(测试) 指导如何手动地、自动地进行程序的测试,以保证程序能正常工作。
Chapter 7: Performance(性能) 循序渐进,演示如何通过不断的重构优化程序的性能。
Chapter 8: Portability(可移植性) 讨论提高程序的可移植性所关注的地方和可用的技巧。
Chapter 9: Notation(记法) 讨论如何采用一些有用的记法简化程序,将数据和逻辑用合适的记法表达出来。
很 多 程 序 员 很 享 受 阅 读 英 文 原 著 , 从 某 种 角 度 来 说 , 英 文 更 能 确 切表达计算机世界的概念,如同样是“注解”、“注释”,comment和 a n n o t a t i o n 在程序设计世界中就具有不同的含义。有些词汇一旦做了翻 译,如object、list、map、foreach等,反倒会让国内读者感受到莫名的障 碍,程序员彼此交流时,有的时候就干脆直接采用英文说法。再如一些 缩写,如CSV格式,它来源于Comma-Separated Values(“以逗号分隔的 值”),原义极其朴素,但缩写成CSV就显得太过高深。同样的例子还有 internationalization和localization,它们常被缩写成I18N和L10N,如果抛开英文原词,就会多一些神秘感。再如:“Abort, Retry, Fail?”这是操作系统 中常常打印出来的一句原话,如果再翻译成中文,就失去了原有上下文的 意味。阅读英文原版的另外一个好处,还在于当我们看到memset()函数时 就会联想到memory set,看到strcpy()函数时就会联想到string copy。
The Practice of Programming 用语浅显易懂,深入浅出,但由于文化的 差异,在为避免读者理解上的困难,有些地方我们在保留原汁原味的同 时,还增加了一些本地化的注解。注解的比例大概为20%左右,通过附上 些亲切的中文用以强调、扩展作者提出的某些概念和观点,以避免读者迷 失在英文词句的汪洋大海中,一去不复返。
在评注过程中,由于学识有限,为避免一面之辞,评注者大量参考了
C++ ISO标准、互联网资料与国内的一些计算机教材,也包括裘宗燕老师
2007年针对The Practice of Programming 的译本,力求在术语使用和观点解 释上,不会给国内程序员造成任何误解。最后感谢电子工业出版社的张春
雨先生及其他同事,是你们的辛勤劳动促成了这本评注版得以与广大程序 员见面。
正如作者所强调的,程序设计并没有编码那么简单,它是一项高技巧 的脑力劳动。悲惨的是,程序设计被很多的人“演绎”成、也被更多的人 “曲解”成毫无技巧乐趣可言的体力劳动!我们看到千千万万的准“程序 员”,进入某个软件工厂,仅仅通过几个月的培训,就被制造成能够“胜 任”的程序员,在这里,他们被灌输的仅仅是规则的遵守和他人代码的机 械模仿,留给他们的思考和设计的空间极其有限。失去了思维的权利的程 序员,在随后的人生中不得不在各种各样的岗位上按照他人的意愿做着一 次又一次的重复的机械式的工作,很多的程序员也因为兴趣问题放弃了程 序设计,转向其他的职业生涯。殊不知,程序设计的世界是其乐无穷的, 是无止境的,它需要永久的激情 和持续的实践积累。评注者真心期望读者 朋友们能从阅读本书的过程中得到收获,得到心灵上的升华。唯有那些有 思想的程序员,方能写出有灵魂的代码。
2011.4 北京
|
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/13164110/viewspace-702867/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/13164110/viewspace-702867/