写点什么

每一位程序员都应该学习的优秀代码

2021 年 2 月 21 日

每一位程序员都应该学习的优秀代码

有时,开发人员编写的代码对硬件的利用能达到让人惊叹的地步,并给整个世界留下深刻的印象。


当我闲暇时,我会浏览 Github 的代码库。使用新的计算机软件、工具或实用程序时,我也喜欢琢磨下它的运行机制。通常情况,我会研究它的代码库,以了解其内部模块和外部依赖是如何有机结合来完成工作。


几年前,我查看 Python 语言代码时,突然发现了一些 C 语言编写的源文件,并检查了 GNU C 编译器集合的实现。我发现这个先进的 C 语言编译器就是用 C 语言编写的。学习事物的内部结构并深入了解,可以颠覆我们的认知并学到丰富的知识。过去的开发人员通过自己的辛勤工作,为现代开发人员创造了一个太平的世界。作为现代开发人员,我们应该感谢他们的出色工作。


当我浏览 Github 代码库时,我注意到各地的开发人员完成了以下的杰作。

阿波罗 11 号导航计算机(AGC)


阿波罗 11 号使人类第一次成功地登上了月球。只有 4KB 物理内存的阿波罗导航计算机(AGC)完成了对航天器的控制。AGC 的软件以 AGC 汇编语言编写,并存储在称为磁心线储存器(ropememory)的特殊只读存储器中。之前有人将源代码的扫描副本上传到了 Internet。然后,这几个模块被转换为文本文件,并上传到了 Github 代码库。



AGC 登月模块中的代码片段,作者截图


阿波罗(Apollo)工程团队付出了巨大的努力,编写大量的汇编代码来取得如此惊人的成就。在 1960 年代,编程可比现在困难多了。因为在那时,编程语言多为低级语言,需要直接操作硬件。所以,程序员必须编写精心优化的代码来提高硬件使用效率。

雷神之锤 III 竞技场


雷声之锤 III——竞技场是由 id Software 开发的第一人称射击游戏。它开发于上世纪 90 年代,当时由于 id Tech3 等游戏引擎的技术的出现,3D 游戏行业开始兴起。不像现在,那时候硬件资源非常有限。因此,游戏开发人员必须编写精心优化的代码以实现图形元素的渲染。许多游戏编程都需要实现矢量归一化,这提出了对平方根倒数运算的需求。如前所述,开发人员必须为这些与图形计算相关的工作选择最有效的算法。因此,雷声之锤 III——竞技场开发团队使用一种非常聪明的方法进行平方根倒数运算,比如下面这样使用位级计算。



雷神之锤 III 竞技场中的平方根倒数快速算法,作者截图


这段代码的优化水平以及在 90 年代就能开发出如此出色的计算机游戏这一事实,真的很让人惊讶。如今,游戏开发通常不需要处理这一级别的计算,因为物理函数已经由游戏引擎实现。

GNU 编译器代码集


C 语言是高级编程语言的鼻祖,因为它既非常靠近硬件又能提供良好的可读性。作为 C 语言的编译器,GNU 是自引导的。换句话说,它是应用编译器引导概念的 C 语言程序。Github 上的 GNU 编译器代码库中的这个文件是我见过的最长的 C 语言源文件(可能有比这更长的 C 语言源文件,但是我没见过)。



GNU C 编译器中的解析器的源文件有 2 万多行代码,作者截图

Chromium


流行的 Web 浏览器(例如 Google Chrome,Microsoft Edge 和 Opera)很多是基于 Chromium 开源项目,该项目有两个主要依赖:1)Blink 渲染引擎。它是 WebCore 库的一个分支,该库由 Webkit 团队基于 KHTML/KJS 进行开发;2)v8 JavaScript 引擎。该引擎由 Chromium 团队开发。毫无疑问,Chromium 代码库非常大,并且依赖很多第三方模块,例如 gRPC 和 Skia。但是,Chromium 团队以一种非常优雅的结构来组织所有组件。他们非常明智地将用户界面和内部函数分开,以提高整个工程的可维护性。



划分良好的 ChromiumUI 组件抽象层的目录结构,作者截图


此外,此代码库还包含 Chromium Android 和 iOS 手机端程序的源代码。大规模的跨平台应用程序目录结构的划分可能会有些复杂。但是,Chromium 对 Linux,Windows 和 Mac 不同平台代码目录结构的划分做的非常棒。

Gitk


如今,基本上每一个软件开发团队都会使用 Git 来进行代码历史和版本的管理。Git 最初由 Linux 内核的创始人 LinusTorvalds 开发。确实,Gitk 的源文件的 Git 代码中一个神奇的模块。Gitk 是一个 GUI 应用程序,可以让我们以可视化方式浏览历史提交记录。我们可以使用以下的 CLI 命令来比较两次提交之间的差异。


$ git diff <commithash> <commithash>
复制代码


但是,借助 Gitk 的可视化展示方式,我们可以更快速地明白不同提交之间的差异。Gitk 的整个源代码只有一个文件。它是使用 Tk UI 工具包(Tcl 的扩展程序)以 Tcl 脚本语言编写的。它仅仅通过一个源文件就实现了整个 GUI 应用程序,还选择了一种动态编程语言来大大加快 GUI 应用程序的开发速度。



Gitk 由约 1 万 2 千行代码的单个源文件来实现,作者截图


原文链接:


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

2021 年 2 月 21 日 15:001474

评论

发布
暂无评论
发现更多内容

编程的本质

GalaxyCreater

架构

第 02 周作业

夏秋

极客大学架构师训练营

作业

chenzt

架构师训练营第二周学习总结

王鑫龙

极客大学架构师训练营

第 02 周学习总结

夏秋

银行业数据治理之「数据资产管理」

数据司令

大数据 数据仓库 金融科技 数据治理 数据资产

江帅帅:精通 Spring Boot 系列 05

奈学教育

Spring Boot

【架构师第二周作业】依赖倒置

浪浪

江帅帅:精通 Spring Boot 系列 05

古月木易

Spring Boot

聊聊面向对象的设计(OOD)原则

Jerry Tse

极客大学架构师训练营 作业

架构师训练营第二周作业

Jerry Tse

极客大学架构师训练营 作业

架构师训练营2 ——框架设计

默默

【漫画】云通信企业公众号,打造私域流量的利器

阿里云Edge Plus

云通信

0期架构Week2作业1

Nan Jiang

京东Java高开岗三面算法+数据库+设计模式,复习1个月成功拿offer

互联网架构师小马

数据库 面试 算法 设计模式 Java 分布式

透过本质和发展看编程

拈香(曾德政)

架构师 面向对象设计 极客大学架构师训练营 面向对象设计原则

第二周作业

极客大学架构师训练营

架构师训练营第二周学习总结

whiter

极客大学架构师训练营

架构师训练营第二周命题作业

兔狲

作业

DIP和SIP的理解和学习

拈香(曾德政)

极客大学架构师训练营 面向对象设计原则 DIP 设计原则 SIP

架构师0期week2-作业

小高

豆瓣9.0,35万读者“搜不到信息”的神秘作者,我们帮你找到了

华章IT

JVM 虚拟机 深入理解JVM Java 25 周年 周志明

架构师 0 期 | 架构师怎样实现架构目标?

刁架构

设计模式 极客大学架构师训练营

7-ELEVEn工作法

wujunmin

管理 零售

你不会还不懂依赖倒置吧?赶紧来看看

hellohuan

设计模式 极客大学架构师训练营 设计原则

软件的本质与设计原则

dony.zhang

架构师训练营第二周命题作业

hifly

设计模式 极客大学架构师训练营 UML 依赖倒置原则 接口隔离原则

学习总结 -- Week2

吴炳华

极客大学架构师训练营

设计原则

GalaxyCreater

架构

设计一个软件框架的关键点

dony.zhang

视频豪横时代,应用如何快速构建视频点播能力?

阿里云Edge Plus

音视频 CDN 直播 点播

打造 VUCA 时代的 10 倍速 IT 团队

打造 VUCA 时代的 10 倍速 IT 团队

每一位程序员都应该学习的优秀代码-InfoQ