12

究竟什么样的代码,能惊艳整个世界?

 3 years ago
source link: https://mp.weixin.qq.com/s?__biz=MzI2NjkyNDQ3Mw%3D%3D&%3Bmid=2247494978&%3Bidx=1&%3Bsn=0ff5536d56144e3e64a0673e571fa4f4
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

EjyQZvZ.jpg!mobile

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

2uARR3B.jpg!mobile

图源:unsplash

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

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

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

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

阿波罗11号制导计划

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

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

fYFBBfR.png!mobile

AGC月球模块的部分代码

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

雷神之锤 III 竞技场

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

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

yMzaUnA.png!mobile

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

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

GNU编译器集合

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

mUBjaqR.png!mobile

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

Chromium

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

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

J3YbIj.png!mobile

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

URrANvj.png!mobile

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

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

VbeE7j.jpg!mobile

推荐阅读专题

IFVZvq.jpg!mobile

6FZjQv.jpg!mobile

m6jER3M.jpg!mobile

iuUFJbn.jpg!mobile

Nbqmy26.jpg!mobile

留言点赞发个朋友圈

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

编译组:张月星、麻宸菲

相关链接:

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

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

推荐文章阅读

ACL2018论文集50篇解读

EMNLP2017论文集28篇论文解读

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

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

10篇AAAI2017经典论文回顾

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

读芯君爱你

7Vjqem.gif!mobile


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK