`

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

阅读更多

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

 

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

 

 

 

今天(噢,应该是昨天了)图灵在北京搞了一次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都是他们搞出来的啊。)


【图灵新书推荐】高速CMOS电路设计:Logical Effort方法(英文版) (图灵奖得主Sutherland著作)


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

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


【图灵新书推荐】Flex 3权威指南 (Adobe公司官方教材), 深入浅出Ext JS (互动网榜首图书)


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也推荐的。


【图灵新书推荐】实用语义网:RDFS与OWL高效建模(英文版) Web数据挖掘:超文本数据的知识发现(英文版)


更有意思的是,我们大家熟悉的Robert Martin大叔 [也是我们图灵的作者呵呵,《敏捷软件开发》(C#版) ,什么,你搞.NET的居然没有读过?面壁十天。] 也因此写了blog 。 原来有位叫David的同学在Feathers的blog下说了几句不靠谱的话,把一向脾气很好的Bob大叔也激怒了。David小子说:“你咋不直接给 出PDF呢?要是这些文章真的重要,应该免费读到不是?瞧你那口气,牛X得不行,真让人不爽。得了您吧。” 说实话,这口气咋让我觉得像是咱同胞呢……瀑布汗啊。

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

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

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

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

(沉思十分钟……)

对了,刚才发现,赵东炜同学已经在Erlang China网站推荐 了这十篇文章。不过老赵没有说出处,这个可不太厚道啊,呵呵……

 

 

 

分享到:
评论

相关推荐

    所有程序员都应该去读的十篇论文.zip

    1. On the criteria to be used in decomposing systems into modules – David Parnas 2. A Note On Distributed ... 10. Programming as an Experience: the inspiration for Self – David Ungar, Randall B. Smith

    程序员必读的十篇论文

    程序员必读的十篇论文,是个合集,欢迎大家下载

    编程论文集10篇(程序员必看)

    "编程论文集10篇(程序员必看)"是一个集合,其中包含了十篇对程序员具有极高价值的论文。这些论文可能涵盖了算法优化、编程语言设计、软件工程实践、系统架构、数据结构与算法、安全性、并发编程等多个方面的内容。...

    每个程序员都应该了解的内存知识【chp1-chpt4】.pdf

    而这篇文章为程序员们提供了从硬件层面分析和优化内存使用的知识框架。通过阅读本文,程序员们可以更好地理解内存子系统的工作原理,从而在日常开发工作中避免性能瓶颈,编写出更加高效的应用程序。

    程序员职业素养读后感

    程序员职业素养读后感

    程序员读24史

    《程序员读24史》这个主题,其实是一个非常有趣且深思的话题。程序员,作为现代社会中的技术专家,他们的工作往往集中在编程、算法、系统设计等领域,但了解历史,特别是中国的二十四史,对于他们来说有着非同寻常的...

    《简明银行会计-程序员视角》读书笔记

    《简明银行会计——程序员视角》读书笔记思维导图

    黑马程序员毕业设计资料,代码,数据库设计论文等

    "黑马程序员毕业设计资料,代码,数据库设计论文等" 这个标题表明这是一份来自“黑马程序员”教育平台的资源集合,主要用于帮助学生进行毕业设计。其中包含了项目代码、数据库设计相关的论文等内容,适用于计算机科学...

    程序员必备资料-所有程序员都能用得上的LCID代码和国家(地区)语言代码表

    程序员必备资料-所有程序员都能用得上的LCID代码和国家(地区)语言代码表

    程序员单页简历模板-92篇.rar

    程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历模板-92篇程序员单页简历...

    程序员十层楼

    本书《程序员十层楼》通过对程序员技术能力的细致划分,提出了一个包含十个层次的程序员技能体系,以帮助读者更清晰地了解和定位自己的技术水平。在这一体系中,作者周伟明从自身丰富的软件开发经验和对程序员职业的...

    程序员该读的十本书.part4.rar

    程序员该读的十本书.part4.rar

    程序员应该具备的技能

    程序员应该具备的技能程序员应该具备的技能程序员应该具备的技能

    程序员专用 编程输入法

    标题中的“程序员专用编程输入法”指的是专门为程序员设计的特殊输入法工具,旨在提升编码效率。这类输入法通常具有以下特点: 1. **快捷代码输入**:程序员输入法能够通过快捷键、组合键或者自定义短语来快速输入...

    程序员的十层楼.

    【程序员的十层楼】是一个比喻,用于描述程序员在技术成长过程中的不同阶段。这个概念主要是为了分析和比较中国与西方程序员的技术水平。通过设定不同的技术层级,我们可以更清晰地了解程序员所需掌握的知识和技能,...

    程序员都知道那点97件事儿!97.Things.Every.Programmer.Should.Know.Feb.2010.pdf

    这本书名为《程序员都知道的那点事儿!97件事儿》,由Kevlin Henney编辑,首次出版于2010年2月。该书汇集了来自众多国外软件开发领域专家的智慧和经验,包含了97条建议,旨在帮助程序员在日常工作中提升能力、避免...

    什么样的人适合做程序员?程序员应该具有什么样的素质程序员四大禁忌

    在IT行业中,程序员是至关重要的角色,他们负责创建和维护软件、应用程序以及各种技术解决方案。那么,什么样的人适合成为程序员呢?程序员应具备哪些素质?同时,又有哪些禁忌需要避免呢? 首先,程序员需要耐得住...

Global site tag (gtag.js) - Google Analytics