每個開發人員應閱讀的10篇論文
這是來自Michael Feathers的推薦:
過去十年來,我們在行業中取得了一個有趣的轉折。我們更加重視體驗式學習,並且我們已經重新獲得了強烈的實用主義關注,但我認為如果我們忽略了過去50年來人們學到的一些更深層次的東西,那將是一種恥辱。重新發現它們會很痛苦,(對我而言)不知道它們會是一種恥辱。
- 關於將系統分解為模組的標準 - David Parnas
- 關於分散式計算的一個註記 - Jim Waldo,Geoff Wyant,Ann Wollrath,Sam Kendall
- 下一個700程式語言 - PJ蘭丁
- 程式設計可以從馮諾依曼風格中解放出來嗎? - 約翰巴克斯
- 關於相信信任的思考 - 肯湯普森
- Lisp:好訊息,壞訊息,如何贏大 - 理查德加布裡埃爾
- 多版本程式設計中獨立性假設的實驗評估 - 約翰奈特和南希萊維森
- 爭論和結果 - Noble
- 面向物件思維教學的實驗室 - Kent Beck,Ward Cunningham
- 作為一種體驗程式設計:自我的靈感 - David Ungar,Randall B. Smith
關於將系統分解為模組的標準 - Parnas
這是一篇非常古老的論文,但它不僅僅是一本經典之作。在其中,Parnas是引入了單一責任原則的先行者。他介紹了我們應該使用模組化來隱藏設計決策的想法 - 隱藏那些可能會變化的事情。如今人們仍然不會經常考慮這一點。
在這論文中我真正喜歡的另一件事是他對KWIC系統的評論,他以此為例。他提到一個好的程式員需要一兩個星期才能編碼,今天,人們幾乎沒有時間。
關於分散式計算的一個註記 - Waldo,Wyant,Wollrath,Kendall
抽象很棒,但它只能走得那麼遠。在本文中,作者奠定了曾經普遍存在的神話 - 我們可以設計一個分散式系統並使分發透明化。有沒有想過在Java中為什麼你必須實現特定的介面來進行遠端處理?這本書告訴為什麼。
下一個700程式語言 - 蘭丁
我們大多數人都花了很多時間在傳統的程式語言中工作,但是函數語言程式設計語言正在逐漸增加,許多OO語言正在獲得函式性特性。本文(讀作教程)為面向表示式的程式設計風格提出了論據。它還為懶惰評估奠定了基礎。
程式設計可以從馮諾依曼風格中解放出來嗎? - 巴克斯
約翰巴克斯以其在電腦科學方面的一些成就而聞名。他因在Fortran工作而獲得ACM圖靈獎。他在頒獎典禮上發表的這篇論文當時相當令人震驚,因為它本質上說“我們弄錯了。”巴克斯藉此機會推薦純函數語言程式設計。他的論點令人信服,他們幫助制定了一個剛剛開始在主流中掀起波瀾的研究議程。
關於相信信任的思考 - 湯普森
我曾經聽說過,當這篇論文發表時,閱讀後的人都會趕回去編譯他們的C編譯器並尋找問題。本文揭示了電腦保安核心的難題。如果您花了很多時間考慮安全性,那麼您需要閱讀它。
Lisp:好訊息,壞訊息,如何贏得大獎 - 加布裡埃爾
本文在此列表中有點不典型。它針對的是Lisp社群,它有點像哀嘆。但是,深藏在其中的是加布裡埃爾對“更好的更糟糕”哲學的描述 - 這一理念對技術的接受和傳播具有深遠的影響。
多版本程式設計中獨立性假設的實驗評估 - 約翰奈特和南希萊維森
關於程式正確性的討論,事實證明,其他學科的工程師採取的其中一個途徑是讓他們的產品更強大 - 冗餘 - 在軟體中並不真正起作用。多版本程式設計的想法是,您可以通過將規範交給多個團隊,讓他們獨立開發軟體,然後讓系統並行執行來減少關鍵系統中的故障。監控過程會驗證其結果,如果存在任何差異,則會選擇最常見的結果。聽起來應該有用,對吧?
爭論和結果 - Noble
我認為這個列表中的所有其他論文在某些圈子中都是眾所周知的。這個則不是,我喜歡這篇論文的是它需要我們每天處理的事情 - 論證集和函式結果 - 它通過一系列變化來實現它們,這些變化對很多人來說都是不會發生的。事實上,你使用的每個函式都有許多可能的方向,如果可以進化的話。並非所有函式都適用,但如果你知道可能的方向,你就會更加豐富。
面向物件思維教學的實驗室 - Kent Beck,Ward Cunningham
關於面向物件的論文數量令人難以置信,它的偉大是它的直接性。OO經歷了多個階段。它曾經是新鮮和新穎的,然後它是華麗的,然後它變得事實。本文探討了許多人不再談論的關鍵思想:擬人化和放棄top/down視角。它還向您展示瞭如何使用索引卡進行設計。它可能聽起來不是很酷,但卻非常有效。
程式設計作為經驗:自我的靈感 - Ungar,史密斯
有多少人知道自我專案?在我看來還不夠,自我試圖在計算中採用兩個想法並儘可能地推動它們。第一個是極簡主義:自程式語言完全在Lisp和Smalltalk靜脈中 - 一切都是根據可能的最小數量的原語來定義的;另一個想法是直接操作 - 物件化方式在使用者介面中一直被應用得很好 - 程式設計師和使用者用滑鼠坐在可直接點選的物件的海洋中並將它們用於一切。
今天最廣泛分佈的程式語言(JavaScript)是一種基於原型的程式語言,它借用了超級研究和自我的思想,這也是一種更為反常的諷刺。