作者:贴进你的心聆听你的世界 | 2023-07-04 13:24
我认为标题是自我解释的.
1> Artelius..:
编程语言不是程序,因此它们不是用任何语言"编写"的.它们通常由形式语法(例如BNF)描述.
编程语言的解释器和编译器是程序,因此必须用某种编程语言编写.
Go至少有两个编译器,gc
和gccgo
.前者是用C语言编写的,但现在用Go本身编写.而后者是主要用C++编写的gcc前端.Go的库是用Go编写的.
@Cocksure增加的性能不值得用于维护.无论如何,唯一能加速的是编译时间.
2> zneak..:
如果我可以说,请自己查看源代码和C语言.
编辑 Go团队于2013年12月宣布,他们将把编译器转换为Go.截至2015年2月,编译器完全自托管,因为C实现已被删除.新的编译器首次使用Go 1.5发布.
@shortCircuit,参见[Bootstrapping(Compilers)](https://en.wikipedia.org/wiki/Bootstrapping_(compilers))
怎么能有人写进去
3> Charles..:
它是用C语言编写的.库是用Go本身编写的.
编辑:现在编译器已经在Go中重写,因此它完全是自托管的.
@Cawas第一次由什么编译?在编译用X编写的任何程序(包括X的编译器)之前,必须具有以其他某种语言编写的X的编译器。在这种情况下,该语言为C。给定用C编写的Go编译器,为什么还要用Go编写另一种,尤其是当更改语言时必须修改该编译器时?Go仍然是一种实验性,不稳定且不完整的语言-不利于用这种语言来编写强制性语言。