GitHub北极代码库:科技树

2020-08-10 19:26:52

PermalLink GitHub是5000多万开发人员的家园,他们一起工作,共同托管和审查代码、管理项目和构建软件。

报名。

下面我们称之为技术树,它是一组作品,旨在描述当今世界是如何制造和使用软件的,以及计算机是如何工作的,以及制造和使用计算机所需的基础技术的概述。GitHub存档计划的目的是为子孙后代保存开放源码软件。这也意味着保存开源软件运行在其上的其他技术的知识,以及使该软件成为现实的开源运动的描述。

除了此技术文档,我们还包括一系列艺术、文化和历史作品,以帮助描述创建此档案的总体文化背景,以及一系列词典,以帮助翻译成世界上使用最广泛的几种其他语言。

“科技树”的这个初版将几乎全部由先前存在的作品的副本组成,这些作品中没有一个是在很长一段时间里为未知的观众写的。因此,与其说它是一个指南,不如说它是我们希望具有历史意义和/或有用的资源的集合。我们试图在抽象/理论和具体/实际工作之间取得平衡,并至少提供现代软件工程所依赖的整个技术堆栈的概述。

请注意,本文件目前是我们可能希望包括的作品的松散愿望清单,我们将其公之于众是为了积极征求进一步的建议和投入,而不是最终的入选作品登记。还要注意的是,以人类可读的形式将作品复制到缩微胶片上的前景既意味着潜在的版权问题,也意味着获得有关作品的可复制数字版本的实际考虑。某些出版商(Packt,Reilly,Springer和Wiley)已经表示他们很高兴与我们合作,而大多数其他出版商和版权所有者的地位仍然不确定。

计算和互联网的基本原理:计算机如何工作的基本原理,以及至少对当今世界同样重要的是,它们如何连接成一个包括地球上大多数计算机的单一行星网络。

算法和数据结构:以有效方式排列数据以解决常见问题的过程、规则集和方法。打个比方说,算法是软件程序中的智能,数据结构是软件程序的存储。

编译器、汇编器和操作系统:编写的源代码如何变成机器代码,使计算机内部的电信号以受控方式改变;以及操作系统理论,即支持计算机的基本功能并提供所有其他软件最终调用的基本、低级功能的软件。

编程语言:详细介绍一些世界上最流行和使用最广泛的编程语言。虽然从根本上说,任何程序都可以用任何语言编写,但某些语言在特定任务中会更好或更差。

网络和连接:计算机如何通过物理线路和无线电信号在更大的网络中一对一地相互连接。包括对全球网络结构的描述,该网络结构称为Internet,它连接了地球上的大多数计算机。

现代软件开发:大规模处理软件项目、工具和服务的过程和过程,并以保证的质量水平进行持续的监控和沟通。

现代软件应用:深入描述Web开发(Web本质上是互联网上用于显示输出和接收人类输入的那部分);科学研究和分析;图像处理;通过神经网络进行模式识别和生成;分布在许多不同计算机上的软件;可用作不可信赖分散软件平台的加密货币;以及量子计算的新领域。

硬件架构:计算机硬件的概念、结构和布局。硬件指的是物理电子组件;硬件体系结构指的是这些组件的结构和连接方式,以便运行软件;而软件最终成为这些物理组件中短暂的电力模式。

硬件开发:如何通过收集的电子元件以及无人机、机器人和数码相机的技术描述来构建简单的计算机。

电子元件、晶体管、半导体制造:那些早于计算机的电子元件,以及制造计算机的单个晶体管,以及大规模制造互连晶体管的技术和工艺概述。

电力、无线电和其他工业技术:基本的前计算机技术,涉及产生可用电力、通过电线传输、使用它通过无线电远距离无线传输信息,以及基本的工业金属加工。

妇女与技术:概述妇女在软件和其他技术发展中经常被抹去的作用。

语言:一本英语词典和翻译词典,旨在帮助读者将英语转换成阿拉伯语、汉语、印地语和西班牙语,这是世界上其他四种最常用的语言。

艺术、文化和历史:人类历史和不断变化的人类文化,主要通过过去150年来写的著名虚构故事的镜头。

文化背景:创建科技树时关于人类的信息;特别是维基百科(Wikipedia)的快照,维基百科是一个集体生成的关于我们世界的各种信息的存储库。由于维基百科的巨大规模,这一部分是以编码数据的形式提供的,就像档案的其余部分一样,而不是以可视/可读的页面形式提供。

前七个部分专门介绍软件、GitHub北极代码库的目的和内容,以及它的用途和应用。接下来的五个部分描述了构建可在其上运行软件的计算机所需的技术。剩下的三个是为了说明这些技术发展的人文背景,我们这个时代的文化讲述的故事,我们用什么语言告诉他们,以及我们生活的世界的事实背景和描述。

科技树是更大的GitHub北极代码库的一部分。因此,作为附录,它还包括GitHub代码存储库指南的可视副本,以及归档的15000个最重要代码存储库的索引,包括简要说明和归档中的位置。

也许值得注意的是,我们的顾问委员会强调,到目前为止,我们的时代很可能是人类历史上有最好记录的时代,因此将科技树与档案捆绑在一起对其继承人来说可能比必要的更方便。因此,它的价值完全有可能--确实很有可能--主要是提供关于创建档案的时代和文化的背景,而不是作为新的和不可用的知识的来源,尽管当然有可以想象的未来,它在其中扮演着后一种角色。在这种情况下,它的价值将在很大程度上包括提供关于创建档案的时代和文化的背景,而不是作为新的和不可用的知识的来源。

下面是每个部分的简要摘要,描述了它涵盖的一般主题,以及“技术树”包含的用来记录我们当前对这些主题的理解的作品。

这些书描述了计算机是什么,从硅片开始--电、晶体管、二进制逻辑、数字门、位、字节、芯片、算术逻辑单元、微处理器、软件--并介绍了它们能做什么。它还包括高层次地描述计算机如何连接在一起以及这意味着什么的书籍。有关工程包括:

“计算系统的元素:从第一原理建造一台现代计算机”,诺姆·尼桑著(麻省理工学院出版社)。

《网络入门:互联网是如何工作的》(Introduction to Networking:How the Internet Works),作者:毛罗·托塞利(Mauro Toselli)和艾米·安德里昂(Aimee Andrion。

这些是计算机科学的基础,因此也是软件工程的基础;描述数据是如何组织和存储的,以及处理数据的最有效和最高效的方法。

顺序和并行算法和数据结构,作者:Peter Sanders,Kurt Mehlhorn,Martin DietzFelbinger,Roman Dementiev(Springer)。

存档计划的目的是保存软件,而这些是软件的基本构件。这些书籍有助于解释高级编写的软件是如何变成低级电脉冲的:

编译器:阿尔弗雷德·V·阿霍(Alfred V.Aho)、莫妮卡·S·林(Monica S.Lam)、拉维·塞蒂(Ravi Sethi)和杰弗里·D·乌尔曼

Keith Cooper和Linda Torczon(Elsevier)的Engineering a Compiler或Dick Grune,Kees van Reeuwijk,Henri E.Bal,Ceriel J.H.Jacobs,Koen Langdoen(Springer)的现代编译器设计。

有成百上千种编程语言;如果您是开发人员,那么计算机历史博物馆中展示它们演变的巨大图表值得一看,而我们并不打算将它们全部记录在案。尽管如此,对世界主要语言精选的易于阅读的书籍长度的描述似乎是令人向往的。

“艰难地学习C”,泽德·肖(皮尔森)或Head First C,大卫·格里菲斯,道恩·格里菲斯(O';赖利)。

艾伦·A·A·多诺万(Alan A.Donovan)和布莱恩·W·科尼根(Brian W.Kernighan,皮尔森)的围棋编程语言,或杰伊·麦加夫伦(Jay McGavren)的Head First Go。

Tim Lindholm、Frank Yellin、Gilad Bracha和Alex Buckley(Pearson)的Java虚拟机规范。

计算机是伟大的,但在某种程度上,它是20世纪的联网计算机,至少可以说,它是21世纪真正的技术革命。因此,我们的网络协议和技术值得高度关注。我们可能希望我们的继承人要么早就超越了我们的网络,要么可以自由地重新设计,而不是被我们为了向后兼容而需要做出的所有妥协所束缚,但无论哪种方式,我们都希望他们能从我们所做的事情中学到一些东西。其描述如下:

布线:安德鲁·奥利维罗(Andrew Oliviero)和比尔·伍德沃德(Bill Woodward,威利)著的铜缆和光纤网络完整指南。

HTTP:大卫·古利(David Gourley)、布莱恩·托蒂(Brian Totty)、玛乔丽·塞耶(Marjorie Sayer)、安舒·阿加瓦尔(Anshu Aggarwal)和赛鲁·雷迪(Sailu Reddy)的最终指南

逐行编写软件的行为与逐个团队开发、测试、集成和部署软件的过程截然不同。这里描述了一些关键的方法、工具和角色,其中包括(出于显而易见的原因)解压缩Git本身。

公开工作:纳迪亚·埃巴尔(Nadia Eghbal)所著的开源软件的制作和维护。

“敏捷测试:面向测试人员和敏捷团队的实用指南”,作者:丽莎·克里斯平和珍妮特·格雷戈里(Addison Wesley)。

马丁·福勒与Dave Rice、Matthew Foemmel、Edward Hiatt、Robert Mee和Randy Stafford(Addison Wesley)合著的企业应用架构模式。

“加速:精益软件和开发运营的科学”(Accelerate:The Science of Lean Software and DevOps),作者:Nicole Forsgren、Jez Humble和Gene Kim(IT革命)。

DevOps手册:如何在技术组织中创建世界级的敏捷性、可靠性和安全性,作者:Gene Kim、Jez Humble、Patrick Debois和John Willis(IT革命)。

“现场可靠性工程”编辑:Betsy Beyer,Chris Jone,Jennifer Petoff&Amp;Niall Richard Murphy(O';Reilly)。

要想描述软件的所有用途,甚至需要一片科技森林,而不是一棵树。然而,关于单个项目和库如何组合成强大的网络应用程序的一些描述似乎很有价值,例如虚拟化、大数据软件,特别是机器学习的概述也是如此。

哈尔·瓦里安、约瑟夫·法雷尔和卡尔·夏皮罗的“信息技术经济学”(剑桥大学出版社)。

不用说,从单个模拟晶体管到现代多核处理器的复杂程度很难概括。本节试图在介绍硬件架构和硬件设计语言之前,先描述数字电路和微处理器的基础知识,以及一些关键参考资料。

完全数字设计:数字电子和计算机系统架构综合指南,作者:Mark Balch(Wiley)--。

在这里,我们尝试提供一些除了计算机I/O设备之外的硬件开发的示例和解释:成像、无人机和机器人。

对基本电子元件和基于晶体管的电路进行更低级的分析,以及描述光刻和芯片制造的教科书。显然,这样的制造基本上不可能从无到有(摩尔鲜为人知的第二定律描述了制作者成本是如何随着芯片密度的降低而增加的),但可以想象,这些工作可能具有历史意义,甚至具有现实意义。

“半导体制造和过程控制的基础”,加里·S·梅和科斯塔斯·J·斯潘诺斯(威利)。

描述帮助定义我们这个时代的其他技术,从电网到广播和电视。

电力电子的电感器和变压器,Vencislav Cekov Valchev,Alex Van den Bossche(CRC)

这些作品讲述了档案馆传承人的浪漫灾难形象,他们试图从头开始重启所有现代科技文明。这种可能的未来确实存在,尽管它们看起来不太可能;此外,这些作品似乎可能有助于填补历史知识中出现的空白。

由Estée Török、Ed Moran和Fiona Cooke著的“牛津传染病和微生物学手册”(OUP)。

我们相信,女性在创建和塑造计算机和技术方面的独特作用值得有自己的一节。女性在这一领域的消失意味着并不总是有来自最初贡献时间的主要来源(比如女性写的书),历史学家们发现女性的贡献是相当重要的。包括这一部分可以让我们适当地承认这项工作。特别感谢Mar Hicks;本节中的许多参考资料都引用了威斯康星大学麦迪逊分校的女性计算机课程。我们还收录了讨论科技对女性负面影响的文献。

“艾达的算法:拜伦勋爵的女儿艾达·洛夫莱斯如何开启数字时代”,詹姆斯·埃辛格著(梅尔维尔·豪斯出版社出版)。

编程不平等:英国如何抛弃女性技术专家并失去其在计算领域的优势(马尔·希克斯著)(麻省理工学院出版社)。

先锋程序员:让·詹宁斯·巴蒂克和改变世界的计算机(Jean Jennings Bartik And The Computer That Change The World),琼·T·里克曼(Jon T.Rickman)和金·D·托德(Kim D.Todd)编辑(杜鲁门大学出版社)。

“隐藏的人物:四个黑人女性的真实故事和太空竞赛”,玛戈特·李·谢特利著(威廉·莫罗平装书)。

我们的专业语言学建议是,与普遍认为的相反,英语句法和语法的漂移已经大幅放缓,除非发生一些大灾难,否则英语很有可能在一千年后既能幸存下来,又能被大体上辨认出来。然而,为了对冲我们的赌注,我们在档案馆的每一卷档案中都包括了一份翻译成阿拉伯语、印地语、西班牙语和中文的指南,以及每种可用的书面语言的《世界人权宣言》,同样也将在这里包括字典和几部语言作品。

我们相信,文化往往通过伟大的小说作品得到最好的表达。因此,我们试图收集一份著名文学作品的清单(包括/从几本非虚构类书籍开始),以在人的层面上传达我们这个时代的历史和文化。它们是:

科技树的这一部分旨在传达来自我们文化的有用的实用信息,以及对档案编写时的情况的描述。“科技树”的这一部分旨在传达我们文化中有用的实用信息,以及对档案撰写时的情况的描述。它将由编码的数据组成,而不是图像页面,很大程度上是因为它的核心部分-维基百科的快照-对于后一种格式来说太大了。

维基百科虽然不是没有缺陷和遗漏,但它是对我们世界的书面总结的最容易获得的代理。请注意,这一部分绝不是对当今人类的完整描述:正如我们的顾问强调的那样,这个时代很可能是人类历史上记录最好的时代,这样的信息不太可能很难找到。相反,它的目的是方便地向档案继承人表明档案编写时所处时代的具体、特定的背景。

由于技术树是GitHub北极代码库的配套项目,因此它将包含存储在北极代码库中的所有GitHub储存库(即截至2020年2月2日的每个活跃的公共GitHub储存库)的名称、简要描述和胶片片号的索引。

该索引还将突出显示15,000个GitHub存储库,这些存储库在编写归档时是最受欢迎或最依赖的。(这些存储库也将存储在档案馆的两卷最热门图书子集中,与牛津大学Bodleian图书馆等合作伙伴一起保存。)(这两个库也将存储在档案馆的两卷最热门图书子集中,与牛津大学博德莱恩图书馆(Bodleian Library)等合作伙伴一起保存。)。

值得注意的是,北极代码库的每个单独的卷轴也有自己的索引,逐项列出其内容,以及解码该卷轴中存储的信息所需的所有指令和信息。这个主索引将是所有这些索引的超集,作为档案继承人的备份和便利。