2010-07-25 116 views
39

我認爲標題是自解釋的。使用什麼語言編寫Go編程語言?

+14

你的意思是,「Go編程語言的Google編譯器使用哪種語言編寫」?語言不是用語言書寫的。實現是。 – 2010-07-25 02:08:15

+6

是的,我對這種含糊不清的問題表示歉意,但我認爲我們通過接受的答案知道答案,無論如何都澄清了你所說的一切。 – digiarnie 2010-07-25 02:09:58

+2

而不是自我解釋,標題在概念上是困惑的。 – 2011-06-05 06:27:57

回答

102

編程語言不是程序,因此它們不是用任何語言「書寫」的。它們通常由正式語法來描述(例如BNF)。

用於編程語言的口譯員和編譯器程序等都必須用某種編程語言編寫。

Go有至少兩個編譯器,gcgccgo。前者是用C編寫的,但現在用Go編寫。而後者是一個主要用C++編寫的gcc前端。 Go的圖書館是用Go編寫的。

+1

他們打算用匯編寫出一個編譯器嗎?我知道C接近程序集,但從性能的角度來看,不會從頭開始將它完全寫在程序集中是最好的嗎? – Cocksure 2014-12-11 12:14:16

+5

@Cocksure增加的性能不值得在保持性能方面提高。無論如何,唯一會加速的是編譯時間。 – litelite 2015-08-19 19:59:06

8

它是用C語言編寫的。這些庫是用Go編寫的。

編輯:現在編譯器已被重寫在Go中,因此它完全自主託管。

+0

我真的期待它被寫入Go,之後正在首次編譯。 – cregox 2010-08-19 18:20:15

+1

@Cawas第一次編譯通過什麼?在編譯用X編寫的任何程序(包括用於X的編譯器)之前,必須爲用其他語言編寫的X編譯器。在這種情況下,該語言是C.給定用C語言編寫的Go編譯器,爲什麼要在Go中編寫另一個編譯器,特別是當語言更改時必須修改該編譯器? Go仍然是一種實驗性的,不穩定的,不完整的語言 - 不適合用來編寫編譯器的語言。 – 2011-06-05 06:33:38

+0

@Jim你的意思是什麼?就像你說的一樣!你只是回答你自己的問題。但我不知道Go是個小孩。我從來沒有用過它,只是一個谷歌的愛好者。 – cregox 2011-06-06 00:56:06