查看原文
其他

每位开发人员都应该阅读的优秀源代码,长啥样?

Shalitha Suranga CSDN 2020-12-18

作者 | Shalitha Suranga
译者 | 弯月,责编 | 杨碧玉
头图 | CSDN 下载自东方 IC
出品 | CSDN(ID:CSDNnews)

以下为译文:

空闲的时候,我经常浏览GitHub代码库。每当接触新的计算机软件、工具或实用程序时,我也喜欢查看这些软件的工作方式。大多数时候,我都会看一下代码库,了解这些程序是怎样与内部模块以及外部依赖密切配合的。
几年前,我阅读了Python语言的实现源代码。此后,我还阅读了若干C源文件,并突发奇想查看了GNU C编译器集合的实现。我发现这款现代C编译器是用C语言本身编写的。了解事物的内部结构并进一步深入探索,可以为我们带来意外的收获和丰富的知识。前辈们付出了巨大的努力,为现代开发人员创造了一个和平的世界。但是,作为现代开发人员,我们应该对他们出色的工作心存感激。
在浏览GitHub代码库时,我注意到了下列来自全世界各地开发人员贡献的优秀源代码。


阿波罗11号制导计划

 
阿波罗11号是第一个人类成功登上月球的项目。为控制航天器提供了支持的阿波罗制导计算机(ApolloGuidance Computer,AGC)只有4KB的物理内存。AGC的软件是使用AGC汇编语言编写的,存储在特殊的只读存储器绳索存储中。很久以前,有人扫描了阿波罗11号的源代码,并将这些副本上传到了互联网。此后,有人将几个模块转换为文本文件,然后上传到了GitHub代码库(https://github.com/chrislgarry/Apollo-11)。

阿波罗的工程团队付出了巨大的努力,使用汇编语言编写了大量代码,才取得了如此惊人的成就。在1960年代,编程的难度远非今昔可比。因为在那时,编程语言的抽象级别非常低。此外,程序员还必须编写超级优化的代码,才能有效地利用软件。


雷神之锤3竞技场

 
雷神之锤3竞技场是一款由id Software开发的第一人称射击游戏。该游戏于90年代开发完成,当时3D游戏行业刚刚兴起,游戏开发都使用id Tech 3游戏引擎。当时,硬件资源非常有限。因此,游戏开发人员必须编写精心优化过的代码,才能呈现诸多图形元素。许多游戏编程计算都需要进行向量归一化(这一步骤涉及求平方根倒数的计算)。如前所述,开发人员必须选择最有效的算法来处理与计算机图形学相关的工作。因此,雷神之锤3竞技场使用了一种非常聪明的方法,通过位级计算来快速计算平方根倒数,如下所示。

这段代码的优化水平令人惊叹,而且他们在90年代就实现了如此出色的计算机游戏,不得不令人佩服。如今,游戏开发通常不需要处理这种级别的计算,因为物理功能已经由游戏引擎实现。


GNU编译器集合


C语言就像现代计算之父,因为它提供了良好的方便人类阅读的抽象级别,同时又非常接近硬件。而GNU C编译器也是由C语言本身编写的,而且还用到了编译器自举(Bootstrapping)的概念。我在Github上GNU编译器集合的代码库中,看到了有史以来最长的C源文件(可能还有比这更长的,但这是我见过的最长的C源文件)。


Chromium

 
如今,Google Chrome、微软Edge以及Opera等流行的Web浏览器都是在Chromium开源项目的基础之上构建的,该项目由两大主要依赖项:Blink渲染引擎和v8 JavaScript引擎。其中Blink渲染引擎是WebCore代码库的一个分支,由Webkit团队利用KHTML/KJS的一个分叉构建而成;而v8 JavaScript引擎则由Chromium项目团队开发。毫无疑问,Chromium的代码库非常庞大,而且拥有许多第三方模块,例如gRPC和Skia等。然而,Chromium团队以很好的方式成功构造了所有组件。他们聪明地分离了用户界面相关的逻辑和内部功能逻辑,实现了整个项目良好的可维护性。

此外,该代码库还包含Chromium Android以及iOS应用的源代码。构建如此大规模的跨平台应用程序,难度可想而知。然而,Chromium分别针对Linux、Windows和Mac平台,从代码上进行了分离。


Gitk

 
如今,几乎每个软件开发团队都使用Git来管理代码以及版本。最初Git是由Linux内核创始人Linus Torvalds编写的。而Git本身的代码库包含一件神奇的工具,即Gitk的源文件。Gitk是一款图形界面应用程序,可以帮助我们直观地浏览提交的代码。我们可以使用以下CLI命令来检查两次提交之间的差异。
$ git diff <commit hash> <commit hash>
然而,我们可以通过Gitk这款视觉工具,快速看到修改内容。Gitk的整个源代码只有一个文件(https://github.com/git/git/blob/master/gitk-git/gitk)。它使用了Tk UI工具包(Tcl的扩展),以Tcl脚本语言编写而成。Gitk的作者仅通过一个源文件实现整个GUI应用,同时还选择了动态编程语言,开发出了更快的GUI应用程序。

原文:https://medium.com/swlh/impressive-sources-codes-that-every-developer-should-see-b68028b36da5

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐

苹果M1芯片:如何开启一个时代

PHP 还有未来么,还是 25 岁就“寿终正寝”了?

Julia 创始人访谈:简单机器学习任务可与 Python 媲美,复杂任务胜过 Python

深度揭秘垃圾回收底层,这次让你彻底弄懂它

别再问如何用 Python 提取 PDF 内容了!

偷盖茨、奥巴马 Twitter 的黑客被抓了,年轻到你想不到!

点分享点点赞点在看

    您可能也对以下帖子感兴趣

    文章有问题?点此查看未经处理的缓存