一些技术书评,欢迎讨论
首先声明,由于本人只是一个最最普通的程序员,没有在amazon上面买书的经济条件,所以这篇帖子里面推荐的都是在国内可以搞得到的书籍。再者,由于本人的技术水平和视野的关系(那本<Analysis Patterns>我看下来感觉就不是很好:(),这里面推荐的书籍还是比较平实近人的,对每本书的评价也只是一家之言,欢迎讨论但拒绝人身攻击。最后,这里的推荐清单只包括本人今年所读过的以书本形式出现并认为值得一看的读物,而网上更多更丰富的是各种论文,文档和源代码(感谢GNU运动)则不包括在其中。
C++:
本来不想首先推荐c++读物的,因为这2年国内出了太多太多的c++的书,按照被很多牛人都引用过经济学“边缘效应递减规律”,新鲜刺激感下降不少。但只是因为习惯,所以还是被列为第一项。并且这里只推荐3本,而且也不是那么“必读”,并且我想最近一段时间内不应该会有什么划时代的c++书出现了.....
(1)C++ Templates---The Complete Guide
By David Vandevoorde,Nicolai M. Josuttis
Publisher : Addison Wesley
ISBN : 0-201-73484-2
Pages : 552
我想有了这本书,csdn的c++论坛里面关于template的问题就应该少上60%。作为c++最后一个被引入的设计范式,template从来就是各种newsgroup和bbs上面的焦点之一。前2年Andrei Alexandrescu的<Modern C++ Design>更是把这种争论推向了一个高度(作为余波,Andrei最近还在cuj上面发表了smart pointers-reload一文,看来他也看过matrix2了:))。关于template使用是一个见仁见智的问题,但是前提是你要了解template,所以这本书有着它的价值。不过呢,与此对应的是,这本书面很广,但有些章节不是很深入,过于简略---谁叫c++这么复杂庞大呢,只占1/4的template就搞得大家疲于奔命。
(2)Effective STL---50 specific ways to improve your use of the STL
By Scott Meyers
Publisher : Addison Wesley
ISBN : 0-201-74962-9
Pages : 260
看着熟悉的作者和熟悉的书名风格,大家应该认为这就是质量的保证。作为一个库,stl的使用难度并不很大,但是要高效正确的使用还是需要有个手册的(谁叫它是用c++写成的!)。本书正好覆盖了这一区域,并且Meyers的英文读起来还是那么明了,相比之下OOSC里面不少地方的古英语就让我很...(感觉像听魔戒里面精灵族说话)。缺点:技术层次不是很高。
(3)Large-Scale C++ Software Design(中文版:大规模c++程序设计)
By John Lakos
Publisher : Addison Wesley
ISBN : 0-201-63362-0
Pages : 622
这本书入选的主要原因在于它比较独特的定位。一般的书都关注于程序的逻辑设计,很少关心程序的物理设计---也就是各种逻辑模块之间的相互依赖关系。C++由于保留了C那种并不理想的.h+.cpp文件组成方式,使得大规模程序不得不考虑由于物理设计失当带来的各种编译和链接依赖性----你肯定不想make all一次要等上一星期。对于这种情况,本书给出了一定的处理方法。这本书主要的缺点一是年代过远(本书出版于1996),其中很多的说法已不完全精确,二是过于啰嗦,其实完全可以压缩到400页的,看起来也不会这么累。
java:
其实相对于当今c++的过于学术化,java显的工业化的多,而且各种新概念新东西也多的多。今年我认为java最大看头的地方在于AOP,只不过这一方面的书很少(你只有去TSS里面搞点试读章节)。还是去看看aspectj或是jboss的aop framework的文档吧。另外,作为分层语言的受益者(干苦力的是写JVM的c++),对于java语言本身并不需要象c++那样的那么多的语言手册。所以本人认为effective java或是practical java优先级就不是很高,相反到是象重构,极限编程,模式这些概念到是用java的人首先要读的。
(1)Refactoring: Improving the Design of Existing Code(中文版:重构--改善既有代码的设计)
By Martin Fowler
ISBN : 7-5083-1501-4
ok,这本书今年的广告做的也不少,我想大家也就不要我再来重复些什么了。实际上去年我就读过其英文版本,今年只不过拿中文版复习一遍。在这里感谢jjhou和gigix的翻译。Refactoring作为XP的一个很重要的组成部分,在java语言上获得了很大的成功,只要看看现在的java IDE---从JBuilder到eclipse到intelij IDEA,哪一个不集成了Refactoring功能,就可以看出Refactoring在java里面已经深入人心。配合上每日构建,测试先行...等等,java程序员不依靠debugger的日子快到来了:)
(2)Java Threads,second edition(中文版:Java线程)
By Scotts Oaks,Henry Wong
Publisher : O'Reilly
ISBN : 7-5083-1318-6
Pages : 336
这是一般很少被人提起的java的书籍,但是却是我认为讲述java线程这一主题最好的一本书。线程在java所宣称的“到处运行”的光环下往往被初学者认为不过是一个小话题,但在实践中往往却带来“到处补丁”的后果,并且由于java一些先天原因,很少有大型java程序不使用线程的。这本书就完全的解答了java线程所有的编程“陷阱”,并且带有大量的实用代码,有很大的实用性
.NET:
对于这一话题,我其实没有什么发言权,因为我在.NET上面的编程经验除了看过几个sample以外,就是用MS的SMARTPHONE SDK写过几个简陋的手机c#程序。我对.NET 90%以上的概念都来自于下面这本书---ok,大家应该都猜到是Jeffrey Richter的<Applied Microsoft .NET Framework Programming>。这本书的缺点可能就是前言有点肉麻而已(猫都出来了:)),不过要注意的是,本书的第一遍中文翻译比较糟糕,所以大家要不看e文的要不等第2遍中文翻译---这也是中国出版业的一大特点
Applied Microsoft .NET Framework Programming
By Jeffrey Richter
Publisher :Microsoft Press
Pages : 591
python:
终于到了介绍我喜欢的python语言的时间了:).作为一种oo的脚本语言,python是那种你一旦用上手就不肯放下的好工具。它天然的就可以成为分层语言系统的上层语言,用它当作胶水来连接下层语言(c/c++/java)的高效模块是一件很愉快的编程实践。所以我推荐了下面3本,不过由于这3本书有重复之处,所以我也就不分开评述了。Python in a Nutshell是最新的一本(2003.3出版)也是内容最丰富的一本。其中专门提到了python从2.1到2.2(现在是2.3)升级带来的一些语言变化(比如新的class语法)。而Python Programming on Win32则专著于win32平台,特别是python编写com以及操纵word,excel这些windows应用程序的方面,你会发现用python会获得比VBA更强大的功能。而Python Standard Library是一本完全的库手册,对于python这种高层语言是必不可少的.
(1)Python in a Nutshell
By Alex Martelli
Publisher: O'Reilly
ISBN : 0-596-00188-6
Pages : 654
(2)Python Programming on Win32
By Mark Hammond,Andy Robinson
Publisher : O'Reilly
ISBN : 1-56592-621-8
Pages : 672
(3)Python Standard Library
By Fredrik Lundh
Publisher : O'Reilly
ISBN : 0-596-00096-0
Pages : 300