像C#和java这样的编译语言都有即时编译器,可以将它们(从字节码)转换为机器码(0和1)。像VBScript这样的解释语言是如何转换为机器代码的?这是由操作系统完成的吗?
它们不一定会转换为机器代码(而且通常不会)。
该程序的解释器根据程序的要求运行适当的操作。
一些解释器可能会生成机器代码(使用JIT编译器),其他解释器可能会坚持对脚本进行简单的解释。
我知道这是旧的,但鉴于我不能发表评论(rep),我想添加一个明确的答案:
解释器用于将脚本(无论是VBScript、javascript、python还是任何其他脚本)解释为单独的指令。这些指令可以是机器代码或中间表示形式(操作系统或其他程序可以使用)。一些解释器是为更接近汇编语言的东西而设计的,源代码或多或少是直接执行的。
大多数现代脚本语言(如Python、Perl、Ruby)都被解释为中间表示,或者被解释为一个中间表示,并被编译成(也称为机器,也称为对象)代码。重要的区别(与编译语言相比)是,解释器不是获取整个代码体并将其含义翻译成机器代码,而是一次获取每一行并将其意义解释为一个独立的单元。
把这看作是把整篇文章从英语翻译成俄语(编译代码)和把文章中的每一句话都直接翻译(翻译代码)之间的区别。你可能会得到类似的效果,但结果不会完全相同。更重要的是,将整篇文章作为一个整体进行翻译比将一句话作为一个独立的单元进行翻译要花费更多的精力,但对于讲俄语的人来说,整个翻译将比相当笨拙的逐句版本更容易阅读。因此,在编译代码和解释代码之间进行权衡。
来源:https://en.wikipedia.org/wiki/Interpreter_(计算),体验
这是我一直在寻找的答案。和javascript引擎一样,过去也有一个vbscript引擎,它将人类可读的代码转换为机器代码。这个vbscript引擎类似于CLR和JVM中的JIT编译器。只是它直接从人类可读代码转换为机器代码。与具有中间字节代码的C#相反。
参考这篇VB脚本维基百科文章,
- 当在浏览器中执行VB脚本时,它使用
vbscript.dll
来解释VB脚本 - 当从命令行或批处理文件执行VB脚本文件时,
cscript.exe
用于解释VB脚本 - 当VB脚本被Windows操作系统本身用于各种目的时,如在任务栏的右角显示错误消息框或黄色通知消息,则使用作为Windows服务的
wscript.exe
对其进行解释