Go語言是Google開發的新型編程語言,將動態語言易于編寫的特性和靜態語言的高效性相結合,具備良好的易用性和極佳的執行效率。目前該語言已經發布了1.2正式版本。
Go語言開發者Russ Cox近日透露,在Go 1.3版本之后,該語言的編譯器將會使用Go語言重寫。
目前的Go編譯器
目前Go編譯器gc基于C語言,是從Plan 9的C編譯器衍生出來的,其中保持了原有的匯編程序、C編譯器和鏈接器,而部分針對Go的編譯器(gc/6g/8g/5g)使用C語言進行了重寫。
為何要采用Go語言實現
Russ Cox指出,采用Go語言來實現編譯器相比C語言的優勢在于:
計劃
Russ Cox表示,將編譯器從C實現轉變為Go實現的過程,主要是通過自動翻譯程序來進行。這一過程將分階段進行:
舍棄的方案
對于為何不從頭編寫一個新的編譯器,Russ Cox表示,從頭編寫是一個愚蠢的行為,這意味著要拋棄之前很多人很多年以來的工作成果。
Go語言開發團隊還嘗試了手動將C代碼翻譯為Go代碼,但是在翻譯了幾個小型的C/C++程序之后,他們發現這種方式比較繁瑣,且容易出錯,而且錯誤都非常隱蔽,不易發現。因此,他們決定首先開發出一個自動編譯器,通過這種方式,出現的錯誤將會是一致的,容易查找。(編譯:王果)
詳細信息:Go 1.3+ Compiler Overhaul