本教程操作環境:windows7系統、GO 1.18版本、Dell G3電腦。
(資料圖片僅供參考)
Go語言現在已經實現了自舉,也就是說現在Golang是用Golang自己編寫的自己。早期Go是用匯編語言和C語言實現的,后來Go成熟了之后,Go語言就開始自舉、用早期版本重寫了Go語言編譯器。
從 Go 1.5 版本后,完全使用Go語言自身進行編寫。Go語言的源碼對了解Go語言的底層調度有極大的參考意義,建議希望對Go語言有深入了解的讀者讀一讀。
項目鏈接:https://github.com/docker/docker
Google逐步實現Go語言“去C語言化”
很多編程語言的核心都是C語言,甚至可以說現代計算機核心基礎都構建在C語言和Unix之上,肯湯普森和丹尼斯里奇老爺子創造了C語言和Unix,然后C和Unix再生萬物。JVM、PHP核心、GCC、Emacs、Vim、Unix、Linux等等,這些全都是用C語言來寫的。
Go語言自然也不例外,Go語言編譯器最初也是C語言寫的,Go語言的作者之一就是大名鼎鼎的祖師爺肯湯普森。Google早在2014年初的時候,就已經開始在籌備從Go語言的源碼中徹底移除C語言,也就是說讓Go語言真正完成自舉。
Google自舉Go語言的具體方案
Go語言是效率很高的編程語言,比Java、C#、PHP、Python這些基于虛擬機以及解釋性語言性能要好、資源使用效率也更高。基本上除了C/C++之外,Go語言就是性能最好的高級語言,相對于C和C++、Go語言在語法上又有極大的優勢。
Java和PHP都只能部分自舉,Java的JVM還是得用C語言實現,PHP核心也得用C語言來寫,能夠實現自舉的編程語言必須是圖靈完備的,因此HTML 、CSS也沒辦法完成自舉,他們也不是真正意義上的編程語言。
Google具體的實施步驟:開發一個C到Go的編譯器,將現有的C編譯器翻譯成Go語言;轉化編譯器源碼樹、得到一個Go語言編譯器;將C風格明顯的Go編譯器轉化成徹底的Go語言風格Go編譯器;對Go編譯器進行優化,主要是優化處理器、內存性能使用問題,加入并行機制、優化消除冗余檢查和邊界檢查能力;用最新版go/parser和go/types替換編譯器前端。
Google為什么要讓Go語言實現自舉呢?
自舉意義主要有三點:測試被自舉的編程語言;實現用更高級和抽象的編程語言來編寫編譯器;編程語言也能從語言本身的發展獲益。
能夠自舉證明至少編程語言是圖靈完備的,證明了編程語言本身具備這樣強大的能力,這本身也是對編程語言的一種宣傳,至少證明編程語言具備很強的通用能力、以及非常強的底層能力。在自舉過程中,本質上也是對編程語言的一次考驗,核心開發者在這個過程中,可以積累很多編程語言本身的經驗教訓,能夠盡早發現編程語言本身存在的不足和設計缺陷,方便能夠及時做出調整和優化。
因此編程語言想要自舉,這件事情做得越早越好,自舉的過程也是一次對編程語言的完善過程, 在編程語言定型之前越早完成自舉,編程語言就成熟得越早,C/C++之所以這么多年經久不衰,就是因為他們本身足夠成熟,其他編程語言要發展,都要靠這兩們編程語言,Go語言現在也具備這樣的可能。
Go語言是一個非常出色的編程語言,設計理念現代、能力又強、性能又好,盡管Go語言缺少宏、泛型會讓你的代碼重復度高,可是Go語言更多的是拋棄了C/C++的缺點,吸收了很多編程語言的優點發展起來的一個比較年輕的編程語言。Go語言的大量工程實踐證明,這是一門極其強大的編程語言。
以上就是go語言源碼是啥寫的的詳細內容,更多請關注php中文網其它相關文章!