還記得上個月 GitHub 把眾多程序員的代碼打包運往北極嗎?最近,Github 更新了北極代碼庫的技術(shù)樹文件,這個技術(shù)樹是指什么?又都包含哪些部分呢?
帶著這些疑問來和文摘菌一起看看吧。
介紹:技術(shù)樹指南我們精選了一些作品,下面的內(nèi)容,我們稱之為 “技術(shù)樹”,旨在描述當(dāng)今世界如何制造和使用軟件,概述計算機如何工作,以及制造和使用計算機所需的基礎(chǔ)技術(shù)。GitHub 檔案計劃的目的是為后代保存開源軟件。這意味著也要保存開源軟件運行的其他技術(shù)的知識,以及對使這些軟件誕生的開源運動的描述。
除了這些技術(shù)文件,還囊括了一些藝術(shù)、文化和歷史作品,以幫助描述創(chuàng)建這個檔案的整體文化背景,以及一系列的字典,以幫助翻譯成世界上最廣泛的幾種其他語言。
這個技術(shù)樹的初始版本將幾乎完全由先前存在的作品的副本組成,其中沒有任何作品是為未來的未知讀者而寫的。因此,與其說它是一份指南,不如說是一份資源的集合,我們希望這些資源在歷史上是有趣和 / 或有用的。我們試圖在抽象 / 理論和具體 / 實踐工作之間取得平衡,并至少提供現(xiàn)代軟件工程所依賴的整個技術(shù)棧的概述。
請注意,本文件目前是我們可能希望列入的作品的一個松散的 “愿望清單”,我們公布該清單的目的是為了進(jìn)一步的征求建議和意見,而不是最終確定的選定作品登記冊。還要注意的是,將作品以人類可讀的形式復(fù)制到縮微膠卷上的前景,會導(dǎo)致潛在的版權(quán)問題,同時也意味著獲得有關(guān)作品的可復(fù)制數(shù)字版本的實際考慮。某些出版商 (Packt、O'Reilly、Springer 和 Wiley)已經(jīng)表示他們很樂意與我們合作,而大多數(shù)其他出版商和版權(quán)持有者的情況仍未確定。
擬議的技術(shù)樹大致分為以下 16 個部分:
1. 計算機和互聯(lián)網(wǎng)基礎(chǔ):計算機是如何工作的,以及它們?nèi)绾伪贿B接在一起,成為一個單一的行星網(wǎng)絡(luò)。
2. 算法和數(shù)據(jù)結(jié)構(gòu):以高效的方式解決常見類別問題的過程、規(guī)則和整理數(shù)據(jù)的方法。打個比方,算法是軟件程序的中樞,數(shù)據(jù)結(jié)構(gòu)是存儲。
3. 編譯器,匯編器和操作系統(tǒng):寫好的源代碼如何成為導(dǎo)致計算機內(nèi)部電信號以受控方式變化的機器代碼;操作系統(tǒng)的理論,是支持計算機基本功能的軟件,并提供所有其他軟件最終調(diào)用的基本的、底層的功能。
4. 編程語言:詳細(xì)介紹世界上一些最流行、最廣泛使用的編程語言。雖然從根本上說,任何程序都可以用任何語言編寫,但某些語言在特定的任務(wù)中表現(xiàn)的更好或更差。
5. 網(wǎng)絡(luò)和互連:計算機如何通過物理和無線信號在更大的網(wǎng)絡(luò)中相互連接。因特網(wǎng),世界上最大的互連網(wǎng)絡(luò),它連接著地球上大多數(shù)的計算機。
6. 現(xiàn)代軟件開發(fā):在保證質(zhì)量的前提下,持續(xù)處理監(jiān)測和通信的大規(guī)模軟件項目、工具及服務(wù)。
7. 現(xiàn)代軟件應(yīng)用:深入描述各種應(yīng)用,如網(wǎng)絡(luò)開發(fā) (網(wǎng)絡(luò)實質(zhì)上是互聯(lián)網(wǎng)中用于顯示輸出和接收人類輸入的部分);科學(xué)研究和分析;圖像處理;通過神經(jīng)網(wǎng)絡(luò)進(jìn)行模式識別和生成;分布式計算機軟件;加密貨幣,可用作無信任的分散軟件的平臺;以及量子計算的新領(lǐng)域。
8. 硬件架構(gòu):計算機硬件的概念、結(jié)構(gòu)和布局。硬件指的是物理電子元件;硬件架構(gòu)指的是如何將這些元件結(jié)構(gòu)化并連接起來,以便運行軟件;而軟件最終會演變成物理元件內(nèi)的電傳導(dǎo)模式。
9. 硬件開發(fā):如何從電子元件集合中構(gòu)建簡單的計算機,無人機,機器人和數(shù)碼相機的技術(shù)說明。
10. 電子元件,晶體管,半導(dǎo)體制造:那些早于計算機的電子元件以及各種晶體管,制造計算機的元件,以及制造大規(guī)?;ミB晶體管的技術(shù)和過程的概述。
11. 電力、無線電和其他工業(yè)技術(shù):計算機前的基本技術(shù),包括產(chǎn)生可用的電力、通過電線傳輸電力、利用電力通過無線電在沒有電線的情況下遠(yuǎn)距離傳遞信息,以及基本的工業(yè)金屬加工。
12. 前工業(yè)技術(shù):電力時代之前的技術(shù)。
13. 女性和技術(shù):概述女性在軟件開發(fā)和其它技術(shù)領(lǐng)域被忽視的作用。
14. 語言:一本英語詞典以及翻譯詞典,旨在幫助讀者將英語轉(zhuǎn)換為阿拉伯語、漢語、印地語和西班牙語,這是世界上使用最多的其他四種語言。
15. 藝術(shù)、文化和歷史:人類歷史和不斷變化的人類文化,主要通過過去 150 年中寫的著名小說來敘事。
16. 文化背景:在技術(shù)樹創(chuàng)建時關(guān)于人類的信息;特別是維基百科的快照,這是一個集體生成的關(guān)于我們世界的各種信息的儲存庫。由于維基百科的規(guī)模巨大,這一部分與其他檔案一樣,以編碼數(shù)據(jù)的形式提供,而不是以可視 / 可讀頁面的形式提供。
前七章專門介紹軟件、GitHub 北極代碼庫的目的和內(nèi)容,及其用途和應(yīng)用。接下來的五節(jié)描述了構(gòu)建軟件可能運行的計算機所需的技術(shù)。其余三節(jié)旨在說明這些技術(shù)發(fā)展的人文背景,我們這個時代的文化所講述的故事,我們講述這些故事的語言,以及我們生活的世界的事實背景和描述。
技術(shù)樹只是巨大的 GitHub Arctic Code Vault 的一部分。因此,作為附錄,它還包括 GitHub Code Vault 指南的可視化副本,以及該庫中 15000 個最重要的代碼庫的索引,包括簡要說明和在該庫中的位置。
也許值得注意的是,我們的咨詢委員會強調(diào),我們的時代很可能是人類歷史上迄今為止記錄得最好的時代,因此,將技術(shù)樹與檔案捆綁在一起,對其繼承者來說可能是便利多于必要。因此,它很有可能提供有關(guān)創(chuàng)建檔案的時代和文化的背景,而不是作為新的和不可獲得的知識的來源,當(dāng)然,也有想象中的未來,它將發(fā)揮后一種作用。
以下是對每個部分的簡要總結(jié),描述了它所涵蓋的一般主題。
計算機和互聯(lián)網(wǎng)基礎(chǔ)
這些書籍描述了什么是計算機,從硅開始,到電、晶體管、二進(jìn)制邏輯、數(shù)字門、比特、字節(jié)、芯片、ALUs、微處理器、軟件等,并介紹了它們的功能。它還包括,從更高的層次描述計算機如何連接在一起,以及這意味著什么的書籍。
算法和數(shù)據(jù)結(jié)構(gòu)
計算機和軟件工程的基礎(chǔ);描述了數(shù)據(jù)如何被結(jié)構(gòu)化和存儲,及數(shù)據(jù)最有效和最高效的處理方式。
編譯器、匯編器和操作系統(tǒng)
檔案計劃的目的是保存軟件,而這些是軟件的基本構(gòu)件。這些書有助于解釋高級語言軟件如何變成底層文件的。
編程語言
編程語言有數(shù)百種,如果你是開發(fā)人員,計算機歷史博物館里那張可視化的巨大圖表值得一看,我們并不打算將它們?nèi)坑涗浵聛怼2贿^,對世界上一些主要語言進(jìn)行易懂的長篇描述似乎還是可取的。
網(wǎng)絡(luò)和互連
計算機是偉大的,但從某種程度上,它屬于 20 世紀(jì);至少可以說,網(wǎng)絡(luò)計算機才是 21 世紀(jì)真正的技術(shù)革命。因此,我們的網(wǎng)絡(luò)協(xié)議和技術(shù)值得給予重視。我們可能希望我們的繼承者要么早已超越了我們的網(wǎng)絡(luò),要么可以自由地重新設(shè)計,而不是被我們?yōu)榱讼蚝蠹嫒荻枰龀龅乃型讌f(xié)所束縛,但無論如何,希望他們能從我們的工作中學(xué)習(xí)到一些東西。
現(xiàn)代軟件開發(fā)
編寫軟件的逐行行為與開發(fā)、測試、集成和部署軟件的團(tuán)隊過程完全不同。這里將介紹一些關(guān)鍵的方法、工具和角色,出于顯而易見的原因,其中包括解讀 Git 本身。
現(xiàn)代軟件應(yīng)用
要想描述軟件的所有用途,需要的是一片技術(shù)森林,而不是一棵樹。然而,一些關(guān)于單個項目和庫如何編織成強大的網(wǎng)絡(luò)應(yīng)用的描述似乎很有價值,對虛擬化、"大數(shù)據(jù)" 軟件、特別是機器學(xué)習(xí)等的概述也是如此。
硬件架構(gòu)
從單個模擬晶體管到現(xiàn)代多核處理器,其復(fù)雜程度不用說,很難概括。本章試圖描述數(shù)字電路和微處理器的基礎(chǔ)知識,以及一些關(guān)鍵的參考資料,然后再介紹硬件架構(gòu)和硬件設(shè)計語言。
硬件開發(fā)
這里我們嘗試提供一些計算機 I/O 設(shè)備之外的硬件開發(fā)實例和講解,如成像、無人機和機器人。
電子元器件,晶體管,半導(dǎo)體制造
對基本電子元件和以晶體管為基礎(chǔ)的電路進(jìn)行更深層次的分析,以及描述光刻和芯片制造的教科書。顯然,這種制造基本上不可能從頭開始重現(xiàn) (摩爾鮮為人知的第二定律描述了制造者的成本如何隨著芯片密度的降低而增加),但可以想象,這些著作可能具有歷史甚至實際意義。
無線電、電視和其它工業(yè)技術(shù)
描述有助于界定我們這個時代的其它技術(shù),從電力到無線電和電視。
前工業(yè)技術(shù)
這些作品針對的是檔案館繼承人的 “浪漫災(zāi)難”形象,他們試圖從工業(yè)化前的零開始重新啟動所有現(xiàn)代技術(shù)文明。這種可能在未來確實存在,盡管它們似乎不太可能;此外,這些作品似乎有可能幫助填補歷史知識中出現(xiàn)的空白。
我們認(rèn)為,婦女在創(chuàng)立和塑造計算機和技術(shù)方面所發(fā)揮的獨特作用,她們應(yīng)該有屬于自己的章節(jié)。婦女在這一領(lǐng)域的被抹殺意味著,原始資料整理所占用的時間(如女性撰寫的書籍),歷史學(xué)家發(fā)現(xiàn)婦女的貢獻(xiàn)相當(dāng)重要。包括這一部分,我們應(yīng)當(dāng)承認(rèn)這項工作。特別感謝 Mar Hicks;本節(jié)中的許多參考文獻(xiàn)借用了他們在威斯康星大學(xué)麥迪遜分校開設(shè)的 "Women in Computing" 課程。其中還包括討論科技對女性負(fù)面影響的文獻(xiàn)。
語言
專業(yè)語言學(xué)建議是,與流行的看法相反,英語句法和語法的變化已經(jīng)大大放緩,除非發(fā)生一些大規(guī)模的災(zāi)難,否則英語很有可能在一千年后仍然存在,并在很大程度上可以識別。為了對沖我們的賭注,雖然,我們在檔案的每一卷中都包含了翻譯成阿拉伯語、印地語、西班牙語和漢語的 “羅塞塔”指南,以及每一種可用書面語言的,并將同樣在這里包含字典和幾本語言學(xué)著作。
小說、文化和歷史
我們堅信,文化往往可以通過偉大的小說作品得到最好的表達(dá)。因此,我們試圖收集一份著名的文學(xué)作品清單(包括 / 從一些非小說書開始),以在人類層面上傳達(dá)我們時代的歷史和文化。
文化背景
技術(shù)樹的這一部分旨在傳達(dá)我們文化中有用的信息,同時也是對編寫檔案時情況的描述。它將由編碼數(shù)據(jù)組成,而不是圖像頁面。
維基百科雖然不是沒有缺陷和遺漏,但它是 "我們世界的書面總結(jié)" 的最現(xiàn)成的代表。請注意,這一部分絕不是為了完整地描述今天的人類:正如我們的顧問所強調(diào)的那樣,這個時代很可能是所有人類歷史中記錄得最好的時代,而且這種信息不太可能很難找到。相反,它的目的是為了方便向檔案的繼承人表明檔案編寫時代的具體、特殊背景。
GitHub 北極代碼庫技術(shù)樹是 GitHub Arctic Code Vault 的配套作品,它將包含一個索引,其中包含北極代碼庫中存儲的所有 GitHub 倉庫的名稱、簡要描述和電影卷號,即截至 2020 年 2 月 2 日的每個活躍的公共 GitHub repo。
這個索引還將突出顯示 15000 個 GitHub 倉庫,這些倉庫在編寫檔案時是最高星級或最多依賴的。這些資源庫也將被存儲在檔案的兩卷 “最熱門”子集中,將與 Oxford's Bodleian 圖書館等合作伙伴共同保存)。
值得注意的是,北極密碼庫的每一個卷軸也有自己的索引,逐項列出其內(nèi)容,以及解讀該卷軸中存儲的信息所需的所有說明和信息。這個主索引將是所有這些索引的超集,以便繼承人備份和使用。