【问题标题】:What language is the compiler of Go programming language written in?Go 编程语言的编译器是用什么语言编写的?
【发布时间】:2011-03-20 15:39:15
【问题描述】:

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

【问题讨论】:

  • 您的意思是“Google 的 Go 编程语言编译器是用什么语言编写的”?语言不是用语言写成的。实现是。
  • 是的,我为含糊不清而道歉,但我认为我们通过接受的答案知道答案,它澄清了你所说的所有内容。
  • 标题不是自我解释,而是概念上的混淆。
  • 人们争论语义是如此 2010 XD

标签: go


【解决方案1】:

“用 go 编写的 go 编译器,几乎没有汇编”

"但是 gccgo 是用 c c++ 和 go 编写的"

罗伯·派克

【讨论】:

  • go-compiler 怎么能用 go 写?,这对我来说毫无意义
  • 在网上找到了我自己的问题的答案link
  • 您是否希望看到一种语言的编译器是用另一种语言编译器构建的,然后用它的旧编译器构建一个新的编译器?全部在 30 秒内?转到 vlang.io 页面
【解决方案2】:

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

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

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

【讨论】:

  • 他们会推出用汇编语言编写的编译器吗?我知道 C 接近于汇编,但从性能的角度来看,从头开始完全用汇编编写它不是最好的吗?
  • @Cocksure 增加的性能不值得在可维护性方面受到打击。无论如何,唯一能加快速度的就是编译时间。
  • go 编译器本身现在如何用 golang 编写?
  • @mecampbellsoup 这并不罕见。 gcc C 编译器是用 C 编写的。javac Java 编译器是用 Java 编写的。非常第一个 C/Java/Go 编译器必须用其他语言编写,但是一旦你有了一个编译器,你就可以使用它来编译该编译器的后续版本。如果您想将编译器移植到新架构(如 ARM 或 64 位 Intel),您的编译器需要能够交叉编译,但大多数主流编译器都可以做到这一点。
  • @Cocksure 编译器级别的效率需求不如输出二进制文件的效率重要。
【解决方案3】:

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

编辑:现在编译器已经用 Go 重写,所以它是完全自托管的。

【讨论】:

  • 第一次编译后,我真的很期待它会用 Go 编写。
  • @Cawas 第一次由什么编译?在编译任何用 X 编写的程序(包括 X 编译器)之前,您必须有一个用其他语言编写的 X 编译器。在这种情况下,该语言是 C。给定一个用 C 编写的 Go 编译器,为什么还要用 Go 编写另一个编译器,尤其是在更改语言时必须修改该编译器时? Go 仍然是一种实验性、不稳定和不完整的语言——对于编写编译器的语言来说并不好。
  • @Jim 你的意思是什么?都是你说的!你刚刚回答了我自己的问题。但我不知道 Go 是这样的孩子。我从未使用过它,只是对任何 google 的爱好者。
  • 所以,假设我想将 Go 移植到一个新的非 x86 架构,目前只有一个 C 编译器和一个汇编器。我该怎么做?我是否需要重新使用旧的 C 版本的编译器并移植它,然后从那里引导我自己?
  • @ChrisGNZ 是的,没错。
【解决方案4】:

Look at the source and C for yourself,如果我可以说的话。


编辑 Go 团队于 2013 年 12 月宣布 they will be transitioning the compiler to Go。截至 2015 年 2 月,编译器完全是自托管的,因为 C 实现是 deleted。新的编译器首次与Go 1.5一起发布。

【讨论】:

猜你喜欢
  • 2011-02-14
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 2015-02-15
  • 1970-01-01
  • 1970-01-01
  • 2011-02-14
  • 1970-01-01
相关资源
最近更新 更多