Github 往北極都運了些什么?

2020-08-18 余愷威 大數據文摘微信公眾號
瀏覽

還記得上個月 GitHub 把眾多程序員的代碼打包運往北極嗎?最近,Github 更新了北極代碼庫的技術樹文件,這個技術樹是指什么?又都包含哪些部分呢?

帶著這些疑問來和文摘菌一起看看吧。

介紹:技術樹指南

我們精選了一些作品,下面的內容,我們稱之為 “技術樹”,旨在描述當今世界如何制造和使用軟件,概述計算機如何工作,以及制造和使用計算機所需的基礎技術。GitHub 檔案計劃的目的是為后代保存開源軟件。這意味著也要保存開源軟件運行的其他技術的知識,以及對使這些軟件誕生的開源運動的描述。

除了這些技術文件,還囊括了一些藝術、文化和歷史作品,以幫助描述創建這個檔案的整體文化背景,以及一系列的字典,以幫助翻譯成世界上最廣泛的幾種其他語言。

這個技術樹的初始版本將幾乎完全由先前存在的作品的副本組成,其中沒有任何作品是為未來的未知讀者而寫的。因此,與其說它是一份指南,不如說是一份資源的集合,我們希望這些資源在歷史上是有趣和 / 或有用的。我們試圖在抽象 / 理論和具體 / 實踐工作之間取得平衡,并至少提供現代軟件工程所依賴的整個技術棧的概述。

請注意,本文件目前是我們可能希望列入的作品的一個松散的 “愿望清單”,我們公布該清單的目的是為了進一步的征求建議和意見,而不是最終確定的選定作品登記冊。還要注意的是,將作品以人類可讀的形式復制到縮微膠卷上的前景,會導致潛在的版權問題,同時也意味著獲得有關作品的可復制數字版本的實際考慮。某些出版商 (Packt、O'Reilly、Springer 和 Wiley)已經表示他們很樂意與我們合作,而大多數其他出版商和版權持有者的情況仍未確定。

擬議的技術樹大致分為以下 16 個部分:

1. 計算機和互聯網基礎:計算機是如何工作的,以及它們如何被連接在一起,成為一個單一的行星網絡。

2. 算法和數據結構:以高效的方式解決常見類別問題的過程、規則和整理數據的方法。打個比方,算法是軟件程序的中樞,數據結構是存儲。

3. 編譯器,匯編器和操作系統:寫好的源代碼如何成為導致計算機內部電信號以受控方式變化的機器代碼;操作系統的理論,是支持計算機基本功能的軟件,并提供所有其他軟件最終調用的基本的、底層的功能。

4. 編程語言:詳細介紹世界上一些最流行、最廣泛使用的編程語言。雖然從根本上說,任何程序都可以用任何語言編寫,但某些語言在特定的任務中表現的更好或更差。

5. 網絡和互連:計算機如何通過物理和無線信號在更大的網絡中相互連接。因特網,世界上最大的互連網絡,它連接著地球上大多數的計算機。

6. 現代軟件開發:在保證質量的前提下,持續處理監測和通信的大規模軟件項目、工具及服務。

7. 現代軟件應用:深入描述各種應用,如網絡開發 (網絡實質上是互聯網中用于顯示輸出和接收人類輸入的部分);科學研究和分析;圖像處理;通過神經網絡進行模式識別和生成;分布式計算機軟件;加密貨幣,可用作無信任的分散軟件的平臺;以及量子計算的新領域。

8. 硬件架構:計算機硬件的概念、結構和布局。硬件指的是物理電子元件;硬件架構指的是如何將這些元件結構化并連接起來,以便運行軟件;而軟件最終會演變成物理元件內的電傳導模式。

9. 硬件開發:如何從電子元件集合中構建簡單的計算機,無人機,機器人和數碼相機的技術說明。

10. 電子元件,晶體管,半導體制造:那些早于計算機的電子元件以及各種晶體管,制造計算機的元件,以及制造大規模互連晶體管的技術和過程的概述。

11. 電力、無線電和其他工業技術:計算機前的基本技術,包括產生可用的電力、通過電線傳輸電力、利用電力通過無線電在沒有電線的情況下遠距離傳遞信息,以及基本的工業金屬加工。

12. 前工業技術:電力時代之前的技術。

13. 女性和技術:概述女性在軟件開發和其它技術領域被忽視的作用。

14. 語言:一本英語詞典以及翻譯詞典,旨在幫助讀者將英語轉換為阿拉伯語、漢語、印地語和西班牙語,這是世界上使用最多的其他四種語言。

15. 藝術、文化和歷史:人類歷史和不斷變化的人類文化,主要通過過去 150 年中寫的著名小說來敘事。

16. 文化背景:在技術樹創建時關于人類的信息;特別是維基百科的快照,這是一個集體生成的關于我們世界的各種信息的儲存庫。由于維基百科的規模巨大,這一部分與其他檔案一樣,以編碼數據的形式提供,而不是以可視 / 可讀頁面的形式提供。

前七章專門介紹軟件、GitHub 北極代碼庫的目的和內容,及其用途和應用。接下來的五節描述了構建軟件可能運行的計算機所需的技術。其余三節旨在說明這些技術發展的人文背景,我們這個時代的文化所講述的故事,我們講述這些故事的語言,以及我們生活的世界的事實背景和描述。

技術樹只是巨大的 GitHub Arctic Code Vault 的一部分。因此,作為附錄,它還包括 GitHub Code Vault 指南的可視化副本,以及該庫中 15000 個最重要的代碼庫的索引,包括簡要說明和在該庫中的位置。

也許值得注意的是,我們的咨詢委員會強調,我們的時代很可能是人類歷史上迄今為止記錄得最好的時代,因此,將技術樹與檔案捆綁在一起,對其繼承者來說可能是便利多于必要。因此,它很有可能提供有關創建檔案的時代和文化的背景,而不是作為新的和不可獲得的知識的來源,當然,也有想象中的未來,它將發揮后一種作用。

以下是對每個部分的簡要總結,描述了它所涵蓋的一般主題。

計算機和互聯網基礎

這些書籍描述了什么是計算機,從硅開始,到電、晶體管、二進制邏輯、數字門、比特、字節、芯片、ALUs、微處理器、軟件等,并介紹了它們的功能。它還包括,從更高的層次描述計算機如何連接在一起,以及這意味著什么的書籍。

算法和數據結構

計算機和軟件工程的基礎;描述了數據如何被結構化和存儲,及數據最有效和最高效的處理方式。

編譯器、匯編器和操作系統

檔案計劃的目的是保存軟件,而這些是軟件的基本構件。這些書有助于解釋高級語言軟件如何變成底層文件的。

編程語言

編程語言有數百種,如果你是開發人員,計算機歷史博物館里那張可視化的巨大圖表值得一看,我們并不打算將它們全部記錄下來。不過,對世界上一些主要語言進行易懂的長篇描述似乎還是可取的。

網絡和互連

計算機是偉大的,但從某種程度上,它屬于 20 世紀;至少可以說,網絡計算機才是 21 世紀真正的技術革命。因此,我們的網絡協議和技術值得給予重視。我們可能希望我們的繼承者要么早已超越了我們的網絡,要么可以自由地重新設計,而不是被我們為了向后兼容而需要做出的所有妥協所束縛,但無論如何,希望他們能從我們的工作中學習到一些東西。

現代軟件開發

編寫軟件的逐行行為與開發、測試、集成和部署軟件的團隊過程完全不同。這里將介紹一些關鍵的方法、工具和角色,出于顯而易見的原因,其中包括解讀 Git 本身。

現代軟件應用

要想描述軟件的所有用途,需要的是一片技術森林,而不是一棵樹。然而,一些關于單個項目和庫如何編織成強大的網絡應用的描述似乎很有價值,對虛擬化、"大數據" 軟件、特別是機器學習等的概述也是如此。

硬件架構

從單個模擬晶體管到現代多核處理器,其復雜程度不用說,很難概括。本章試圖描述數字電路和微處理器的基礎知識,以及一些關鍵的參考資料,然后再介紹硬件架構和硬件設計語言。

硬件開發

這里我們嘗試提供一些計算機 I/O 設備之外的硬件開發實例和講解,如成像、無人機和機器人。

電子元器件,晶體管,半導體制造

對基本電子元件和以晶體管為基礎的電路進行更深層次的分析,以及描述光刻和芯片制造的教科書。顯然,這種制造基本上不可能從頭開始重現 (摩爾鮮為人知的第二定律描述了制造者的成本如何隨著芯片密度的降低而增加),但可以想象,這些著作可能具有歷史甚至實際意義。

無線電、電視和其它工業技術

描述有助于界定我們這個時代的其它技術,從電力到無線電和電視。

前工業技術

這些作品針對的是檔案館繼承人的 “浪漫災難”形象,他們試圖從工業化前的零開始重新啟動所有現代技術文明。這種可能在未來確實存在,盡管它們似乎不太可能;此外,這些作品似乎有可能幫助填補歷史知識中出現的空白。

我們認為,婦女在創立和塑造計算機和技術方面所發揮的獨特作用,她們應該有屬于自己的章節。婦女在這一領域的被抹殺意味著,原始資料整理所占用的時間(如女性撰寫的書籍),歷史學家發現婦女的貢獻相當重要。包括這一部分,我們應當承認這項工作。特別感謝 Mar Hicks;本節中的許多參考文獻借用了他們在威斯康星大學麥迪遜分校開設的 "Women in Computing" 課程。其中還包括討論科技對女性負面影響的文獻。

語言

專業語言學建議是,與流行的看法相反,英語句法和語法的變化已經大大放緩,除非發生一些大規模的災難,否則英語很有可能在一千年后仍然存在,并在很大程度上可以識別。為了對沖我們的賭注,雖然,我們在檔案的每一卷中都包含了翻譯成阿拉伯語、印地語、西班牙語和漢語的 “羅塞塔”指南,以及每一種可用書面語言的《世界人權宣言》,并將同樣在這里包含字典和幾本語言學著作。

小說、文化和歷史

我們堅信,文化往往可以通過偉大的小說作品得到最好的表達。因此,我們試圖收集一份著名的文學作品清單(包括 / 從一些非小說書開始),以在人類層面上傳達我們時代的歷史和文化。

文化背景

技術樹的這一部分旨在傳達我們文化中有用的信息,同時也是對編寫檔案時情況的描述。它將由編碼數據組成,而不是圖像頁面。

維基百科雖然不是沒有缺陷和遺漏,但它是 "我們世界的書面總結" 的最現成的代表。請注意,這一部分絕不是為了完整地描述今天的人類:正如我們的顧問所強調的那樣,這個時代很可能是所有人類歷史中記錄得最好的時代,而且這種信息不太可能很難找到。相反,它的目的是為了方便向檔案的繼承人表明檔案編寫時代的具體、特殊背景。

GitHub 北極代碼庫

技術樹是 GitHub Arctic Code Vault 的配套作品,它將包含一個索引,其中包含北極代碼庫中存儲的所有 GitHub 倉庫的名稱、簡要描述和電影卷號,即截至 2020 年 2 月 2 日的每個活躍的公共 GitHub repo。

這個索引還將突出顯示 15000 個 GitHub 倉庫,這些倉庫在編寫檔案時是最高星級或最多依賴的。這些資源庫也將被存儲在檔案的兩卷 “最熱門”子集中,將與 Oxford's Bodleian 圖書館等合作伙伴共同保存)。

值得注意的是,北極密碼庫的每一個卷軸也有自己的索引,逐項列出其內容,以及解讀該卷軸中存儲的信息所需的所有說明和信息。這個主索引將是所有這些索引的超集,以便繼承人備份和使用。