我理解了编译器和解释器的概念。我在互联网上研究了它,但我发现两个说法趋于矛盾: 一个是说---解释器不涉及中间代码,因此内存有效。
https://www.programiz.com/article/difference-compiler-interpreter
另一种说法是:解释器从输入中读取语句,将其转换为中间代码,执行它,然后按顺序接受下一个语句。 https://www.tutorialspoint.com/compiler_design/compiler_design_overview.htm
任何人都可以告诉我哪一个是正确的,哪一个是记忆效率的?
答案 0 :(得分:0)
编码解释器的方法有很多种。提到的两个选项都是可能的,有不同的权衡。
答案 1 :(得分:0)
简短的回答是两篇文章都不对。两者都有一个非常狭隘的(旧式的)解释器是什么的想法,对应于我们可能称之为"命令处理器"。而且,这两篇文章都不是自我一致的,所以试图解决他们的分歧可能是浪费时间。
也就是说,当programiz引用说"没有生成中间目标代码时,因此内存效率很高,"我认为它意味着什么(使用它的术语)是一个解释器确实将一个语句翻译成中间代码(注意"图:解释器"包括一个标有&#34的框;中级Code"),但是:
鉴于阅读,这两篇文章或多或少都同意。
但即使考虑到“口译员”的狭隘定义,也要说它的内存效率很高,而且#34;"只是因为它一次最多只保留一个语句的内存中间代码,而忽略了解释器本身所占用的所有内存。
此外,请注意,这只能讨论解释器本身的内存效率,而 NOT 关于它运行的任何程序的内存效率。
简而言之:忘掉那些文章。 Wikipedia's article似乎是一个很好的起点。