雷神

首页 » 常识 » 问答 » 惊艳全世界的代码,值得被更多人看到读
TUhjnbcbe - 2023/6/14 8:35:00
北京皮炎医治医院 http://baidianfeng.39.net/a_yufang/210112/8582670.html

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

图源:unsplash

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

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

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

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

阿波罗11号制导计划

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

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

AGC月球模块的部分代码

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

雷神之锤III竞技场

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

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

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

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

GNU编译器集合

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

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

Chromium

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

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

Chromium组织良好的抽象用户界面控件

此外,该代码库还包括ChromiumAndroid和iOS应用程序的源代码。构建一个大规模的跨平台应用程序可能有点复杂。然而,Chromium对Linux、Windows和Mac平台特定的代码进行了分离,让人印象深刻。

Gitk

如今,Git帮助几乎所有软件开发团队管理编码历史和版本。Git最初是由Linux内核的创始人LinusTorvalds创造。事实上,Git的代码库包含一个神奇的作品,那就是Gitk的源文件。Gitk是一个图形用户界面应用程序,帮助我们进行可视化的浏览提交。我们可以使用以下CLI命令来比较两次提交之间的差异。

$gitdiff

1
查看完整版本: 惊艳全世界的代码,值得被更多人看到读