Go编程语言的编译器是用什么语言编写的?

Go编程语言的编译器是用什么语言编写的?,go,Go,我认为这个标题是不言自明的。,如果我可以说的话 编辑Go团队于2013年12月宣布:。截至2015年2月,编译器完全是自托管的,就像C实现一样。新编译器首次随附。它是用C编写的。库是用Go本身编写的 编辑:现在编译器已在Go中重写,因此它是完全自托管的。编程语言不是程序,因此它们不是用任何语言“编写”的。它们通常由正式语法(如BNF)来描述 编程语言的解释器和编译器都是程序,因此必须用某种编程语言编写 Go至少有两个编译器,并且。前者是用C编写的,但现在是用Go本身编写的。后者是GCC前端,主

我认为这个标题是不言自明的。

,如果我可以说的话



编辑Go团队于2013年12月宣布:。截至2015年2月,编译器完全是自托管的,就像C实现一样。新编译器首次随附。

它是用C编写的。库是用Go本身编写的


编辑:现在编译器已在Go中重写,因此它是完全自托管的。

编程语言不是程序,因此它们不是用任何语言“编写”的。它们通常由正式语法(如BNF)来描述

编程语言的解释器和编译器都是程序,因此必须用某种编程语言编写

Go至少有两个编译器,并且。前者是用C编写的,但现在是用Go本身编写的。后者是GCC前端,主要以C++编写。Go的库是用Go编写的。

“Go编译器是用Go和汇编语言编写的”

“GCGO是用C++编写的,并且去”


Rob Pike

你的意思是,“谷歌的Go编程语言编译器是用什么语言编写的?”?语言不是用语言写的。是的,我为含糊不清表示歉意,但我想我们知道答案,答案是公认的答案,它澄清了你所说的一切。标题不是不言自明的,而是概念上的混乱。我真的希望它是用围棋写的,第一次被编译后,第一次被什么编译?在编译任何用X编写的程序(包括针对X的编译器)之前,必须使用其他语言编写针对X的编译器。在本例中,该语言是C语言。给定一个用C编写的Go编译器,为什么还要用Go编写另一个编译器,尤其是当语言更改时,必须修改该编译器?围棋仍然是一种实验性的、不稳定的、不完整的语言——不适合编写编译器的语言。@Jim你说的什么意思?一切如你所说!你刚才向我回答了你自己的问题。但我不知道Go是个孩子。我从来没有使用过它,我只是一个谷歌的狂热爱好者。所以,让我们假设我想移植到一个新的非x86架构,目前只有一个C编译器和一个汇编程序。我该怎么做?我需要恢复旧的C版本的编译器并移植它,然后从那里引导我自己吗?@ChrisGNZ是的,没错。他们会推出一个用汇编编写的编译器吗?我知道C接近于汇编,但从性能的角度来看,完全在汇编中从头开始编写不是最好的吗?@Cocksure增加的性能不值得在可维护性方面付出代价。不管怎样,唯一能提高速度的就是编译时间。go编译器本身现在怎么能用golang编写?@mecampbellsoup这并不罕见。
gcc
C编译器是用C编写的。
javac
Java编译器是用Java编写的。最早的C/Java/Go编译器必须用其他语言编写,但一旦有了编译器,就可以使用它编译该编译器的后续版本。如果您想将编译器移植到新的体系结构(如ARM或64位Intel),您的编译器需要能够交叉编译,但大多数主流编译器都可以做到这一点。@请确保对编译器级别效率的要求不会像输出二进制文件的效率那样重要。如何才能写入go@shortCircuit,看看go编译器是如何用go编写的,这对我来说毫无意义。我在网上找到了我自己问题的答案。你想看一种语言,它的编译器是用另一种语言编译器编译的,然后用它的旧编译器编译一个新的编译器吗?全部在30秒内完成?转到vlang.io页面