新聞中心
我通常會在有空的時(shí)候?yàn)g覽Github存儲庫。 另外,當(dāng)我開始使用新的計(jì)算機(jī)軟件,工具或?qū)嵱贸绦驎r(shí),我喜歡查看特定軟件的工作方式。 大多數(shù)時(shí)候,我看一下它的代碼庫,以了解事物如何與內(nèi)部模塊和外部依賴項(xiàng)完全配合。

成都創(chuàng)新互聯(lián)公司從2013年成立,先為江孜等服務(wù)建站,江孜等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為江孜企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
幾年前,我正在檢查Python語言實(shí)現(xiàn)的源代碼。 此后,我注意到了幾個(gè)C源文件,并突然檢查了GNU C編譯器集合的實(shí)現(xiàn)。 我發(fā)現(xiàn)這個(gè)現(xiàn)代的C編譯器是用C本身編寫的。 學(xué)習(xí)事物的內(nèi)部結(jié)構(gòu)并進(jìn)一步深入,可以為我們帶來驚人的感覺和豐富的知識。 過去的開發(fā)人員已經(jīng)做出了巨大的努力,為現(xiàn)代開發(fā)人員創(chuàng)造了一個(gè)和平的世界。 但是,作為現(xiàn)代開發(fā)人員,我們應(yīng)該感謝他們的出色工作。
當(dāng)我瀏覽Github存儲庫時(shí),我注意到世界各地的開發(fā)人員已經(jīng)完成了以下令人印象深刻的工作。
阿波羅11號制導(dǎo)計(jì)劃
阿波羅11號是第一個(gè)成功的使人類登月的任務(wù)。 只有4 KB物理內(nèi)存的阿波羅制導(dǎo)計(jì)算機(jī)(AGC)為控制航天器提供了支持。 AGC的軟件以AGC匯編語言編寫,并存儲在稱為繩索存儲器的特殊只讀存儲器中。 一段時(shí)間之前,已掃描了源代碼的掃描副本,這些副本已上傳到Internet。 此后,有人將幾個(gè)模塊轉(zhuǎn)換為文本文件,然后將其上傳到Github存儲庫。
> Piece of code from the Lunar module of AGC, screenshot by the author
阿波羅(Apollo)工程團(tuán)隊(duì)付出了巨大的努力,通過用匯編語言編寫了許多代碼行,以取得如此驚人的成就。 在1960年代,編程比現(xiàn)在更加困難。 因?yàn)樵谀菚r(shí),編程語言的抽象級別較低。 此外,程序員必須編寫超級優(yōu)化的代碼才能有效地使用硬件。
雷神之錘III競技場
Quake III Arena是由id Software開發(fā)的第一人稱射擊游戲。 它是在90年代開發(fā)的,當(dāng)時(shí)3D游戲行業(yè)剛剛開始使用id Tech 3游戲引擎進(jìn)行開發(fā)。 當(dāng)時(shí),硬件資源非常有限。 因此,游戲開發(fā)人員必須編寫精心優(yōu)化的代碼以呈現(xiàn)圖形元素。 許多游戲編程計(jì)算都需要向量歸一化概念,這提出了平方根反比計(jì)算的要求。 如前所述,開發(fā)人員必須為這些與計(jì)算機(jī)圖形學(xué)相關(guān)的工作選擇最有效的算法。 因此,Quake III Arena團(tuán)隊(duì)使用一種非常聰明的方法進(jìn)行快速反平方根計(jì)算,如下所示,使用位級計(jì)算。
> Fast inverse square root function in Quake III Arena, screenshot by the author
這段代碼中使用的優(yōu)化水平以及為在90年代實(shí)現(xiàn)如此出色的計(jì)算機(jī)游戲而編寫的整個(gè)代碼顯然令人驚訝。 如今,游戲開發(fā)通常不處理這一級別的計(jì)算,因?yàn)槲锢砉δ芤呀?jīng)由游戲引擎實(shí)現(xiàn)。
GNU編譯器集合
C編程語言就像現(xiàn)代計(jì)算之父一樣,因?yàn)樗ㄟ^提供良好的人類可讀的抽象級別而與硬件之間的距離非常近。 確實(shí),GNU C編譯器已啟動。 換句話說,它是使用編譯器自舉概念以C編程語言編寫的。 我注意到我從Github上的GNU編譯器集合的代碼庫中看到了最長的C源文件(可以有比這更長的C源文件,但這是我看到的)。
> GNU C Compiler's C parser source file has more than 20k lines, screenshot by the author
Google Chrome
流行的Web瀏覽器(例如Google Chrome,Microsoft Edge和Opera)基于Chromium開源項(xiàng)目,該項(xiàng)目具有兩個(gè)主要依賴項(xiàng):Blink呈現(xiàn)引擎(是由Webkit團(tuán)隊(duì)開發(fā)的WebCore庫的一個(gè)分支),以及v8 JavaScript引擎, 由Chromium項(xiàng)目團(tuán)隊(duì)開發(fā)。 毫無疑問,Chromium代碼庫非常大,并且具有許多第三方模塊,例如gRPC和Skia。 但是,Chromium團(tuán)隊(duì)以很好的方式構(gòu)造了所有組件。 他們明智地分離了用戶界面相關(guān)的邏輯和內(nèi)部功能邏輯,以在整個(gè)項(xiàng)目中實(shí)現(xiàn)非常好的可維護(hù)性因素。
> Well-organized abstract UI controls of Chromium, screenshot by the author
此外,此代碼庫還包含Chromium Android和iOS應(yīng)用程序的源代碼。 構(gòu)建大規(guī)模的跨平臺應(yīng)用程序可能會有些復(fù)雜。 但是,Chromium對Linux,Windows和Mac的平臺特定代碼有令人印象深刻的分離。
Git
如今,Git幫助幾乎每個(gè)軟件開發(fā)團(tuán)隊(duì)管理編碼歷史和版本。 Git最初由Linux內(nèi)核的創(chuàng)始人Linus Torvalds制作。 確實(shí),Git的代碼庫包含一項(xiàng)神奇的工作,這是Gitk的源文件。 Gitk是一個(gè)GUI應(yīng)用程序,可以幫助我們直觀地瀏覽提交。 我們可以使用以下CLI命令來檢查兩次提交之間的差異。
- $ git diff
但是,由于它是視覺工具,因此Gitk允許我們這么快地看到修改。 Gitk的整個(gè)源代碼只是一個(gè)文件。 它是使用Tk UI工具包(是Tcl的擴(kuò)展)以Tcl腳本語言編寫的。 他們通過僅用一個(gè)源文件實(shí)現(xiàn)整個(gè)GUI應(yīng)用程序,也通過選擇動態(tài)編程語言以加快GUI應(yīng)用程序開發(fā)來完成了出色的工作。
> Gitk was implemented as a single source file with around 12k lines, screenshot by the author
網(wǎng)頁名稱:值得每個(gè)碼農(nóng)去學(xué)習(xí)的優(yōu)秀開源代碼
當(dāng)前鏈接:http://m.fisionsoft.com.cn/article/cophhij.html


咨詢
建站咨詢
