用JavaScript写成的JavaScript解释器?
对一个语言来说,用自己给自己写编译器或者解释器,叫“自举”( Bootstrap),这是一种很重要的能力,有利于语言的完善和发展。同时,也是一种“宣言”,我图灵完备、我很强大、我不依赖于别的语言。
编译型的语言(C/C++/GO等等),自举比较容易做到。但Javascript这类解释型的动态语言,就比较难了。因为JS代码始终要在JS的解释器里执行;如果JS的解释器也是JS写的,那么谁负责执行解释器?
所以,从逻辑的角度看,不管怎么弄,必须先有一个宿主JS引擎来启动才行,而这个宿主JS引擎,一定不是JS写的。在第一次由宿主JS引擎执行的过程中,它将自己编译成机器码,存储在本地机器上,之后就直接执行机器代码就可以了,甩开宿主,实现“自举”。有兴趣的话,可以在Github上搜“Tachyon”这个项目,它就是用这种方式实现的。除此以外,其它依赖于JS引擎的各种实现方式,都算不上自举。
对程序员而言,好像没有什么特别大的意义。如果您自己用JS写了个JS解释器,代表您对语言的Specification的理解、对编译原理的掌握很到位,总而言之就是很厉害的意思。
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有