当前位置: 首页 > 科技观察

每个程序员都应该学习的优秀开源代码

时间:2023-03-19 20:30:35 科技观察

我通常在空闲时间浏览Github存储库。此外,当我开始使用新的计算机软件、工具或实用程序时,我喜欢了解特定软件的工作原理。大多数时候,我会查看它的代码库,看看它是如何与内部模块和外部依赖项完美配合的。几年前,我正在研究Python语言实现的源代码。在此之后,我注意到几个C源文件并弹出来检查GNUC编译器集合的实现。我发现这个现代C编译器本身就是用C编写的。了解事物的内部结构并深入了解,可以带给我们惊人的感受和丰富的知识。过去的开发人员付出了巨大的努力,为现代开发人员创造了一个和平的世界。但是,作为现代开发人员,我们应该感谢他们的出色工作。当我浏览Github存储库时,我注意到世界各地的开发人员所做的以下令人印象深刻的工作。阿波罗11号引导计划阿波罗11号是人类首次成功登月。航天器的控制由只有4KB物理内存的阿波罗制导计算机(AGC)支持。AGC的软件是用AGC汇编语言编写的,存储在一种叫做ropememory的特殊只读存储器中。前段时间把源码的扫描件扫描上传到网上。此后有人将几个模块转换成文本文件并上传到Github存储库。>AGC登月舱代码,作者截图Apollo工程团队付出了很多努力,用汇编语言写了很多行代码,才实现了如此惊人的壮举。在1960年代,编程比现在更难。因为那时候,编程语言的抽象层次较低。此外,程序员必须编写超级优化的代码才能有效地使用硬件。QuakeIIIArena是由idSoftware开发的第一人称射击视频游戏。它是在90年代开发的,当时3D游戏行业刚刚开始使用idTech3游戏引擎进行开发。那时候硬件资源非常有限。因此,游戏开发人员必须仔细编写优化代码来呈现图形元素。许多游戏编程计算都需要向量归一化的概念,这就产生了平方根反比计算的要求。如前所述,开发人员必须为这些与计算机图形相关的工作选择最高效的算法。因此QuakeIIIArena团队使用了一种非常聪明的方法来进行快速平方根反比计算,如下所示,使用位级计算。>QuakeIIIArena中的快速平方根反函数,作者截图这段代码中使用的优化级别以及为90年代如此出色的计算机游戏编写的整个代码显然是惊人的。今天,游戏开发通常不处理这种级别的计算,因为物理功能已经由游戏引擎实现。GNUCompilerCollectionC编程语言就像现代计算之父,因为它通过提供良好的人类可读抽象级别与硬件保持非常接近。实际上,GNUC编译器已启动。换句话说,它是使用编译器自举概念用C编程语言编写的。我注意到我在Github上的GNU编译器集合的代码库中看到的最长的C源文件(可以有比这更长的C源文件,但这是我所看到的)。>GNUCCompiler的C解析器源文件有超过20k行,作者截图GoogleChromeGoogleChrome、MicrosoftEdge和Opera等流行的网络浏览器基于Chromium开源项目,该项目有两个主要依赖项:Blink渲染引擎(aWebkit团队开发的WebCore库的分支)和Chromium项目团队开发的v8JavaScript引擎。毫无疑问,Chromium代码库非常庞大,并且有很多第三方模块,例如gRPC和Skia。然而,Chromium团队以一种很好的方式构建了所有组件。他们明智地将UI相关逻辑和内部功能逻辑分开,以便在整个项目中提供非常好的可维护性因素。>组织良好的Chromium抽象UI控件,作者截图此外,此存储库包含ChromiumAndroid和iOS应用程序的源代码。构建大型跨平台应用程序可能有些复杂。然而,Chromium对Linux、Windows和Mac的平台特定代码进行了令人印象深刻的分离。Git如今,Git帮助几乎每个软件开发团队管理编码历史和版本。Git最初是由Linux内核的创建者LinusTorvalds创建的。的确,Git的代码仓库有一个神奇的作用,那就是Gitk的源文件。Gitk是一个GUI应用程序,可以帮助我们直观地浏览提交。我们可以使用以下CLI命令来检查两次提交之间的差异。$gitdiff然而,因为它是一个可视化工具,Gitk让我们能够如此快速地看到变化。Gitk的整个源代码只是一个文件。它是使用TkUI工具包(它是Tcl的扩展)以Tcl脚本语言编写的。他们通过仅使用一个源文件实现整个GUI应用程序以及选择一种动态编程语言来加速GUI应用程序开发而做得很好。>Gitk被实现为大约12k行的单个源文件,作者截图