Hello World
Spiga

所有程序员都应该至少读上两遍的十篇论文

2009-03-02 10:29 by 老赵, 14295 visits

转载自刘江老师的博文《所有程序员都应该至少读上两遍的十篇论文》。关于读论文的重要性我不多作解释,事实上我也解释不清,但是可以确定的是,论文让我感受到技术之美,是一件很惬意的事情。当然,我们不一定要读“前沿”的内容,但是一些经典的论文是不能错过的。


今天(噢,应该是昨天了)图灵在北京搞了一次Ajax群英会,盛况空前。(会议实况下周整理一下,贴过来吧。)其间《Erlang程序设计》赵东炜说到读论文的重要性。我还附和说,其实许多名家在讲治学的时候都会讲到,要读自己领域里最经典的和最重要的论文。

很巧,刚才从Reddit上看到了题为“10 Papers Every Programmer Should Read (At Least Twice) ”的文章,打开链接一看,是我们《修改代码的艺术》一书的作者Michael Feathers写的。他的那本书被称为“近十年来最有影响的计算机图书”之一,可是在国内的关注并不太够,这是为什么呢?

言归正传,看看是哪10篇论文入了Feathers大师的法眼吧:

  1. On the criteria to be used in decomposing systems into modules – David Parnas
  2. A Note On Distributed Computing – Jim Waldo, Geoff Wyant, Ann Wollrath, Sam Kendall
  3. The Next 700 Programming Languages – P. J. Landin
  4. Can Programming Be Liberated from the von Neumann Style? – John Backus
  5. Reflections on Trusting Trust – Ken Thompson
  6. Lisp: Good News, Bad News, How to Win Big – Richard Gabriel
  7. An experimental evaluation of the assumption of independence in multiversion programming – John Knight and Nancy Leveson
  8. Arguments and Results – James Noble
  9. A Laboratory For Teaching Object-Oriented Thinking – Kent Beck, Ward Cunningham
  10. Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith

这里面文章的作者大牛如云啊,图灵奖得主、IEEE和ACM的Fellow。当然,还有Beck和Cunningham这样的实干家(没有听说过?面壁十天。XP、设计模式、重构、JUnit甚至Wiki都是他们搞出来的啊。)

Feathers的文章里还有这些论文的摘要,等有时间我把它们都翻译出来。

这里链接有的不能直接访问,因为它们都是学术杂志文章,不开放的。是不是因为这个,Reddit上最热的文章变成了http://portal.acm.org Should be free呢?

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得不行,真让人不爽。得了您吧。” 说实话,这口气咋让我觉得像是咱同胞呢……瀑布汗啊。

Bob大叔的回复发人深省。他说,你们知道这篇文章以及其中提到的论文有多重要吗?Feathers同学读了成百上千篇论文,然后向你介绍其中最好的10篇!人家把金砖放在你眼前,你却说太重了,我拿不动。笨蛋啊,蠢材啊!

他接着说:“我们是自食其力而且为自己的职业负责的技术人员呢,还是指望爹妈来擦屁股的小屁孩?是你,而不是别人,要为你自己的职业负责。你的老板可没有责任管这些。提升自己的职业水平不应该指望老板。你不能指望老板给你买书(如果他们真能这样当然好,但是这不是他们的义务)。老板不买,你自己买啊!老板没有责任教你学习新语言。如果他们能送你去培训当然好,但是如果他们不送,你要自己学啊!

“我非常忧虑,我们的福利文化已经制造出一大批喜欢哭兮兮娘娘腔的程序员,他们居然认为必须为有版权的文章花钱是不公平的。(什么?还要我出钱?那是老板的事儿!那是我老师的事儿!那是Michael Feathers的事儿!他们要想我成为好的程序员,可别指望我出钱去读那些文章,也别指望我在Google里搜索文章,他们最好到我的办公室格子里来,哦,上午9点到10点吧,一边轻捋我的头发,一边把文章读给我听!)

“请记住,这世界可不欠你的。老板也不欠你。Michael Feathers更不欠你。”

(沉思十分钟……)

Creative Commons License

本文基于署名 2.5 中国大陆许可协议发布,欢迎转载,演绎或用于商业目的,但是必须保留本文的署名赵劼(包含链接),具体操作方式可参考此处。如您有任何疑问或者授权方面的协商,请给我留言

Add your comment

39 条回复

  1. 骨头
    *.*.*.*
    链接

    骨头 2009-03-02 12:21:00

    期待你把它们都翻译出来

  2. 老赵
    admin
    链接

    老赵 2009-03-02 12:26:00

    @骨头
    文章里已经说了一些我想说的话了

  3. 麒麟.NET
    *.*.*.*
    链接

    麒麟.NET 2009-03-02 12:30:00

    是一楼

  4. 麒麟.NET
    *.*.*.*
    链接

    麒麟.NET 2009-03-02 12:30:00

    囧楼上……

  5. tanch[未注册用户]
    *.*.*.*
    链接

    tanch[未注册用户] 2009-03-02 16:04:00

    大家都是混口饭吃, 如果你技术再牛,也依然贫困,又有什么用,何况编程这东西又不是少了你就不行了。。。

  6. 老赵
    admin
    链接

    老赵 2009-03-02 16:38:00

    --引用--------------------------------------------------
    tanch: 大家都是混口饭吃, 如果你技术再牛,也依然贫困,又有什么用,何况编程这东西又不是少了你就不行了。。。
    --------------------------------------------------------
    为什么您会觉得一个技术很牛的人会贫困呢?

  7. ZelluX[未注册用户]
    *.*.*.*
    链接

    ZelluX[未注册用户] 2009-03-02 18:16:00

    呃,好像就看过一篇Reflections on Trusting Trust@@ 改天把这个列表上的paper都看一看

    另外水木上有人介绍过这篇paper
    http://www.newsmth.net/bbscon.php?bid=109&id=1437
    http://www.newsmth.net/bbscon.php?bid=109&id=1438
    http://www.newsmth.net/bbscon.php?bid=109&id=1439
    http://www.newsmth.net/bbscon.php?bid=109&id=1440
    讲解的很详细

  8. 奋斗NO1[未注册用户]
    *.*.*.*
    链接

    奋斗NO1[未注册用户] 2009-03-02 19:12:00

    老赵变帅了,看到照片
    肯定是想被人追。

  9. 支持[未注册用户]
    *.*.*.*
    链接

    支持[未注册用户] 2009-03-02 20:31:00

    快点弄点视频上来吧。。。

    @奋斗NO1
    这里全都是公的啊,,,

  10. 老赵
    admin
    链接

    老赵 2009-03-02 20:45:00

    --引用--------------------------------------------------
    奋斗NO1: 老赵变帅了,看到照片
    肯定是想被人追。
    --------------------------------------------------------
    你说对了,谁来满足我一下?

  11. 潘安+宋玉
    *.*.*.*
    链接

    潘安+宋玉 2009-03-02 20:53:00

    建议老赵把推荐的书啊,论文啊,在豆瓣上做个豆列
    作为大家的追寻大师的roadmap

  12. jilin[未注册用户]
    *.*.*.*
    链接

    jilin[未注册用户] 2009-03-02 23:40:00

    @Jeffrey Zhao
    我觉得tanch的话有一定的道理。
    很多程序员不是报着混的态度的,是理想主义者,却只有少数能成为老赵一样的牛人,而这些人的确是现实所迫。
    不贫困需要被别人被社会所认可,但是技术牛却真的不一定被认可。试想以下几种情况:
    很多公司的客户本就不看重项目做的有多好,只要过得去就行,从利润最大化的角度看,是不是不需要用那么牛的人呢?做过老板的人应该很理解这种思维方式;
    被认可实质上指的是被老板或责任人认可,他们中绝大多数不懂技术的,有名牌背景却实际上中低等水平的,只要能侃,往往“显得”比真正的牛人更牛;
    被职场政治排挤;
    ……

    这些状况可能愈演愈烈。。也可能柳暗花明,不过后者的几率要小得多了。。

  13. 老赵
    admin
    链接

    老赵 2009-03-02 23:52:00

    @jilin
    怎么说呢,我觉得这个市场还是缺牛人的,如果真是牛人,“此处不留爷,自有留爷处”,完全可以找到一个好的东家。

  14. jilin[未注册用户]
    *.*.*.*
    链接

    jilin[未注册用户] 2009-03-02 23:55:00

    请教老赵。
    我简单看了一下Arguments and Results里面的模式2——Selector Object,感觉似乎也不过而尔,甚至有些不敢苟同。
    以他的例子来讲,和其他很多场景一样,该做的事情,一样都少不了的,把三个Draw变成一个Draw,把区别放进那个参数对象里,实际上只是减少了函数的个数,但却模糊了理解,还需要调用者去了解参数类型的变化情况及其含义。如果非要减少接口函数的个数,我觉得还不如这样:
    Draw(MethodEnum howToDraw,Graphics g)

    不知道我理解的对不对。。

    老赵能不能用自己的话来剖析一下,是不是相对于其实质来讲,“10 Papers Every Programmer Should Read (At Least Twice)”有点标题党的嫌疑了。。。

  15. 老赵
    admin
    链接

    老赵 2009-03-02 23:59:00

    @jilin
    1、我还没有读呢。希望读了以后能和您讨论。:)
    2、此类标题肯定是标题党,这是毋庸置疑的,内容也是根据个人喜好来的。

  16. jilin[未注册用户]
    *.*.*.*
    链接

    jilin[未注册用户] 2009-03-03 00:04:00

    @Jeffrey Zhao
    怎么说呢,我觉得这个市场还是缺牛人的,如果真是牛人,“此处不留爷,自有留爷处”,完全可以找到一个好的东家。
    --------------------------
    我想到一个有趣的情况,老赵这个级别的牛人可能不会有体会,其他达人有兴趣的也可一试:
    把你的个人简历如实写好,报着找个好工作的态度发到目前各大求职网站里所列的公司的HR的邮箱里,看看有百分之几的回音率。我赌不到10%,不管你有多牛!

  17. 老赵
    admin
    链接

    老赵 2009-03-03 00:06:00

    @jilin
    为什么这么说呢?我觉得就国内来说,百度,腾讯,淘宝等大公司都不会放过人才的阿。

  18. ZelluX[未注册用户]
    *.*.*.*
    链接

    ZelluX[未注册用户] 2009-03-03 01:06:00

    @jilin
    那些都是老paper。。当时能想到这些很不容易了,你用现在的眼光去看那时候自然会有很多问题。。

  19. 老赵
    admin
    链接

    老赵 2009-03-03 01:38:00

    @ZelluX
    有道理

  20. 青羽
    *.*.*.*
    链接

    青羽 2009-03-03 08:40:00

    听了jackyz和张克军的讲座。非常不错。
    没看到老赵非常可惜~~

  21. luguo[未注册用户]
    *.*.*.*
    链接

    luguo[未注册用户] 2009-03-03 12:57:00

    牛人+帅哥 ,MM们,赶紧的~~

  22. stabley107
    *.*.*.*
    链接

    stabley107 2009-03-03 14:39:00

    好书如同好女人,好电视节目一样难求.

  23. 奋斗NO1[未注册用户]
    *.*.*.*
    链接

    奋斗NO1[未注册用户] 2009-03-03 14:53:00

    老赵也是一个性情中人啊;肯定回被追。

  24. 奋斗NO1[未注册用户]
    *.*.*.*
    链接

    奋斗NO1[未注册用户] 2009-03-03 14:55:00

    快点弄点视频上来吧。。。

    @奋斗NO1
    这里全都是公的啊,,,
    ------------------------------
    你的意思是?

  25. phpxer
    *.*.*.*
    链接

    phpxer 2009-03-04 22:56:00

    Mark

  26. 不好评价[未注册用户]
    *.*.*.*
    链接

    不好评价[未注册用户] 2009-03-06 07:56:00

    某些编辑懂个屁,指手画脚为了啥?那个MF就别提了,《修改代码的艺术》此书偏见太多,根本没法看。

    上面这些文章,有些是论文/半论文,有些简直就是八卦。另外就是别侮辱了“老师”两个字,这两字现在用的太随便了,别为了混社会而糟蹋了自己。

    说实在的就是为了混社会,也别混小商小贩叫卖圈子。档次太低,对职业生涯是有害的;怕得罪人,就像我这样匿了就是。

  27. 老赵
    admin
    链接

    老赵 2009-03-06 09:08:00

    @不好评价
    那么就把“论文”改成“文章”。
    其他的我没有听懂你的意思。

  28. 路人中的路人[未注册用户]
    *.*.*.*
    链接

    路人中的路人[未注册用户] 2009-03-06 14:45:00

    觉得里面有些回复实在是发人深省....

  29. Albert Yann
    *.*.*.*
    链接

    Albert Yann 2009-03-08 23:17:00

    我去面壁,把英文学好了先。

  30. gutes[未注册用户]
    *.*.*.*
    链接

    gutes[未注册用户] 2009-03-09 00:44:00

    一起面 = =!
    看遍文章我得金山词霸从头用到底...

  31. -brian-
    *.*.*.*
    链接

    -brian- 2009-03-09 15:31:00

    老赵是不是在学校时,英文就很好了呀

  32. 老赵
    admin
    链接

    老赵 2009-03-09 15:51:00

    --引用--------------------------------------------------
    -brian-: 老赵是不是在学校时,英文就很好了呀
    --------------------------------------------------------
    四级水平吧

  33. Epeius[未注册用户]
    *.*.*.*
    链接

    Epeius[未注册用户] 2009-03-09 18:03:00

    @不好评价
    你看过这些论文么?连“八卦”都拿出来形容了

    好歹去http://citeseerx.ist.psu.edu看看这些论文的被引用数再来发表你自以为是的高见

  34. 林思衣
    *.*.*.*
    链接

    林思衣 2009-03-18 15:37:00

    可惜英文不好啊!
    边看看用金山翻译 有一点看不明白 就连不下去了
    希望早点翻译过来啊

    翻译成书的话 我倒是愿意买的

  35. Jaryleely
    *.*.*.*
    链接

    Jaryleely 2009-03-26 19:10:00

    老赵英文牛的很啊

  36. 老赵
    admin
    链接

    老赵 2009-03-26 19:12:00

    --引用--------------------------------------------------
    Jaryleely: 老赵英文牛的很啊
    --------------------------------------------------------
    不牛,四级水平而已。

  37. pen520shift[未注册用户]
    *.*.*.*
    链接

    pen520shift[未注册用户] 2009-04-19 23:58:00

    请记住,这世界可不欠你的。老板也不欠你。Michael Feathers更不欠你。”
    最喜欢这句!!!!

  38. wasteland
    202.65.194.*
    链接

    wasteland 2010-11-08 15:09:45

    不会E文, 看着真痛苦啊。

  39. 香草
    61.149.89.*
    链接

    香草 2011-10-20 17:02:43

    我刚才尝试着翻译了。从第一篇文章开始,说实话,不是不想自己翻译看,只是,我翻译的水平,唉像直译一般。自己都捋不清什么意思,何等纠结,现在去学英语。0.0,有点假了,我现在是一个初级程序员,在公司学习一些东西都很费劲,在去学英语。真的无语了。一想,以后有空学学英语在看吧,或者也许到时候就有人翻译出来了。抱着这种心态,大概又要被骂了,唉,惆怅。刚才翻译的时候,脑子好混乱,秋天我在办公桌坐着,还是额头一直冒汗。想想给你留言。现在脑袋顿时清醒了,我这算不算有病。惆怅的初级程序员。

发表回复

登录 / 登录并记住我 ,登陆后便可删除或修改已发表的评论 (请注意保留评论内容)

昵称:(必填)

邮箱:(必填,仅用于Gavatar

主页:(可选)

评论内容(大于5个字符):

  1. Your Name yyyy-MM-dd HH:mm:ss

使用Live Messenger联系我