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