大部分后来的编程语言在引入文件的方式上,使用了import module来代替include
头文件的方式,import解决了重复编译的问题,当然Go也是使用的import方式;在模板的编译问题上,由于Go在设计理念上遵循从简入手,所以没有将泛函编程纳入到设计框架中,所以天生的没有模版编译带来的时间开销(没有泛型支持也是很多人不满Go语言的理由)。
所以在我看来,Go编译速度快,主要出于四个原因:
1、使用了import的引用管理方式;
2、没有模板的编译负担;
3、1.5版本后的自举编译器优化;
4、更少的关键字。
Go语言中的关键字一共有 25 个:
break | default | func | interface | select |
case | defer | go | map | struct |
chan | else | goto | package | switch |
const | fallthrough | if | range | type |
continue | for | import | return | var |
之所以刻意地将Go语言中的关键字保持的这么少,是为了简化在编译过程中的代码解析。和其它语言一样,关键字不能够作标识符使用。
所以为了加快编译速度、放弃C++而转入Go的同时,也要考虑一下是否要 放弃泛型编程的优点。
注:泛型可能在Go 2版本获得支持。