程序员自我提升阶段的首选书籍

来源:互联网 发布:java hashcode 源码 编辑:程序博客网 时间:2024/06/16 11:36
其实两年之前(那是我还在上大三)就曾在书店里看到这本书,当时可能是被书名所蛊惑吧,看到"修炼之道"这四个字就感觉这本书书名太唬,拿起来翻了翻也没看到什么有关"修炼"的实质内容,于是就将它搁置了。
  
  两年的时间里,实习和工作让我积攒起了一定的代码量和项目经验,同时在这段时间里,我阅读了很多书籍,以弥补大学里不努力学习的过失。后来再次在书店看到了这本书,才发现书中的不少内容和我这两年的一些感触产生了共鸣,于是将其买下,仔细的阅读了一遍。
  
  这本书的翻译还是很不错的,个别的字眼可能比较晦涩(比如“古鲁”或是“曼特拉”之类的怪词),不过不影响整体的阅读,关键的词汇以及语句译者给出了原文,这一点是很不错的。
  
  一般来说,刚刚接触编程的人,更倾向于从具体的程序代码学习编程的理念,而不是从程序设计理论书籍去理解编程的概念。就像学习英语,在刚开始的时候,最重要的是扩大自己的阅读量和词汇量,而不是“钻研”各种奇淫技巧。所以,计算机编程的入门书籍里都包含了大量的示例代码片段,初学者通过模仿这些代码,在心里逐步建立起一个属于自己的程序设计模型。这是程序设计的第一个阶段,也就是入门阶段。
  
  在编写了一定量的代码,对编程有了一定的了解之后。逐渐的,我们开始对自己的编写的程序,以及程序设计进行反思:程序为什么要这么设计?以什么方式可以编写出更好的程序?如何在编写程序时少走不必要的弯路?这时我们最需要的,不再局限于某种语言的语法或者是xxAPI的使用方法,而是面对实际问题需要的灵活的处理方案,亦或是去理解被前辈所认可的相对正确的软件设计方法。在这时,我们处于程序员的第二个阶段,也就是自我提升阶段。
  
  当然我们也可以通过自己的摸索,逐步找到上面问题的答案,然而这样会付出很大的代价。阅读相关的书籍,可以令我们少走不必要的弯路,加快我们水平的提升速度。事实上这样的书籍并不多。
  
  The Pragmatic Programmer(以下简称TPP)这本书,就是在自我提升阶段,值得反复阅读的绝好的书籍。这本书里面涉及到了在软件开发中的方方面面:从正确的理解需求到灵活的设计实现,从估算/提升程序的运行效率到提升软件的开发效率,从程序员的自身修养到与他人交流时的tips。这本书用非常短小的篇幅,覆盖了非常大的范围(事实上,这是我看过的覆盖面最广的有关程序员技术的书籍)。
  
  传统的计算机书籍一般采用自下而上,由浅至深,循序渐进的方法来讲述计算机理论。而TPP这本书的组织结构显的比较松散,章节之间相对独立,这使得“随机阅读”成为可能:你可以随便的翻到某一章直接阅读,而有联系的章节均在每一节末尾给出。每一节里面都有一两个起到概括全文作用的Tips,这些Tips都是前辈经验的结晶,需要被牢记。和代码大全2里的Checklist相类似,TPP把全书出现的70个Tips整合到一起,放在了书末尾,以便查阅。
  
  然而,由于篇幅所限,TPP在介绍程序设计的理念及原则时,都是"点到为止",也就是说,TPP只提供了一个通往成为注重实效的程序员的前进方向,而具体的细节,则需要你在工作中,或者进一步阅读相关书籍来把握。因此我在这里提供一些值得阅读的后续书籍:
  
  编写程序:程序设计实践(The practise of programming)从各个方面,讲述了如何编写正确、优美的程序
  
  交流:人性的弱点,这个... 不用多说了吧,和编程无关,但是程序员应该读读它,毕竟我们不只和计算机打交道
  
  算法速率和估算:编程珠玑(Programming pearls)是介绍编写实用高效算法和正确程序的最好的书籍
  
  生产效率:卓有成效的程序员(The productive programmer)里提供了很多实用的小工具,以及提升编程效率的具体途径。
  
  软件构建:代码大全2(Code complete 2nd edition),超级经典的软件构建过程全书,从下至上介绍了软件构建过程中的大量使用技巧和细节。
  
  重构:重构-改善既有代码的设计(Refactoring- refactoring improving the design of existing code)阐述了重构的理念,并提供了大量的重构技巧。
  
  编程规范:.Net设计规范(Framework Design Guidelines)一书以微软.Net Framework开发团队的视角,提供了大量.Net编程的实用规约(Convention)
  
  下面是对本书翻译的一点小建议:
  
  古鲁这个词在英文中是Guru,这个词汇来源于印度,意为宗教领袖,后来被引申为计算机领域的大师。个人认为在这里音译Guru显得很诡异,翻译成"大师"显得更为合适。(Head First 设计模式一书也是这么翻译的)
  
  曼特拉这个词在英文中是Mantra,这个词汇同样源于印度,意为教义。译者同样使用了音译,个人认为翻译成"信条"更为合适
  
  接下来是对电子工业出版社的一些建议:
  
  个人感觉自从07年下半年到现在,电子工业出版社就没再引进过很好的国外计算机图书了,希望电工社能注意到这一点。
  
  希望电工社可以引进下面这两本书:
  
  http://www.amazon.com/Computer-Systems-Programmers-Perspective-2nd/dp/0136108040
  深入理解计算机系统第二版,此书就不用多介绍了吧,的最好的计算机系统导论教材。
  
  http://www.amazon.com/Programming-Language-Pragmatics-Third-Michael/dp/0123745144
  程序设计语言-实践之路第三版,此书的第一版和第二版都是电工社出版的,我看过第二版,无论是翻译质量还是内容都很不错,希望可以尽快引进第三版(如果可能,希望还是裘宗燕老师翻译)
  
  http://www.amazon.com/Programming-Principles-Practice-Using-C/dp/0321543726/
  Programming: Principles and Practice Using C++ ,C++之父编写,我看过的最好的程序设计入门书籍,同时也是我看过的最好的C++入门书籍
原创粉丝点击