首頁  >  文章  >  後端開發  >  go語言源碼是啥寫的

go語言源碼是啥寫的

青灯夜游
青灯夜游原創
2022-12-27 16:49:185025瀏覽

Go語言早期原始碼是使用C語言和組合語言寫成的,從Go 1.5版本後,完全使用Go語言本身進行編寫。 Google早在2014年初的時候,就已經開始在籌備從Go語言的源碼中徹底移除C語言,也就是說讓Go語言真正完成自舉,用早期版本重寫了Go語言編譯器。

go語言源碼是啥寫的

本教學操作環境: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語言真正完成自舉。

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替換編譯器前端。

go語言源碼是啥寫的

Google為什麼要讓Go語言實作自舉呢?

自舉意義主要有三點:測試被自舉的程式語言;實作用更高階和抽象的程式語言來寫編譯器;程式語言也能從語言本身的發展獲益。

能夠自舉證明至少程式語言是圖靈完備的,證明了程式語言本身俱備如此強大的能力,這本身也是對程式語言的一種宣傳,至少證明程式語言具備很強的通用能力、以及非常強的底層能力。在自舉過程中,本質上也是對程式語言的一次考驗,核心開發者在這個過程中,可以累積許多程式語言本身的經驗教訓,能夠儘早發現程式語言本身存在的不足和設計缺陷,方便能夠及時做出調整和優化。

因此程式語言想要自舉,這件事情做得越早越好,自舉的過程也是一次對程式語言的完善過程, 在程式語言定型之前越早完成自舉,程式語言就成熟得越早,C/C 之所以這麼多年經久不衰,就是因為他們本身夠成熟,其他程式語言要發展,都要靠這兩們程式語言,Go語言現在也具備這樣的可能。

Go語言是一種非常出色的程式語言,設計理念現代、能力又強、效能又好,儘管Go語言缺少宏、泛型會讓你的程式碼重複度高,可是Go語言更多的是拋棄了C/C 的缺點,吸收了許多程式語言的優點發展出來的一個比較年輕的程式語言。 Go語言的大量工程實踐證明,這是一門極其強大的程式語言。

【相關推薦:Go影片教學程式設計教學

以上是go語言源碼是啥寫的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn