跳转至

语言自举

自举的定义:一种编程语言的程序可以用这种语言本身编写的编译器来编译,语言需要带有运行时系统(runtime system)或者叫运行时库(runtime library)的话,这部分也要用自己来实现才可以算是真的自举。

例如,创造一门 V语言而且用V语言来写V编译器的话,你得按照下面的方法做:

  • 用C++把那个编译器(A)写出来,顺便留下很多测试用例。
  • 用V语言把那个编译器写(B)出来,用A.exe来编译B,修改直到所有测试用例都通过为止。
  • B.exe来编译B自己得到B2.exe,修改直到B2.exe所有测试用例都通过为止。这是为了保证,就算B本身有很多bug,至少编译自己是没有bug的,从而你就可以走到第四步。
  • 当你觉得有信心了,用A.exe把B编译一遍,就得到了B.exe。然后A的代码和A.exe都在也不需要存在了,删掉他们。以后你就不断的用B.exe来编译下一个版本的B就好了,就自举了。

Java的自举

ziju_java.png