首頁 >後端開發 >Golang >golang編譯器用什麼寫的

golang編譯器用什麼寫的

(*-*)浩
(*-*)浩原創
2019-12-27 14:27:023164瀏覽

golang編譯器用什麼寫的

Golang 的編譯器是用什麼語言寫的?

看起來像是個「雞生蛋,蛋生雞」的問題,其實不是的。 。

對於 C/C 、Go、Rust 這樣的本地語言,它們編譯產生後的目標程式就是目標平台的本機執行程式。例如你用這三種語言寫個 Hello World,在 Windows 平台下用編譯的結果一定是 .exe 文件,這些 .exe 檔案裡面沒有包含任何原始語言的資訊。

Windows 運行它們的時候不知道,也不需要知道這些 .​​exe 檔案編譯之前是用什麼語言寫的,只需要把它們加載進內存,一句一句地執行指令就行了。

編譯器程式也是這個道理。

假如你發明了一種新的語言CNifeLang,首先需要用一種現有的語言寫一個CNifeLang 的編譯器,比如說就用Golang 吧;

你用Golang 寫了一個CNifeLang 的編譯器,能成功地把任何合法的CNifeLang 原始碼編譯為等價的目標程式。

接著用CNifeLang 寫一個程序,它與你用Golang 寫的編譯器功能完全相同,用Golang 實現的編譯器把這個程序編譯完成,你就得到了一個用CNifeLang 實現的CNifeLang 編譯器。

因為這個程式的功能跟用 Golang 寫的編譯器完全相同,所以你完全可以用這個編譯器去編譯 CNifeLang,於是 CNifeLang 實作了 自舉。

如果題主學習了編譯原理這門課,你會發現編譯與程式語言是沒有關係的,它有一套完整而成熟的操作方法,你完全可以用任何一種圖靈完備的語言去寫任何一種形式語言的編譯器,而且有嚴格的數學方法證明你寫的編譯器是正確的。

我們常見的程式語言基本上都實現了自舉,這是一種程式語言發展成熟的標誌之一。因為編譯器既是複雜的工程,也有一套成熟的評量體系,能寫出成熟可用、效率有保證的本語言編譯器,就能說明這種語言已經能拿來用了。

以上是golang編譯器用什麼寫的的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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