本篇內(nèi)容主要講解“go語(yǔ)言源碼是什么寫的”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“go語(yǔ)言源碼是什么寫的”吧!
創(chuàng)新互聯(lián)公司是一家專業(yè)提供伊寧企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、H5場(chǎng)景定制、小程序制作等業(yè)務(wù)。10年已為伊寧眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計(jì)公司優(yōu)惠進(jìn)行中。
Go語(yǔ)言早期源碼是使用C語(yǔ)言和匯編語(yǔ)言寫成的,從Go 1.5版本后,完全使用Go語(yǔ)言自身進(jìn)行編寫。Google早在2014年初的時(shí)候,就已經(jīng)開始在籌備從Go語(yǔ)言的源碼中徹底移除C語(yǔ)言,也就是說(shuō)讓Go語(yǔ)言真正完成自舉,用早期版本重寫了Go語(yǔ)言編譯器。
Go語(yǔ)言現(xiàn)在已經(jīng)實(shí)現(xiàn)了自舉,也就是說(shuō)現(xiàn)在Golang是用Golang自己編寫的自己。早期Go是用匯編語(yǔ)言和C語(yǔ)言實(shí)現(xiàn)的,后來(lái)Go成熟了之后,Go語(yǔ)言就開始自舉、用早期版本重寫了Go語(yǔ)言編譯器。
Google逐步實(shí)現(xiàn)Go語(yǔ)言“去C語(yǔ)言化”
很多編程語(yǔ)言的核心都是C語(yǔ)言,甚至可以說(shuō)現(xiàn)代計(jì)算機(jī)核心基礎(chǔ)都構(gòu)建在C語(yǔ)言和Unix之上,肯湯普森和丹尼斯里奇老爺子創(chuàng)造了C語(yǔ)言和Unix,然后C和Unix再生萬(wàn)物。JVM、PHP核心、GCC、Emacs、Vim、Unix、Linux等等,這些全都是用C語(yǔ)言來(lái)寫的。
Go語(yǔ)言自然也不例外,Go語(yǔ)言編譯器最初也是C語(yǔ)言寫的,Go語(yǔ)言的作者之一就是大名鼎鼎的祖師爺肯湯普森。Google早在2014年初的時(shí)候,就已經(jīng)開始在籌備從Go語(yǔ)言的源碼中徹底移除C語(yǔ)言,也就是說(shuō)讓Go語(yǔ)言真正完成自舉。
Google自舉Go語(yǔ)言的具體方案
Go語(yǔ)言是效率很高的編程語(yǔ)言,比Java、C#、PHP、Python這些基于虛擬機(jī)以及解釋性語(yǔ)言性能要好、資源使用效率也更高?;旧铣薈/C++之外,Go語(yǔ)言就是性能最好的高級(jí)語(yǔ)言,相對(duì)于C和C++、Go語(yǔ)言在語(yǔ)法上又有極大的優(yōu)勢(shì)。
Java和PHP都只能部分自舉,Java的JVM還是得用C語(yǔ)言實(shí)現(xiàn),PHP核心也得用C語(yǔ)言來(lái)寫,能夠?qū)崿F(xiàn)自舉的編程語(yǔ)言必須是圖靈完備的,因此HTML 、CSS也沒辦法完成自舉,他們也不是真正意義上的編程語(yǔ)言。
Google具體的實(shí)施步驟:開發(fā)一個(gè)C到Go的編譯器,將現(xiàn)有的C編譯器翻譯成Go語(yǔ)言;轉(zhuǎn)化編譯器源碼樹、得到一個(gè)Go語(yǔ)言編譯器;將C風(fēng)格明顯的Go編譯器轉(zhuǎn)化成徹底的Go語(yǔ)言風(fēng)格Go編譯器;對(duì)Go編譯器進(jìn)行優(yōu)化,主要是優(yōu)化處理器、內(nèi)存性能使用問(wèn)題,加入并行機(jī)制、優(yōu)化消除冗余檢查和邊界檢查能力;用最新版go/parser和go/types替換編譯器前端。
Google為什么要讓Go語(yǔ)言實(shí)現(xiàn)自舉呢?
自舉意義主要有三點(diǎn):測(cè)試被自舉的編程語(yǔ)言;實(shí)現(xiàn)用更高級(jí)和抽象的編程語(yǔ)言來(lái)編寫編譯器;編程語(yǔ)言也能從語(yǔ)言本身的發(fā)展獲益。
能夠自舉證明至少編程語(yǔ)言是圖靈完備的,證明了編程語(yǔ)言本身具備這樣強(qiáng)大的能力,這本身也是對(duì)編程語(yǔ)言的一種宣傳,至少證明編程語(yǔ)言具備很強(qiáng)的通用能力、以及非常強(qiáng)的底層能力。在自舉過(guò)程中,本質(zhì)上也是對(duì)編程語(yǔ)言的一次考驗(yàn),核心開發(fā)者在這個(gè)過(guò)程中,可以積累很多編程語(yǔ)言本身的經(jīng)驗(yàn)教訓(xùn),能夠盡早發(fā)現(xiàn)編程語(yǔ)言本身存在的不足和設(shè)計(jì)缺陷,方便能夠及時(shí)做出調(diào)整和優(yōu)化。
因此編程語(yǔ)言想要自舉,這件事情做得越早越好,自舉的過(guò)程也是一次對(duì)編程語(yǔ)言的完善過(guò)程, 在編程語(yǔ)言定型之前越早完成自舉,編程語(yǔ)言就成熟得越早,C/C++之所以這么多年經(jīng)久不衰,就是因?yàn)樗麄儽旧碜銐虺墒?,其他編程語(yǔ)言要發(fā)展,都要靠這兩們編程語(yǔ)言,Go語(yǔ)言現(xiàn)在也具備這樣的可能。
Go語(yǔ)言是一個(gè)非常出色的編程語(yǔ)言,設(shè)計(jì)理念現(xiàn)代、能力又強(qiáng)、性能又好,盡管Go語(yǔ)言缺少宏、泛型會(huì)讓你的代碼重復(fù)度高,可是Go語(yǔ)言更多的是拋棄了C/C++的缺點(diǎn),吸收了很多編程語(yǔ)言的優(yōu)點(diǎn)發(fā)展起來(lái)的一個(gè)比較年輕的編程語(yǔ)言。Go語(yǔ)言的大量工程實(shí)踐證明,這是一門極其強(qiáng)大的編程語(yǔ)言。
到此,相信大家對(duì)“go語(yǔ)言源碼是什么寫的”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!