其实我们熟知的Java编译器javac不是用C语言或者是C++语言写的,而是用Java本身写的(源代码可以看这里:
或许我们会觉得奇怪,为什么可以用Java语言编写用来编译自身的Java编译器,其实这在编译器技术中叫做自举(bootstrap),可以用如下过程来解释其原理:
如果你想创造一门V语言,而且用V语言来写V编译器的话,你得按照下面的方法做:
所以为什么要用自举?自举能带来什么好处?
自举其实是为了证明语言的表达能力,同时语言的设计者也可以通过这样一个实际的复杂的项目来验证语言的设计。
同时自举也能方便后续开发人员对语言增加新特性且不用依赖其他语言,实现自我迭代和进化。