22点24分准时推送,第一时间送达

编辑:技术君 | 来源:读芯术

上一篇:

正文

打开网易新闻 查看更多图片

图源: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 hash> hash>

但Gitk允许我们快速地看到修改,它是一个可视化工具。Gitk的整个源代码只是一个文件,是Tcl脚本语言使用Tk UI-toolkit编写的,Tk UI-toolkit是Tcl的扩展。他们已经做了大量的工作,用单个源文件实现完整的图形用户界面应用程序,并且选择一种动态编程语言加快图形用户界面应用程序的开发。

打开网易新闻 查看更多图片

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

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

→ 技术资料共享

→ 技术交流社群

--END--

往日热文:

喜欢本文的朋友们,欢迎长按下图关注订阅号Python人工智能技术

你在看吗?一起成长