譯者 | 晶顏
審校 | 重樓
在軟件開發(fā)歷史中,有一些時刻擴展了我們認為的可能性,從而改變了我們作為開發(fā)人員所做的一切。某些歷史文獻記錄了計算技術中最重要的范式轉(zhuǎn)變,它們是無價的。這篇文章回顧了過去一個世
紀的軟件開發(fā)歷史,總結了每位開發(fā)人員都應該閱讀的9篇非凡文獻。
在軟件開發(fā)史上具有決定意義的9篇文獻
論可計算數(shù)及其在判定性問題上的應用
作者:艾倫·圖靈(Alan Turing)
時間:1936年
這是一個范例文件的原型。圖靈的作品具有這樣的特點:在紙上探索不確定的地形,并找到地標來繪制地圖。這張?zhí)厥獾牡貓D已經(jīng)為我們服務了近一百年。
這篇論文提出了一種新的抽象計算模型,后來被稱之為“圖靈機”。圖靈機是一種理論上的機器,它的構造非常簡單,由一條無限長的紙帶和一個能夠在紙帶上左右移動的可讀寫頭組成。紙帶被劃分成了一個個格子,每個格子上可以寫入一個符號(0或者1)。可讀寫頭能夠讀取當前所在格子上的符號,并根據(jù)一些規(guī)則改變自己的移動方式和紙帶上的符號。這些規(guī)則被稱為“轉(zhuǎn)移函數(shù)”,它們描述了圖靈機在讀取某個符號時應該采取什么行動,例如改變當前格子上的符號、向左或向右移動可讀寫頭、或者停機等。
圖靈機的能力基本上就只有這些。但當艾倫仔細思考圖靈機的能力和限制時,發(fā)現(xiàn)圖靈機能夠解決所有可計算問題,而無法解決不可計算問題。在論文中,艾倫給出了計算的定義,并對計算所能實現(xiàn)的目標給出了絕對限制,這一發(fā)現(xiàn)也成為了現(xiàn)代計算機科學的奠基之作。
《論可計算數(shù)》(On Computable Numbers)在很多層面上都是必讀的,包括作為哥德爾(G?del)不完備定理的延續(xù)。此外,圖靈的“判定性問題”(Entscheidungsproblem)是一個有趣的窗口,它將數(shù)學、邏輯和計算機科學結合在一起。它要求在給定的一組公理中,對于給定的輸入,有一種推導是/否真理的通用方法。
傳送門:https://www.cs.virginia.edu/~robins/Turing_Paper_1936.pdf
關于EDVAC的報告初稿
作者:約翰·馮·諾依曼(John von Neumann)
時間:1945年
《關于EDVAC的報告初稿》是第一份系統(tǒng)描述計算機制造方法的公開出版物,具有劃時代的革新意義。
馮·諾伊曼提出的EDVAC(電子離散變量自動計算機)架構是一種突破,計算機的內(nèi)存可以同時存儲數(shù)據(jù)和指令。換句話說,內(nèi)存可以保存可執(zhí)行的信息。除了核心理念之外,作者還定義了當時機器的可能性。從圖靈的哲學數(shù)學討論到馮·諾伊曼對信息的實際討論,這是一個巨大的飛躍。
這篇論文有各種有趣的想法,包括關于計算中的錯誤處理的想法:“設備可以自動識別最常見的故障,通過外部可見的標志指示它們的存在和位置,然后停止。”馮·諾伊曼的論文站在了現(xiàn)代計算機的大門上,以一種半真實、半推測的方式描述了我們今天使用的設備的性質(zhì)。這就是計算機的一般架構仍然被稱為馮·諾依曼架構的原因所在。
不過,盡管《關于EDVAC的報告初稿》描述的是工程學和數(shù)學領域的研究成果,但它的遣詞造句通俗而又淺顯,幾乎人人都能看懂。
傳送門:https://web.mit.edu/STS.035/www/PDFs/edvac.pdf
IBM數(shù)學公式翻譯系統(tǒng)的規(guī)范,F(xiàn)ORTRAN
作者:約翰·巴克斯等人(John Backuss et al)
時間:1954年
雖然FORTRAN規(guī)范沒有公開發(fā)布,但它對語言設計和軟件產(chǎn)生了很大的影響。
FORTRAN是編程語言的古老祖先,是當時高級語言的一項突破。它是第一個真正通用的語言。
試想一下,當圖靈在1936年構想出計算機僅僅28年之后,便誕生了FORTRAN語言,其重要性不言而喻。
FORTRAN規(guī)范給出了一個很好的起點,并幫助創(chuàng)建了一個語言設計者可以依賴的模型。它抓住了一種蓬勃發(fā)展的契機,即當時的硬件和軟件剛剛成為可能。
傳送門:https://archive.computerhistory.org/resources/text/Fortran/102679231.05.01.acc.pdf
GoTo語句有害論
作者:艾茲格·迪科斯徹(Edsger Dijkstra)
時間:1968年
Edsger Dijkstra這篇發(fā)表于1968年的論文除了給我們提供有關“有害論”的梗之外,不僅指出了循環(huán)和條件控制流相對于難以遵循的go-to語句的優(yōu)越性,而且激發(fā)了一種思考和討論代碼質(zhì)量的新方式。
Dijkstra的論文給了我們一個完整的環(huán)境,一種對編程的態(tài)度,以及一種用一頁半的篇幅來看待這個學科的方式。
在這里,我們不僅要考慮軟件在編寫和運行時的結構,還要考慮工作的特征和我們作為其中的人的角色。這讓我們對軟件工程文化有了一個粗略的了解,它是一種充滿激情的努力;這種文化支撐著我們今天在軟件領域所做的一切。
Dijkstra的簡短論述還幫助引領了高階語言的產(chǎn)生,使我們離今天使用的編程語言更近了一步。
傳送門:https://homepages.cwi.nl/~storm/teaching/reader/Dijkstra68.pdf
密碼學的新方向
作者:惠特菲爾德·迪菲(Whitfield Diffie)和馬丁·E·赫爾曼(Martin E. Hellman)
時間:1976年
這篇論文在三個方面表現(xiàn)突出:
- 這個提議乍一看似乎不可能。
- 該解決方案優(yōu)雅且易于理解。
- 它改變了歷史的進程。
如果你已經(jīng)知道非對稱加密的密鑰交換是如何工作的,那么你就知道為什么這篇論文會在我們的名單上。公鑰/非對稱加密的發(fā)現(xiàn)和發(fā)明為互聯(lián)網(wǎng)上所有安全通信(如HTTPS)奠定了基礎,并為32年后的比特幣白皮書奠定了基礎。
《密碼學新方向》一問世,就在公開通信和國家安全局(NSA)等政府間諜機構之間掀起了一場史詩般的戰(zhàn)斗。作者似乎也明白他們的提議的激進本質(zhì)——畢竟,論文的開場白是:“我們今天站在密碼學革命的邊緣。”
傳送門:https://www-ee.stanford.edu/~hellman/publications/24.pdf
GNU宣言
作者:理查德·斯托曼(Richard Stallman)
時間:1985年
進入八十年代后,黑客社群在軟件工業(yè)商業(yè)化的強大壓力下日漸土崩瓦解,甚至連AI實驗室的許多黑客也組成了Symbolic公司,試圖以專利軟件來取代實驗室中黑客文化的產(chǎn)物——免費可自由流通的軟件。
斯托曼對此感到氣憤與無奈。在對Symbolic進行了一段時間的抗爭后,他于1985年發(fā)表了著名的《GNU宣言》,正式宣布要開始進行一項宏偉的計劃:創(chuàng)造一套完全自由免費,兼容于Unix的操作系統(tǒng)GNU(GNU's Not Unix!)。之后他又建立了自由軟件基金會來協(xié)助該計劃。
從某種意義上說,《GNU宣言》是開源軟件的宣言。這也是對當今許多開發(fā)人員所信奉的“熱愛IT”編程精神的大膽聲明。
該宣言可讀性強,有趣,反對當時主導行業(yè)的閉源、付費許可模式。令人難以置信的是,歷史證明,這是勇敢的少數(shù)派取得勝利的一個例子。如今,開源軟件無處不在,為熱愛它而編程,同時也以此為生,已經(jīng)成為一種主流方式。
時至今日,《GNU宣言》仍然不過時,讀起來甚至就像2023年為GitHub項目寫的一樣。它無疑是這份名單上最有趣的論文。
傳送門:https://www.gnu.org/gnu/manifesto.en.html
架構風格和基于網(wǎng)絡的軟件架構設計
作者:羅伊·菲爾丁(Roy Fielding)
時間:2000年
雖然這篇論文是在2000年發(fā)表的,但它總結了90年代分布式編程環(huán)境的經(jīng)驗教訓,然后提出了前進的方向。由此,我認為它應該在二十年的軟件開發(fā)歷史中占有一席之地。
該論文收集了開發(fā)人員從早期互聯(lián)網(wǎng)中學到的一切,并為其最緊迫的問題提供了解決方案。REST很重要,因為它瞄準了現(xiàn)代軟件復雜性的核心。這就是為什么20年來它一直是架構決策的試金石。
此外,作者關于復雜性和Web架構中的應用設計的討論也很適合今天的開發(fā)人員閱讀。
傳送門:https://ics.uci.edu/~fielding/pubs/dissertation/top.htm
比特幣:點對點電子現(xiàn)金系統(tǒng)
作者:中本聰
時間:2008年
這篇論文匯集了數(shù)字貨幣的所有現(xiàn)有技術,并總結了其主要問題的解決方案。特別是,比特幣論文解決了雙重支出問題。
它很好地用簡單的語言概述了雙重支出的問題,然后提供了一個概念性的回應,然后深入研究了解決方案的一些實現(xiàn)細節(jié)。
除了像比特幣這樣的簡單貨幣概念之外,該論文還提出了一種可以利用密碼學來生產(chǎn)像以太坊這樣的分布式虛擬機的引擎。
這篇比特幣論文是一個很好的例子,說明了如何為看似混亂的復雜性提供一個簡單、干凈的解決方案。
傳送門:https://bitcoin.org/bitcoin.pdf
TensorFlow:用于大規(guī)模機器學習的系統(tǒng)
作者:馬丁·阿巴迪(Martin Abadi)等人
時間:2015年
如果你正在尋找現(xiàn)代大語言模型(LLM)人工智能系統(tǒng)道路上的一個重要里程碑,那么一定非TensorFlow白皮書莫屬。它與廣義機器學習框架的討論相關,并詳細介紹了TensorFlow——一個旗艦AI平臺。
雖然這篇論文深入地研究了機器學習池的復雜一端,但它也給出了簡潔的提煉結果,例如,“給定一個單詞序列,語言模型預測最有可能的下一個單詞。”這是對現(xiàn)代聊天AI原理和現(xiàn)實的簡明總結。
這篇論文由Martín Abadi和許多貢獻者共同撰寫,內(nèi)容十分廣泛,重點聚焦TensorFlow的細節(jié),特別是在制作更通用的人工智能平臺方面。在這個過程中,它提供了一個優(yōu)秀的、高層次的機器學習技術之旅。對于那些好奇ML和尋找簡單語言進入更深層次理解領域的人來說,這是一個不容錯過的讀物。
傳送門:https://www.usenix.org/system/files/conference/osdi16/osdi16-abadi.pdf
原文標題:9 extraordinary documents every developer should read,作者:Matthew Tyson