2010-07-25 117 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