Jolt Awards 2009的提名名单出来了,其中图书类的候选名单如下:
Books General
* Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior by Tom Demarco, Peter Hruschka, Tim Lister, Suzanne Robertson, James Robertson, and Steve McMenamin (Dorset House Publishing)
* Designing and Engineering Time: The Psychology of Time Perception in Software by Steven C. Seow (Addison-Wesley Professional)
* Emergent Design: The Evolutionary Nature of Professional Software Development by Scott L. Bain (Addison-Wesley Professional)
* Intellectual Property and Open Source by Van Lindberg (O'Reilly Media)
* Pragmatic Thinking and Learning: Refactor your Wetware by Andy Hunt (Pragmatic Bookshelf)
Books Technical
* High Performance MySQL by Baron Schwartz, Peter Zaitsev, Vadim Tkachenko, Jeremy Zawodny, Arjen Lentz, Derek J. Balling (O'Reilly Media)
* Java Power Tools by John Ferguson Smart (O'Reilly Media)
* Programming in Scala by Martin Odersky, Lex Spoon, and Bill Venners (Artima Press)
* Real World Haskell by John Goerzen, Bryan O'Sullivan, Donald Bruce Stewart (O'Reilly Media)
* The iPhone Developer's Cookbook: Building Applications with the iPhone SDK by Erica Sadun (Addison-Wesley Professional)
跟往年一样,Oreilly跟Addison Wesley仍然占据了大半的名额。另外Jolt Award一向偏爱一些新的领域,比如Scala跟Haskell(不好意思,我还不知道这是两个什么东西)。不过也可以看出,Jolt Award商业跟广告的气氛也挺浓,一本书如果得奖的话销量肯定会上升,但是像Java Power Tools这样的书也能上榜实在让人大跌眼镜。不是说这本书不好,不过这本书仅仅是对几十个开源项目的简单介绍罢了,今年的好书也不少,难道就没有比它好的?算了,还是评个我自己的Jolt Award 2009吧,下面评出来的书即使我没有看全,至少也翻过。另外我觉得很好的书别人未必觉得好,而且我所关注的领域主要还是在java跟ruby上面,所以下面的评选仅为一家之言而已。如果你觉得某本书是值得推荐的,请在留言里写出来(最好是2008年出版的)。
Books General
Clean Code by Robert C. Martin (Prentice Hall PTR)
如果2008年出版的书你只能看一本, 那我觉得就是这本了。Robert C.Martin每本书都会让我的见识上一个档次。那本Agile Software Development是我所有的书里面最破的一本,已经被我翻烂了。这两年像Martin、Kent beck等人都把视觉伸向了比Design Pattern更底层一点的实现上面,具体告诉你怎么命名一个类一个方法、怎么处理异常,甚至怎么format你的代码。跟《implementation pattern》更偏重于理论化跟哲学化不同,《clean code》就是让你立马挽起袖子大干一场,它在序言里就说了,这不是一本让你feel good的书,因为书里面充斥了大量的代码。
这本书主要分为三部分,第一部分跟《implementation pattern》差不多,主要介绍了类、方法、注释、异常等等的设计跟编码规则,我个人来说,我觉得这一部分比《implementation patterns》里面说的更具体,所以也更好懂一些;第二部分是最长的也是最重要的,Martin选取了三个例子,把三个例子按照第一部分里的规则一步步重构。序言里也说了,如果你只看第一部分跟第三部分,那这本书仍然是一本让你feel good的书;第三部分是对第二部分的一个总结,列出了第二部分出现的一些code smell。其实平时我已经不自觉的按照书里面的一些规则写代码了,但是这本书给这些规则提供了一个很好的理论依据,很好,很好。
The Algorithm Design Manual 2nd By Steven S. Skiena (Springer)
说到算法入门书,很多人可能都会首先推荐《算法导论》,不过那本书差不多1000页的厚度,跟通篇的伪代码,真正能持续看下去的人恐怕不多。这本书的名字一点也不起眼,而且又是以出版严肃学术著作著称的Springer出版的,恐怕很多人会望而却步。其实就算法入门来说,我觉得这本书比《算法导论》要好。这本书最有价值的是它提供了很多的"War Story",每个War Story都介绍了一个实际的问题,以及怎样用各种算法去解决这个问题。 另外这本书很多算法都是用C来描述的,不是伪代码。Stevey Yegge写过一篇blog
Get that job at google,介绍想进入google工作需要做哪些准备,里面就推荐了这本书,不过那时是第一版,今年出版的第二版增加了300页,但是没有增加新的算法,而是对每个原有算法的讲解更细致了,值得一看。另外这本书拿来做手头的参考书也不错。
Collective Intelligence in Action By Satnam Alag (Manning)
这本书跟《programming collective intelligence》的内容比较像,都是告诉你怎么给开发推荐系统、怎么开发tags模块等等,书中的代码都是用Java描述的。这本书之所以入选,是因为SNS网站现在越来越火,而Collective Intelligence是SNS网站的一个不可缺少的部分。你可以对网站的用户、商品等等进行聚类分析,找出行为相似的用户,对喜欢某商品的用户推荐其它的商品等等,这些都是Collective Intelligence研究的主题。像Amazon、豆瓣等等网站,当你看一本书、一部电影的时候,它会告诉你喜欢这本书的用户可能还喜欢什么书。看了这本书,你就可以明白这些系统是怎么做出来的了。这本书美中不足的是对算法的介绍比较少,对一些开源的机器学习类库介绍的比较多。不过这本书拿来做机器学习的入门书还算不错。
Books Technical
Effective Java 2nd By Joshua Bloch (Prentice Hall PTR)
这本书没什么可多说的,如果没记错,第一版已经得过Jolt大奖了。第二版针对java的新特性增加了一些Items。这世界上有那么几个人,他们写出来的书你都应该关注一下,Joshua Block绝对算其中的一个。
High Performance MySQL: Optimization, Backups, Replication, and More by Baron Schwartz , Peter Zaitsev, Vadim Tkachenko , Jeremy Zawodny , Arjen Lentz , Derek Balling (O'Reilly)
这本书上Jolt绝对没问题,算是讲Mysql讲的最深的一本书。其他介绍Mysql的书里的一些点到即止或者干脆略过的主题,如performance tuning、replication等等,这本书都有很详细的介绍。
The Ruby Programming Language by David Flanagan , Yukihiro Matsumoto (O'Reilly)
这本书Matz是作者之一,之所以上榜是因为我觉得这本书比《Programming Ruby》那本镐头书要好,厚度几乎是镐头书的一半,但是所有的主题都讲的很清楚,特别是第六章 Methods, Procs, Lambdas and Closures, 第七章 Classes and Modules, 第八章 Reflection and Metaprogramming 尤其值得一读。