书评 – 程序员经典读物(1)

简介: 早几天,笼统地就经典感慨了一番,接着来个逐一点评,算是有始有终了。经典是用来阅读而非膜拜的道理,自然是明白的,虽然我是属于比较推崇经典那一类的。阅读大致就是一个和作者交流的过程,有兴致时无妨感慨点评一番,算是对作者的一种致敬吧。

早几天,笼统地就经典感慨了一番,接着来个逐一点评,算是有始有终了。经典是用来阅读而非膜拜的道理,自然是明白的,虽然我是属于比较推崇经典那一类的。阅读大致就是一个和作者交流的过程,有兴致时无妨感慨点评一番,算是对作者的一种致敬吧。

1 Steve McConnell - Code Complete: A Practical Handbook of Software Construction 
  感言:二获Jolt Awards,算得上众望所归了,印象中,国内书商有炒作过第二版。作者主持过SWEBOK工作,所以写起书来也明显带有百科全书式的味道。我对SWEBOK一类百科全书式的东西,一般是不太感冒的,但这本书是个例外。作者学识渊博,却并无丝毫学究气,文笔洗练朴实,众多话题娓娓道来,处处透着一股举重若轻的味道。并不太关注各编程语言之趣向,直面编程之实质性内容。Coding之外,软件开发其它过程均有所涉及。有闲时,寻一寂静处,一边品茶,一边就着此书做些梳理功夫,慢慢地自然而然可收洗髓伐毛之功了。如此一来,也就不太适合初学者了。


2 Elisabeth Freeman, etc.  -  Head First Design Patterns
  感言:二名作者属于不怎么出名那一类的江湖高人,后来还整了一本HTML的书,影响就远远无法和这一本相比了。为这本书作序的一堆高人中,前二个就是GOF之二,GOF作为Design Pattern之父,当时有一位已仙游走了。我相信读过第一章后对Strategy Pattern以及OO Principle仍然觉得没有啥感觉的,应该是不太可能发生的事情。如果有人如此不幸,我估计有二种可能,第一可能是英文太糟糕了,第二可能是买错书了。此书并无甚原创性,属于阐释Design Pattern一类的著作,但是写的太精彩了,不仅绝顶高手好评如潮,更难得的是由初级向高级突破进阶时尤其给力。


3 Steve McConnell  - Rapid Development 
  感言:作者是排名第一那本作者同一人,的确是太有才了。如前面提到的,作者主持过SWEBOK工作,比较有意思的是,这本讲软件开发过程的著作有很浓的敏捷开发味道,我一直很好奇,一位软件工程权威组织的专家居然整了一本富有敏捷精神的书?而且好几年后,Agile Development这个词才出现。


4 Erich Gamma,etc.  - Design Patterns: Elements of Reusable Object-Oriented Software 
  感言:此书在编程语言之外为OOP开辟了一片独立的天空, 影响之深远,江湖上可谓无人不知。OO修炼过程中,知易行难的感慨向来颇多。如果把OO理念比作九阴真经,那Design Pattern就是降龙十八掌了。九阴真经太玄妙,降龙十八掌却是一招一式清清楚楚毫不含糊,一个个Design Pattern恰如降龙十八掌之各掌, 妙用各有不同,却处处体现同一个OO之理念。由此,Design Pattern打开了践行OO的方便之门。原著用的是C++,但一招一式无疑都是跨越语言的。另外,原著还采用了早期的UML,3年后,UML正式成为标准。


5 Bruce Schneier  - Applied Cryptography: Protocols, Algorithms, and Source Code (2nd Edition) 
  感言:未读过。


6 Robert C. Martin  - Agile Software Development: Principles, Patterns and Practices 
  感言:作者是OO领域的大师,敏捷开发先驱之一,XP鼓吹者。书名有一定误导,除了敏捷开发之外,精华其实是OO和TDD践行部分。实战性强,而且所举例子均是很常规的企业应用。此书先出的Java版,后出的C#版。印象中,作者并未讳言其早期对XP的疑惑,而附录中竟转载了一个不太出名的高人关于Coding就是Design的高论,对传统软件工程阵营的冲击无疑是颠覆性的,即使在敏捷社区内部,这个观点也是很激进的。一个早已名扬天下的大师,在根本立场上居然发生了180度的大逆转,令人感慨的已经不是大师个人的勇气,而是软件行业仍然是多么年轻。


7 Joel Spolsky  - Joel on Software 
  感言:典型地美式实用主义文风,擅长铺垫,于平淡中自然演绎出自己的观点或感受。不是一本谈具体Coding的技术书,也不是系统谈Process的,类似于专栏文章的选集。印象中,作者本是技术高手,曾主持过早期MS Excel VBA项目。近几年比较火的技术社区stackoverflow.com,作者是主要策划人之一。


8 Tom DeMarco, Timothy Lister  - Peopleware: Productive Projects and Teams (2nd Edition) 
  感言: 就好像是推崇所谓人本主义管理那一套的专家,无意中发现了软件开发领域种种愚蠢+恶心的搞法,激愤之下忍不住出手相助,于是整出了这一类书。早些年读的时候,着实觉得很感动,现在我觉得这类书的作用主要就二个,一是为媒体提供了一些可以没完没了炒下去的话题,二是让聪明的管理者变得更虚伪或更开明,让自以为是的管理者变得更……。


9 Frederick P. Brooks  - The Mythical Man-Month, Anniversary Edition (2nd Edition) 
  感言:作者是Turing Award获得着,不过这绝不是这本经典长盛不衰的原因。Intel的摩尔定律都已经失效了,而这本经典里面那个著名的断言依然继续着它淡淡的叹息。所谓“朝闻道,夕死可矣”,如果一生只能读一本软件开发方面的书,我愿意选这一本。我个人认为应该排第一。


10 Martin Fowler  - Refactoring: Improving the Design of Existing Code 
  感言:Martin Fowler的书,相信很多人和我一样,每本必读。这一本是OO实践中从初级向高级突破的必读经典。早读早受益。


11 Mike Cohn  - Agile Estimating and Planning 
  感言:未读过。


12 Alistair Cockburn  - Writing Effective Use Cases 
  感言:作者是敏捷开发先驱之一,思想富有原创性,哲理性很强。不过这本书实在看不出来,我一直奇怪这本书为何如此出名?有意思的是,如今Use Case风头已经不如User Story了。


13 Bertrand Meyer  - Object-Oriented Software Construction (2nd Edition) 
  感言:作者是OO先驱之一,大师级学者。此书属于OO早期的经典,影响深远,学术性较强。由于和OO实战有一定距离,如果不是特别喜欢追溯思想源头,建议不要浪费时间,因为可以替代它的更贴近实战的经典不少。如这个清单里面Robert Martin和Martin Fowler的著作。


14 Steve McConnell  - Software Estimation: Demystifying the Black Art 
  感言:作者是排名第一那本作者同一人,的确是太有才了。未读过。


15 Mike Cohn  - User Stories Applied: For Agile Software Development 
  感言:未读过。


16 Donald E. Knuth  - The Art of Computer Programming, The, Volumes 1-3 Boxed Set (2nd Edition) 
  感言:被媒体反复炒过。作者是大师级计算机科学家,也是Turing Award获得者。尝试读过,实在读不下去,多少有点后悔年轻时没多下点功夫。


17 Martin Fowler  - Patterns of Enterprise Application Architecture 
  感言:我个人认为这是企业应用领域的圣经。如果是从事企业应用开发的,建议读至少3遍,如果是架构师,至少6遍。并不是暗示难懂,恰恰相反文笔朴实自然,犹如清澈小溪一般通透,主要是内容太丰富了。


18 Jeffrey Friedl  - Mastering Regular Expressions 
  感言:未读过。


19 Andrew Hunt, David Thomas  - The Pragmatic Programmer: From Journeyman to Master 
  感言:二位作者均是敏捷先驱。典型的实用主义至上视角,文笔很好,基本上不提具体的代码,均是由实战中得来的真知灼见。年头久了点,但可读性仍然很好。The Pragmatic Programmer作为一个系列,也出了不少精品。


20 Karl E. Wiegers  - Software Requirements (2nd Edition) 
  感言:读过部分章节,坦白说,没有啥感觉。有一点可以肯定的是,很多需求模板,特别是Use Case模板,被广泛借用。

 

如果坚持读到这里,估计会有人和我一样对上面的排名有不同意见。这个排名并不是来自某个特权威的机构,而是来自一个名不见经传的博主http://www.noop.nl/2008/06/top-100-best-software-engineering-books-ever.html,我借用一下不是为了偷懒,而是觉得他的工作干得很漂亮,唯一的遗憾是没有找到最新的更新。

目录
相关文章
|
4月前
|
Java
在Java编程的江湖中,有一本传说中的“武林秘籍”,它不是刀光剑影的武学心法,而是能够让代码变得灵动、高效的秘密武器——多态。
在Java编程的江湖中,有一本传说中的“武林秘籍”,它不是刀光剑影的武学心法,而是能够让代码变得灵动、高效的秘密武器——多态。
44 1
|
6月前
|
数据库 云计算 Python
不容错过的经典!Python核心编程(第3版)教你用实例学Python!
在学完任何其他入门类的 Python 图书之后,你可能觉得已经掌握了 Python 而且还觉得学得不错,并为此感到自豪。通过完成大量练习之后,你将会对自己新掌握的 Python 编程技能拥有更多信心。 但是,你可能仍然会有这样的疑问,“现在该怎么办?我能用 Python 编写哪种类型的应用程序呢?”或许你是为了一个相当小众的工作项目而学习使用 Python,你可能会考虑“我还能用 Python 写点其他的吗?”
|
机器学习/深度学习
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程(2)
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
167 0
|
机器学习/深度学习 SQL 人工智能
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程(1)
本科生60行代码教你手搓GPT大模型,技术介绍堪比教程
294 0
|
机器学习/深度学习 存储 自然语言处理
不讲废话普通人了解 ChatGPT——基础篇第一课
不知道大家在第一次会使用 ChatGPT 并尝试和他对话时有没有感到震惊。当ChatGPT首次推出时,我立即被它的功能所吸引。
218 0
|
数据挖掘
书单:分享我的读书笔记和最近阅读的几本好书
人最重要的是三个能力:①学习力-学习总结的能力;②输出力-逻辑思维和沟通表达的能力;③反思力-自省和修正的能力; 阅读、学习,让自己更加快乐,让自己有更多的可能性,让生命的意义有可能延展和突破。
822 2
书单:分享我的读书笔记和最近阅读的几本好书
|
前端开发 程序员 开发者
十年老友记 | @风逐蓝天:编程是一种表达和创作的方式
十年老友记 | @风逐蓝天:编程是一种表达和创作的方式
137 0
|
数据库 数据安全/隐私保护 Windows
科研狗文献管理阅读必备的两大神器
科研狗文献管理阅读必备的两大神器
344 0
科研狗文献管理阅读必备的两大神器
外行朋友值得一读的5本经典数学书
有很多人让我给外行朋友推荐一些优秀的数学书,他们之中有些是没在大学学过高等课程的,只对学习数学感兴趣的朋友,还有些对历史人物比对数学成果更感兴趣。具有讽刺意味的是,当你是滑铁卢大学数学专业的学生之后,你到第四年才有机会上一门讲述数学历史的课程,会向你解释一些隐藏在数学之后的心态和哲学,而非只是定理和证明。
270 0
外行朋友值得一读的5本经典数学书
|
前端开发 小程序 API
学习感想
通过阿里云后台的学习,我掌握了一些前后台互动的相关知识,很感谢阿里巴巴能够给我们学生提供这些资源服务,最后期待阿里云服务能够给我带来更多惊喜。