所有程序員都應該至少讀兩遍的10篇論文
關于讀論文的重要性我不多作解釋,事實上我也解釋不清,但是可以確定的是,論文讓我感受到技術之美,是一件很愜意的事情。當然,我們不一定要讀“前沿”的內容,但是一些經典的論文是不能錯過的。
圖靈在北京搞了一次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更不欠你。”
文章鏈接:http://blog.sina.com.cn/s/blog_49947b280100cobt.html
【編輯推薦】