Google公布了实现Go 1.5自举(Bootstrap)的计划。相关文档的作者是Go核心开发者Russ Cox,他在Go语言上已经耕耘了接近6年。据Russ介绍,Google就“如何从Go源码树中去除所有的C程序”已经酝酿了一年。 (推荐学习:go)
自举(Bootstrapping) 是这样的过程,“用要编译的目标编程语言编写其编译器(或汇编器)”。
一般而言,自举有几个优势,比如:
用于测试被自举的语言;
支持使用通常更为高级、提供更多高级抽象的语言来编写编译器;
编译器也可以得益于语言层面的任何改进。
如前所述,Google在之前就开始了从Go源码树中去除C代码的努力,转换计划分为5个步骤:
第1阶段——开发一个从C语言到Go语言的翻译器,将现有的C编译器翻译成Go语言的。这一阶段利用了一个事实:原来的编译器没有大量使用一些很难移植到Go语言的特性,比如宏、联合和指针运算等。
第2阶段——转换编译器的源码树,得到一个Go语言的编译器,但是比较原始,而且是C风格的。
第3阶段——将前面得到的编译器转换为符合Go语言习惯的程序,主要通过识别包,添加文档和单元测试实现。
第4阶段——优化编译器,解决编译器和CPU的内存使用问题,可能引入并行化。
此外,尝试在今天使用的不依赖架构的无序树(Node*s)和依赖架构的有序列表(Prog*s)之间引入一个新的中间表示,目的是改进编译器在消除冗余的nil检查和边界检查等情况下的优化
以上是golang 是什么写的的详细内容。更多信息请关注PHP中文网其他相关文章!