Go语言是Google开发的新型编程语言,将动态语言易于编写的特性和静态语言的高效性相结合,具备良好的易用性和极佳的执行效率。目前该语言已经发布了1.2正式版本。
Go语言开发者Russ Cox近日透露,在Go 1.3版本之后,该语言的编译器将会使用Go语言重写。
目前的Go编译器
目前Go编译器gc基于C语言,是从Plan 9的C编译器衍生出来的,其中保持了原有的汇编程序、C编译器和链接器,而部分针对Go的编译器(gc/6g/8g/5g)使用C语言进行了重写。
为何要采用Go语言实现
Russ Cox指出,采用Go语言来实现编译器相比C语言的优势在于:
计划
Russ Cox表示,将编译器从C实现转变为Go实现的过程,主要是通过自动翻译程序来进行。这一过程将分阶段进行:
舍弃的方案
对于为何不从头编写一个新的编译器,Russ Cox表示,从头编写是一个愚蠢的行为,这意味着要抛弃之前很多人很多年以来的工作成果。
Go语言开发团队还尝试了手动将C代码翻译为Go代码,但是在翻译了几个小型的C/C++程序之后,他们发现这种方式比较繁琐,且容易出错,而且错误都非常隐蔽,不易发现。因此,他们决定首先开发出一个自动编译器,通过这种方式,出现的错误将会是一致的,容易查找。(编译:王果)
详细信息:Go 1.3+ Compiler Overhaul