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

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

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


--------------------------------------------------------------------------------

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

很巧,刚才从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的文章里还有这些论文的摘要,等有时间我把它们都翻译出来。

这里链接有的不能直接访问,因为它们都是学术杂志文章,不开放的。是不是因为这个,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更不欠你。”


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/dianausdu/archive/2009/05/15/4187656.aspx

目录
相关文章
|
11月前
|
C语言
近期一系列个人做题反复记不住以及思路不清晰问题的总结
近期一系列个人做题反复记不住以及思路不清晰问题的总结
47 0
|
算法 搜索推荐 程序员
程序员会使用的十个基础算法
作为一名程序员,掌握各种算法可以帮助我们解决各种复杂的问题,提高代码的效率和性能,同时也是面试中常被考察的重要内容之一。无论是开发新的软件应用、优化现有的算法逻辑还是解决各类计算问题,算法都是不可或缺的工具。因此,程序员必须掌握一系列常用的算法,以确保能够高效地编写出稳定、功能强大的软件。
|
机器学习/深度学习 算法 搜索推荐
程序员的算法“必抓清单”:那些我们一定会遇见的算法
程序员的算法“必抓清单”:那些我们一定会遇见的算法
91 0
|
存储 编解码 运维
让数据说话,获得“原来如此”的答案
随着数据分析和人工智能技术的快速发展,让数据说话已经成为了一种新的趋势。数据不仅可以帮助我们发现问题,解决问题,还可以让我们获得“原来如此”的答案。尤其是在日常生活中,数据无处不在,而且我们生活中的点点滴滴都脱离不了数据,通过数据可以知道自己的消费情况,通过数据可以知道自己喜欢的电影类型,通过数据可以知道自己在日常工作中的任务进度,等等这些通过数据分析和洞察,可以让某些困惑“真相大白”。
180 0
让数据说话,获得“原来如此”的答案
|
人工智能 JSON 测试技术
语言模型悄悄偷懒?新研究:​上下文太长,模型会略过中间不看
语言模型悄悄偷懒?新研究:​上下文太长,模型会略过中间不看
125 0
|
小程序
如何提问才能获得想要的答案?
我们每个人都会遇到问题,遇到问题时如果自己搞不定的话,最好的方式其实就是向他人求助,也就是提问。提问其实是一件技术活,是有技巧的,会提问的人总是能够获得想要的答案,而不会提问的人经常会被拒之门外,得不到答案。
168 0
如何提问才能获得想要的答案?
|
存储 算法 搜索推荐
Java开发 - 常用算法深度讲解,让你再也不会忘记
Java开发 - 常用算法深度讲解,让你再也不会忘记
150 0
Java开发 - 常用算法深度讲解,让你再也不会忘记
|
算法 NoSQL Redis
关于跳表,这么解释你肯定能听懂
如何用 30s 给面试官讲清楚什么是跳表
117 0
关于跳表,这么解释你肯定能听懂
|
搜索推荐
提出好问题引出一个好答案
在你和你想要的东西之间,只差一连串更好的问题。 -- 《巨人的方法》
202 0
提出好问题引出一个好答案
|
算法 程序员
弄懂“三门问题”,成功概率翻倍,来用代码验证一下
弄懂“三门问题”,成功概率翻倍,来用代码验证一下
251 0
弄懂“三门问题”,成功概率翻倍,来用代码验证一下