全文共2181字,预计学习时长6分钟

图源:unsplash

我很喜欢在闲暇时浏览Github库,我还喜欢在开始使用新的计算机软件、工具或实用程序时,查看特定软件如何运作。大多数情况下,我会查看它的代码库,了解内部模块和外部依赖项的运行方式。

 

几年以前,那时我在研究Python语言实现的源代码。在这期间,我注意到几个C源文件,心血来潮检查了一下GNU C编译器集合的实现方式。我发现现代C编译器是在编译器自身中写就的。

 

了解事物的内在构成并进一步深入追溯丰富了我们的知识,让人惊喜连连。过去的开发者进行了大量的工作,为现代开发者创造了一个和平的世界。然而,作为现代开发者,我们应该欣赏他们令人赞叹的工作。

 

我在GitHub库中发现了来自世界各地的开发人员所编写的惊艳代码,想要在本文中分享给大家。

 

阿波罗11号制导计划

 

阿波罗11号首次将人类成功送上月球。阿波罗制导计算机(AGC)只有4千字节的物理内存,为控制航天器提供支持。AGC软件是用AGC汇编语言编写,并存储在名为rope memory的特殊只读存储器中。

 

前段时间源代码的扫描件上传到了网络,此后,有人将几个模块转换成文本文件,并上传到Github存储库中。

 

AGC月球模块的部分代码

 

取得如此惊人的成就,阿波罗工程团队付出了巨大的努力,用汇编语言编写了大量代码。在20世纪60年代,编程比现在更难,那时的编程语言抽象程度较低。此外,程序员必须编写超级优化的代码来有效地使用硬件。

 

雷神之锤 III 竞技场

 

雷神之锤 III竞技场是id Software于90年代开发的一款第一人称射击游戏。彼时,3D游戏行业刚刚开始使用id Tech 3游戏引擎,与现在相比,硬件资源非常有限。因此,游戏开发人员不得不为渲染图形元素编写精心优化的代码。

 

许多游戏编程计算需要向量规范化概念,这就提出了平方根倒数计算的要求。如上所述,开发人员必须为这些计算机图形相关的工作选择最有效的算法。因此,雷神之锤III 竞技场团队使用了一种非常聪明的方法来快速计算平方根倒数——位级计算,如下所示。

 

雷神之锤 III 竞技场中的快速平方根倒数函数

 

在90年代,这段代码和整个代码的优化水平能创造出如此优秀的电脑游戏,实属惊人。如今的游戏开发一般不处理此种级别的计算,因为物理功能已通过游戏引擎实现。

 

GNU编译器集合

 

C编程语言就像现代计算之父,因其人类可读抽象层次更高,离硬件更近。的确,GNU C编译器自力更生。换句话说,它使用编译器自举概念,用C编程语言本身编写。我注意到在Github上的GNU编译器集合代码库中我见过的最长的C源文件(也许有比这个更长的C源文件,但这是我所见过最长的)。

 

GNU C编译器的C解析器源文件有两万多行

 

Chromium

 

Google Chrome、Microsoft Edge和Opera等流行的网络浏览器是基于Chromium开源项目的,Chromium开源项目有两个主要依赖项:Blink渲染引擎和v8 JavaScript引擎,前者是WebCore库的分支,由Webkit团队从KHML/KJS分支开发而来,后者由Chromium项目团队开发。

 

毋庸置疑,Chromoim代码库非常庞大,拥有如gRPC和Skia等诸多第三方组件。然而,Chromium团队以出色的方式构建了所有组件。他们明智地将用户界面相关逻辑和内部功能逻辑分开,在整个项目中实现了极佳的可维护性。

 

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的整个源代码只是一个文件,是Tcl脚本语言使用Tk UI-toolkit编写的,Tk UI-toolkit是Tcl的扩展。他们已经做了大量的工作,用单个源文件实现完整的图形用户界面应用程序,并且选择一种动态编程语言加快图形用户界面应用程序的开发。

 

Gitk是作为一个大约12000行的单一源文件实现的

 

这些惊艳了整个世界的代码,值得被更多人看见!


推荐阅读专题

留言点赞发个朋友圈

我们一起分享AI学习与发展的干货

编译组:张月星、麻宸菲

相关链接:

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

如转载,请后台留言,遵守转载规范

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

2018年AI三大顶会中国学术成果全链接

ACL2017论文集:34篇解读干货全在这里

10篇AAAI2017经典论文回顾

长按识别二维码可添加关注

读芯君爱你

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐