说源代码总是可供口译员使用是什么意思?

时间:2012-12-26 07:00:36

标签: c++ compiler-construction interpreter

来自思考C ++ - Vol。 1

  

口译员有很多优点。从编写代码转换到   执行代码几乎是立即执行, 始终是源代码   可用 因此,当出现错误时,解释器可以更加具体   发生。

粗线是什么意思?
这是否意味着除非整个程序在内存中,否则解释器无法工作?这意味着我们不能将程序划分为模块,然后在需要时解释模块(就像我们使用编译器一样)?

如果是,那么这背后的原因是什么?


UPDATE:

来自思考C ++ - Vol。 1

  

大多数口译员要求将完整的源代码一次性带入口译员。

那么,这现在表明我上面写的是什么吗?

enter image description here

2 个答案:

答案 0 :(得分:2)

对于编译语言,当你运行程序时,你没有源代码 - 你已经编译了机器/字节代码并且这是在机器上执行的(或者在VM的情况下执行)爪哇)。

口译员处理源代码并立即解释它并使用某种内部机制执行它。由于他们的工作数据本身就是源代码,因此它们始终可用。

答案 1 :(得分:2)

  

这是否意味着除非整个程序在内存中,否则解释器无法工作?

没有。整个程序不需要在内存中。部件在需要时加载到内存中。

  

意味着我们不能将程序划分为模块,然后将模块解释为   并在需要时(就像我们使用编译器一样)?

您可以很好地模块化您的程序。但是,如果口译员需要,应该可以使用所需的模块。

粗线:源代码始终可用

这意味着它是运行的源代码,即在运行时转换为机器特定的指令。 逐行而不转换为其他(中间)格式。 (由编译器完成)

来自维基百科:

  

interpreter可能是一个使用以下策略执行的程序:

     
      
  1. 直接执行源代码
  2.   
  3. 将源代码翻译成一些有效的中间表示(代码)并立即执行此
  4.   
  5. 显式执行由编译器生成的存储的预编译代码1,编译器是解释器系统的一部分
  6.         

    <强>效率

         

    解释器的主要缺点是,当解释程序时,它通常比编译时运行得慢。速度的差异可能很小或很大;通常是一个数量级,有时甚至更多。在解释器下运行程序通常比运行已编译的代码需要更长的时间,但解释它所花费的时间比编译和运行它所需的总时间要短。当编辑 - 解释 - 调试周期通常比编辑 - 编译 - 运行 - 调试周期短得多时,这在原型设计和测试代码时尤其重要。