自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

每一位程序員都應(yīng)該學(xué)習的優(yōu)秀代碼

開發(fā) 前端
有時,開發(fā)人員編寫的代碼對硬件的利用能達到讓人驚嘆的地步,并給整個世界留下深刻的印象。

當我閑暇時,我會瀏覽 Github 的代碼庫。使用新的計算機軟件、工具或?qū)嵱贸绦驎r,我也喜歡琢磨下它的運行機制。通常情況,我會研究它的代碼庫,以了解其內(nèi)部模塊和外部依賴是如何有機結(jié)合來完成工作。

[[382376]]

幾年前,我查看 Python 語言代碼時,突然發(fā)現(xiàn)了一些 C 語言編寫的源文件,并檢查了 GNU C 編譯器集合的實現(xiàn)。我發(fā)現(xiàn)這個先進的 C 語言編譯器就是用 C 語言編寫的。學(xué)習事物的內(nèi)部結(jié)構(gòu)并深入了解,可以顛覆我們的認知并學(xué)到豐富的知識。過去的開發(fā)人員通過自己的辛勤工作,為現(xiàn)代開發(fā)人員創(chuàng)造了一個太平的世界。作為現(xiàn)代開發(fā)人員,我們應(yīng)該感謝他們的出色工作。

當我瀏覽 Github 代碼庫時,我注意到各地的開發(fā)人員完成了以下的杰作。

阿波羅 11 號導(dǎo)航計算機(AGC)

阿波羅 11 號使人類第一次成功地登上了月球。只有 4KB 物理內(nèi)存的阿波羅導(dǎo)航計算機(AGC)完成了對航天器的控制。AGC 的軟件以 AGC 匯編語言編寫,并存儲在稱為磁心線儲存器(ropememory)的特殊只讀存儲器中。之前有人將源代碼的掃描副本上傳到了 Internet。然后,這幾個模塊被轉(zhuǎn)換為文本文件,并上傳到了 Github 代碼庫。

AGC 登月模塊中的代碼片段,作者截圖

阿波羅(Apollo)工程團隊付出了巨大的努力,編寫大量的匯編代碼來取得如此驚人的成就。在 1960 年代,編程可比現(xiàn)在困難多了。因為在那時,編程語言多為低級語言,需要直接操作硬件。所以,程序員必須編寫精心優(yōu)化的代碼來提高硬件使用效率。

雷神之錘 III 競技場

雷聲之錘 III——競技場是由 id Software 開發(fā)的第一人稱射擊游戲。它開發(fā)于上世紀 90 年代,當時由于 id Tech3 等游戲引擎的技術(shù)的出現(xiàn),3D 游戲行業(yè)開始興起。不像現(xiàn)在,那時候硬件資源非常有限。因此,游戲開發(fā)人員必須編寫精心優(yōu)化的代碼以實現(xiàn)圖形元素的渲染。許多游戲編程都需要實現(xiàn)矢量歸一化,這提出了對平方根倒數(shù)運算的需求。如前所述,開發(fā)人員必須為這些與圖形計算相關(guān)的工作選擇最有效的算法。因此,雷聲之錘 III——競技場開發(fā)團隊使用一種非常聰明的方法進行平方根倒數(shù)運算,比如下面這樣使用位級計算。

雷神之錘 III 競技場中的平方根倒數(shù)快速算法,作者截圖

這段代碼的優(yōu)化水平以及在 90 年代就能開發(fā)出如此出色的計算機游戲這一事實,真的很讓人驚訝。如今,游戲開發(fā)通常不需要處理這一級別的計算,因為物理函數(shù)已經(jīng)由游戲引擎實現(xiàn)。

GNU 編譯器代碼集

C 語言是高級編程語言的鼻祖,因為它既非??拷布帜芴峁┝己玫目勺x性。作為 C 語言的編譯器,GNU 是自引導(dǎo)的。換句話說,它是應(yīng)用編譯器引導(dǎo)概念的 C 語言程序。Github 上的 GNU 編譯器代碼庫中的這個文件是我見過的最長的 C 語言源文件(可能有比這更長的 C 語言源文件,但是我沒見過)。

GNU C 編譯器中的解析器的源文件有 2 萬多行代碼,作者截圖

Chromium

流行的 Web 瀏覽器(例如 Google Chrome,Microsoft Edge 和 Opera)很多是基于 Chromium 開源項目,該項目有兩個主要依賴:1)Blink 渲染引擎。它是 WebCore 庫的一個分支,該庫由 Webkit 團隊基于 KHTML/KJS 進行開發(fā);2)v8 JavaScript 引擎。該引擎由 Chromium 團隊開發(fā)。毫無疑問,Chromium 代碼庫非常大,并且依賴很多第三方模塊,例如 gRPC 和 Skia。但是,Chromium 團隊以一種非常優(yōu)雅的結(jié)構(gòu)來組織所有組件。他們非常明智地將用戶界面和內(nèi)部函數(shù)分開,以提高整個工程的可維護性。

劃分良好的 ChromiumUI 組件抽象層的目錄結(jié)構(gòu),作者截圖

此外,此代碼庫還包含 Chromium Android 和 iOS 手機端程序的源代碼。大規(guī)模的跨平臺應(yīng)用程序目錄結(jié)構(gòu)的劃分可能會有些復(fù)雜。但是,Chromium 對 Linux,Windows 和 Mac 不同平臺代碼目錄結(jié)構(gòu)的劃分做的非常棒。

Gitk

如今,基本上每一個軟件開發(fā)團隊都會使用 Git 來進行代碼歷史和版本的管理。Git 最初由 Linux 內(nèi)核的創(chuàng)始人 LinusTorvalds 開發(fā)。確實,Gitk 的源文件的 Git 代碼中一個神奇的模塊。Gitk 是一個 GUI 應(yīng)用程序,可以讓我們以可視化方式瀏覽歷史提交記錄。我們可以使用以下的 CLI 命令來比較兩次提交之間的差異。

  1. $ git diff <commithash> <commithash> 

但是,借助 Gitk 的可視化展示方式,我們可以更快速地明白不同提交之間的差異。Gitk 的整個源代碼只有一個文件。它是使用 Tk UI 工具包(Tcl 的擴展程序)以 Tcl 腳本語言編寫的。它僅僅通過一個源文件就實現(xiàn)了整個 GUI 應(yīng)用程序,還選擇了一種動態(tài)編程語言來大大加快 GUI 應(yīng)用程序的開發(fā)速度。

Gitk 由約 1 萬 2 千行代碼的單個源文件來實現(xiàn),作者截圖

 

責任編輯:趙寧寧 來源: 前端之巔
相關(guān)推薦

2015-07-02 11:20:17

程序員代碼

2019-11-13 17:36:32

工程師人生第一份工作算法

2012-02-28 10:52:13

2018-03-07 12:57:53

2015-04-16 10:26:51

程序員 Python Ruby

2011-07-25 10:09:57

Python

2024-04-10 12:36:41

硬件代碼

2014-12-26 10:19:14

程序員

2016-06-03 15:18:45

程序員

2021-08-19 15:14:29

程序員電子表格Airtable

2017-09-07 15:12:42

程序員

2011-06-16 08:58:57

軟考程序員

2014-08-04 10:43:47

程序員

2014-07-16 09:34:44

2017-04-07 10:40:48

程序員學(xué)習命令行

2021-10-20 06:05:01

編程語言開發(fā)

2013-03-20 17:58:41

虛擬內(nèi)存程序員

2022-09-11 15:20:05

程序員命令開發(fā)

2021-10-18 10:21:28

程序員技能優(yōu)化

2012-10-11 10:32:48

Linux命令程序員
點贊
收藏

51CTO技術(shù)棧公眾號