写点什么

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

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:001743

评论

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

阿里P8大牛力荐:Java程序员进阶必读的书籍清单(附电子版)

Java成神之路

Java redis 编程 程序员 JVM

架构师训练营第十二周作业

叮叮董董

如何实现特定列脱敏?这两种方法你都要会

华为云开发者社区

postgresql 数据 脱敏 匿名 视图

sed命令基础

飞翔

Linux

GitHub上120K Stars国内第一的Java多线程PDF到底有什么魅力?

你看起来很好吃

Java 程序员 并发编程 多线程 架构师

区块链跨境支付系统开发方案|usdt跑分系统搭建

WX13823153201

架构师训练营十二周作业

方堃

Spring+多线程+集合+MVC+数据结构算法+MyBatis源码学习笔记分享

Java成神之路

Java spring 编程 程序员 多线程

真香警告!手绘172张图解HTTP协议+703页TCP/IP协议笔记

你看起来很好吃

Java 程序员 架构师 计算机

计算机网络基础(二十二)---传输层-套接字与套接字编程

书旅

TCP 计算机网络 TCP/IP

架构师训练营第十二周总结

邵帅

疫情对在线教育的影响

anyRTC开发者

在线教育 直播 RTC 安卓

USDT承兑支付系统开发技术方案|跑分系统搭建

WX13823153201

USDT承兑支付系统开发

3种 Springboot 全局时间格式化方式,别再写重复代码了

程序员内点事

Java springboot

架构师训练营第十二周作业

邵帅

GitHub上的今年第一本《Java异步编程实战》美团T9亲荐,太赞了

你看起来很好吃

Java 程序员 架构师 异步编程

京东T9今年首发的一份Spring Boot实战,让开发像搭积木一样简单

你看起来很好吃

Java 编程 程序员 架构师 计算机

听说,阿里云给它的 OpenAPI 开发了一套编程语言

郭旭东

阿里云 OpenAPI

全网都在跪求的阿里Java修炼开发技术笔记,终于开放下载了

你看起来很好吃

Java 编程 架构师 后端开发

Github下载即将破百万的PDF:双十一高并发亿级流量秒杀顶级教程

你看起来很好吃

Java 编程 程序员 秒杀 计算机

易观郭炜:流动水系数造未来

易观大数据

云计算、人工智能、大数据技术三者之间的关系

抖码算法

人工智能 云计算 大数据

使用 Next.js , Nexus, Prisma 构建全栈项目

夏木

nextjs prisma graphql fullstack

TCP/IP协议族(第四版)已出,不愧是世界计算机优秀畅销精选书籍

你看起来很好吃

Java 编程 架构师 TCP/IP 协议族

Redis问的太深入,面试官说:你先回去等通知吧

你看起来很好吃

Java redis 编程 程序员 架构师

架构师培训十二周练习

小蚂蚁

除了方文山,用TA你也能帮周杰伦写歌词了

华为云开发者社区

AI 数据 周杰伦 modelarts 歌词

大数据解答(一)

dony.zhang

大数据 mapreduce

2. Bean Validation声明式校验方法的参数、返回值

YourBatman

参数校验 Hibernate-Validator Bean Validation 方法校验

我们从Kubernetes发展中学到了什么(1)

华宇法律科技

Kubernetes 容器 k8s

膜拜!京东T9大牛沉淀三年终于整理出了这份架构核心修炼之道

你看起来很好吃

Java 编程 程序员 架构师 计算机

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

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