go語言的編譯器是用什么語言寫的?

go語言的編譯器是用什么語言寫的?相信大部分人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,話不多說,一起往下看吧。

創(chuàng)新新互聯(lián),憑借十多年的成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、外貿(mào)網(wǎng)站建設(shè)經(jīng)驗(yàn),本著真心·誠心服務(wù)的企業(yè)理念服務(wù)于成都中小企業(yè)設(shè)計(jì)網(wǎng)站有上1000+案例。做網(wǎng)站建設(shè),選成都創(chuàng)新互聯(lián)

看起來像是個(gè)“雞生蛋,蛋生雞”的問題,實(shí)際上不是的。                             

這個(gè)問題的關(guān)鍵在于理解,編譯器本身就是一個(gè)程序,它的功能就是把源代碼翻譯為計(jì)算機(jī)可執(zhí)行的程序。

對于 C/C++、Go、Rust 這樣的本地語言,它們編譯生成后的目標(biāo)程序就是目標(biāo)平臺(tái)的本地可執(zhí)行程序。比如你用這三種語言寫個(gè) Hello World,在 Windows 平臺(tái)下用編譯的結(jié)果一定是一個(gè) .exe 文件,這些 .exe 文件里面沒有包含任何源語言的信息。

Windows 運(yùn)行它們的時(shí)候不知道,也不需要知道這些 .exe 文件編譯之前是用什么語言寫的,只需要把它們加載進(jìn)內(nèi)存,一句一句地執(zhí)行指令就行了。

編譯器程序也是這個(gè)道理。

假如你發(fā)明了一種新的語言 CNifeLang,首先需要用一種現(xiàn)有的語言寫一個(gè) CNifeLang 的編譯器,比如說就用 Golang 吧;

你用 Golang 寫了一個(gè) CNifeLang 的編譯器,能成功地把任何合法的 CNifeLang 源代碼編譯為等價(jià)的目標(biāo)程序。

接著用 CNifeLang 寫一個(gè)程序,它與你用 Golang 寫的編譯器功能完全相同,用 Golang 實(shí)現(xiàn)的編譯器把這個(gè)程序編譯完成,你就得到了一個(gè)用 CNifeLang 實(shí)現(xiàn)的 CNifeLang 編譯器。

因?yàn)檫@個(gè)程序的功能與用 Golang 寫的編譯器完全相同,所以你完全可以用這個(gè)編譯器去編譯 CNifeLang,于是 CNifeLang 實(shí)現(xiàn)了 自舉。

如果題主學(xué)習(xí)了編譯原理這門課,就會(huì)發(fā)現(xiàn)編譯與編程語言是沒有關(guān)系的,它有一套完整而成熟的操作方法,你完全可以用任何一種圖靈完備的語言去寫任何一種形式語言的編譯器,而且有嚴(yán)格的數(shù)學(xué)方法證明你寫的編譯器是正確的。

我們常見的編程語言基本都實(shí)現(xiàn)了自舉,這是一種編程語言發(fā)展成熟的標(biāo)志之一。因?yàn)榫幾g器既是一個(gè)復(fù)雜的工程,也有一套成熟的評(píng)價(jià)體系,能寫出成熟可用、效率有保證的本語言編譯器,就能說明這種語言已經(jīng)能拿來用了。

以上就是go語言的編譯器的詳細(xì)內(nèi)容了,看完之后是否有所收獲呢?如果想了解更多相關(guān)內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊!

當(dāng)前標(biāo)題:go語言的編譯器是用什么語言寫的?
分享鏈接:http://bm7419.com/article12/gijsdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供云服務(wù)器、做網(wǎng)站、Google、動(dòng)態(tài)網(wǎng)站定制開發(fā)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站托管運(yùn)營