据说所有程序员都应该至少读上两遍的十篇论文(转)
很巧,刚才从Reddit上看到了题为“10 Papers Every Programmer Should Read (At Least Twice) ”的文章,打开链接一看,是我们《修改代码的艺术》一书的作者Michael Feathers写的。他的那本书被称为“近十年来最有影响的计算机图书”之一,可是在国内的关注并不太够,这是为什么呢?
言归正传,看看是哪10篇论文入了Feathers大师的法眼吧:
On the criteria to be used in decomposing systems into modules – David Parnas
A Note On Distributed Computing – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall
The Next 700 Programming Languages – P. J. Landin
Can Programming Be Liberated from the von Neumann Style? – John Backus
Reflections on Trusting Trust – Ken Thompson
Lisp: Good News, Bad News, How to Win Big – Richard Gabriel
An experimental evaluation of the assumption of independence in multiversion programming – John Knight and Nancy Leveson
Arguments and Results – James Noble
A Laboratory For Teaching Object-Oriented Thinking – Kent Beck, Ward Cunningham
Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith
这里面文章的作者大牛如云啊,图灵奖得主、IEEE和ACM的Fellow。当然,还有Beck和Cunningham这样的实干家(没有听说过?面壁十天。XP、设计模式、重构、JUnit甚至Wiki都是他们搞出来的啊。)
Feathers的文章显然成了这几天网上的热门话题,我们另外一本已经获得版权的书《SOA Patterns》(Manning,2009)的作者Arnon Rotem-Gal-Oz受他启发,写了“所有架构师都应该至少读上两遍的十篇论文”:
1. The Byzantine Generals Problem (1982) by Leslie Lamport, Robert Shostak and Marshall Pease
2. Go To statements considered harmfull (1968) - by Edsger W. Dijkstra
3. A Note on Distributed Computing (1994) - by Samuel C. Kendall, Jim Waldo, Ann Wollrath and Geoff Wyant
4. Big Ball of Mud (1999) - Brian Foote and Joseph Yoder
5. No Silver Bullet Essence and Accidents of Software Engineering (1987) - Frederick P. Brooks
6. The Open Closed Principle (1996) - Robert C. Martin (Uncle Bob)
7. IEEE1471-2000 A recommended practice for architectural description of software intensive systems (2000)
8. Harvest, Yield, and Scalable Tolerant Systems (1999) Armando Fox, Eric A. Brewer
9. An Introduction to Software Architecture (1993) - David Garlan and Mary Shaw
10. Who Needs an Architect? (2003) Martin Fowler
注意到了吗,其中的第3篇是Feathers也推荐的。
更有意思的是,我们大家熟悉的Robert Martin大叔 [也是我们图灵的作者呵呵,《敏捷软件开发》(C#版),什么,你搞.NET的居然没有读过?面壁十天。] 也因此写了blog。原来有位叫David的同学在Feathers的blog下说了几句不靠谱的话,把一向脾气很好的Bob大叔也激怒了。David小子说:“你咋不直接给出PDF呢?要是这些文章真的重要,应该免费读到不是?瞧你那口气,牛X得不行,真让人不爽。得了您吧。” 说实话,这口气咋让我觉得像是咱同胞呢……瀑布汗啊。