作者 | Shalitha Suranga

译者 | 弯月,责编 | 杨碧玉

头图 | CSDN 下载自东方 IC

出品 | CSDN(ID:CSDNnews)

以下为译文:

空闲的时候,我经常浏览GitHub代码库。每当接触新的计算机软件、工具或实用程序时,我也喜欢查看这些软件的工作方式。大多数时候,我都会看一下代码库,了解这些程序是怎样与内部模块以及外部依赖密切配合的。

几年前,我阅读了Python语言的实现源代码。此后,我还阅读了若干C源文件,并突发奇想查看了GNU C编译器集合的实现。我发现这款现代C编译器是用C语言本身编写的。了解事物的内部结构并进一步深入探索,可以为我们带来意外的收获和丰富的知识。前辈们付出了巨大的努力,为现代开发人员创造了一个和平的世界。但是,作为现代开发人员,我们应该对他们出色的工作心存感激。

在浏览GitHub代码库时,我注意到了下列来自全世界各地开发人员贡献的优秀源代码。

阿波罗11号制导计划

阿波罗11号是第一个人类成功登上月球的项目。为控制航天器提供了支持的阿波罗制导计算机(ApolloGuidance Computer,AGC)只有4KB的物理内存。AGC的软件是使用AGC汇编语言编写的,存储在特殊的只读存储器绳索存储中。很久以前,有人扫描了阿波罗11号的源代码,并将这些副本上传到了互联网。此后,有人将几个模块转换为文本文件,然后上传到了GitHub代码库(https://github.com/chrislgarry/Apollo-11)。

阿波罗的工程团队付出了巨大的努力,使用汇编语言编写了大量代码,才取得了如此惊人的成就。在1960年代,编程的难度远非今昔可比。因为在那时,编程语言的抽象级别非常低。此外,程序员还必须编写超级优化的代码,才能有效地利用软件。

雷神之锤3竞技场

雷神之锤3竞技场是一款由id Software开发的第一人称射击游戏。该游戏于90年代开发完成,当时3D游戏行业刚刚兴起,游戏开发都使用id Tech 3游戏引擎。当时,硬件资源非常有限。因此,游戏开发人员必须编写精心优化过的代码,才能呈现诸多图形元素。许多游戏编程计算都需要进行向量归一化(这一步骤涉及求平方根倒数的计算)。如前所述,开发人员必须选择最有效的算法来处理与计算机图形学相关的工作。因此,雷神之锤3竞技场使用了一种非常聪明的方法,通过位级计算来快速计算平方根倒数,如下所示。

这段代码的优化水平令人惊叹,而且他们在90年代就实现了如此出色的计算机游戏,不得不令人佩服。如今,游戏开发通常不需要处理这种级别的计算,因为物理功能已经由游戏引擎实现。

GNU编译器集合

C语言就像现代计算之父,因为它提供了良好的方便人类阅读的抽象级别,同时又非常接近硬件。而GNU C编译器也是由C语言本身编写的,而且还用到了编译器自举(Bootstrapping)的概念。我在Github上GNU编译器集合的代码库中,看到了有史以来最长的C源文件(可能还有比这更长的,但这是我见过的最长的C源文件)。

Chromium

如今,Google Chrome、微软Edge以及Opera等流行的Web浏览器都是在Chromium开源项目的基础之上构建的,该项目由两大主要依赖项:Blink渲染引擎和v8 JavaScript引擎。其中Blink渲染引擎是WebCore代码库的一个分支,由Webkit团队利用KHTML/KJS的一个分叉构建而成;而v8 JavaScript引擎则由Chromium项目团队开发。毫无疑问,Chromium的代码库非常庞大,而且拥有许多第三方模块,例如gRPC和Skia等。然而,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的整个源代码只有一个文件(https://github.com/git/git/blob/master/gitk-git/gitk)。它使用了Tk UI工具包(Tcl的扩展),以Tcl脚本语言编写而成。Gitk的作者仅通过一个源文件实现整个GUI应用,同时还选择了动态编程语言,开发出了更快的GUI应用程序。

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

本文为 CSDN 翻译,转载请注明来源出处。

更多精彩推荐
☞苹果M1芯片:如何开启一个时代☞PHP 还有未来么,还是 25 岁就“寿终正寝”了?
☞Julia 创始人访谈:简单机器学习任务可与 Python 媲美,复杂任务胜过 Python☞深度揭秘垃圾回收底层,这次让你彻底弄懂它
☞别再问如何用 Python 提取 PDF 内容了!
☞偷盖茨、奥巴马 Twitter 的黑客被抓了,年轻到你想不到!
点分享点点赞点在看

每位开发人员都应该阅读的优秀源代码,长啥样?相关推荐

  1. 每位开发人员都应铭记的10句编程谚语 (我超喜欢,转载了)

    所谓谚语,就是用言简意赅.通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情.也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己. 1. 无风不 ...

  2. 每位开发人员都应铭记的10句编程谚语

    所谓谚语,就是用言简意赅.通俗易懂的方式传达人生箴言和普遍真理的话,它们能很好地帮助你处理生活和工作上的事情.也正因如此,我才整理了10句编程谚语,每位开发人员都应该铭记他们,武装自己. 1. 无风不 ...

  3. java开发人员_每个Java开发人员都应该阅读的10本书

    java开发人员 我已经阅读了自己的软件开发书籍,并且发现发现一本我想多次阅读的书籍非常罕见. 但是,有时我会发现一本书,每次阅读时都会教给我新的东西. 这篇博客文章是对这些稀有宝石的致敬. 现在,我 ...

  4. 每个Java开发人员都应该阅读的10本书

    我已经阅读了自己的软件开发书籍,并且发现发现一本我想多次阅读的书籍非常罕见. 但是,有时我会发现一本书,每次阅读时都会教给我新的东西. 这篇博客文章是对这些稀有宝石的致敬. 现在,我毫不犹豫地向您介绍 ...

  5. 为什么我建议每个开发人员都需要学Python?不看会后悔!

    世界上只有几种编程语言提供多种功能. 在当今世界,开发人员必须能去构建各种类型的应用程序,所以多学习一种多功能开发语言是有必要的. 虽说php是世界上最好的语言,但这也不妨碍Python成为通用编程开 ...

  6. 每个开发人员都需要学Python?看看大佬是怎么说的!

    世界上只有几种编程语言提供多种功能. 在当今世界,开发人员必须能去构建各种类型的应用程序,所以多学习一种多功能开发语言是有必要的. 虽说php是世界上最好的语言,但这也不妨碍Python成为通用编程开 ...

  7. 多线程并发:每个开发人员都应了解的内容

    各种类型的 源码,书籍,工具等 进入 磐实资源站 可以找到.网址 --> www.panshsoft.net   如果你有好的文章,源码提供给本站 可以进入 bbs.panshsoft.com ...

  8. java 开发人员工具_每个Java开发人员都应该知道的10个基本工具

    java 开发人员工具 大家好,我们已经到了2019年的第二个月,我相信你们所有人都已经制定了关于2019年学习以及如何实现这些目标的目标. 我一直在撰写一系列文章,为您提供一些知识,使您可以学习和改 ...

  9. 每个Java开发人员都应该知道的10个基本工具

    大家好,我们已经到了2019年的第二个月,我相信你们所有人都已经为2019年的学习目标以及如何实现这些目标制定了目标. 我一直在撰写一系列文章,为您提供一些知识,使您可以学习和改进以成为2019年更好 ...

最新文章

  1. 【Netty】Netty解决粘包和拆包问题的四种方案
  2. 5.QML动画——分组动画
  3. DELETE误操作_oracle
  4. java原子引用怎么理解_Java 原子性引用 AtomicReference
  5. BitNami Redmine Stack
  6. java不输出数字_为什么我的代码不输出(仅)数字?
  7. AcWing 1230. K倍区间
  8. mysql俩个表之间关联语法_MySQL多表关联SQL语句调优
  9. 【入门篇】黑盒测试基础
  10. MVC项目开发中那些用到的知识点(MVC IModelBinder)
  11. 如何使用TeamViewer在会话期间画图?
  12. 通过域名地址加载eot|otf|ttf|woff|svg等报404 错误问题
  13. Python 发送短信
  14. Regular DLL
  15. 进阶HTML--认识标签嵌套与并列关系 -----16岁的小前端
  16. loss 加权_为每个类别/实例编写自定义损失加权,对,的,loss
  17. C++描述 LeetCode 1768. 交替合并字符串
  18. Automatic Targetless LiDAR-CameraCalibration: A Survey论文解读
  19. 什么是操作系统虚拟机?
  20. TITAN Haptics推出捆绑了Immersion许可的下一代触觉马达

热门文章

  1. WebApi_基于token的多平台身份认证架构设计(Z)
  2. Intellij idea智能提示设置
  3. 临时上传的文件-20170707
  4. ARP攻击原理简析及防御措施
  5. explict关键字
  6. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·010【高级查询】
  7. 矩池云上安装caffe gpu教程
  8. mysql性能优化的最佳20条经验_MySQL性能优化的最佳20+条经验
  9. Pandas程序回顾
  10. 用python实现中文词云完整流程(wordcloud、jieba)