Adr*_*der 56
编译器
编译器是第一种要编写的翻译程序.这个想法很简单:编写程序,然后将其交给编译器进行翻译.然后运行结果.
口译
解释器也是一个将高级语言翻译成低级语言的程序,但它在程序运行时才会执行.您使用文本编辑器或类似的东西编写程序,然后指示解释器运行该程序.它需要程序,一次一行,并在运行之前转换每一行:它转换第一行并运行它,然后转换第二行并运行它等.
编译器特性:
口译员特点:
mar*_*nas 31
一个的S - >Ť译者接受源语言表达小号代码,并将其转换到另一个(目标)语言表达T.等效代码
译者的例子:
一个小号解释接受语言表达小号代码,并立即执行该代码.它通过一次获取,分析和执行一条指令来工作.
当用户以交互方式输入指令(想想Python)并希望在输入下一条指令之前获取输出时,这很好.当程序只执行一次或需要便携时也很有用.
行为
编译器将源代码转换为机器代码,但不执行源代码或目标代码.
解释器一次执行一条指令的源代码,但不翻译源代码.
性能
解释性编译器
解释性编译器是编译器和解释器之间的良好折衷.它将源程序转换为虚拟机代码,然后进行解释.
解释编译器将快速翻译与适度快速执行相结合,前提是:
示例:JDK为Java提供了解释性编译器.
KMå*_*Mån 19
编译器将一种计算机语言的源代码转换为另一种计算机语言.
解释器,直接执行源代码(通常在自己的虚拟机内).
alt text http://content.answers.com/main/content/img/CDE/COMPILE.GIF
通常,解释器的性能成本很高.
差异与他们如何工作
问: 编译器和口译员用的是什么?
答:大多数程序都是用高级语言编写的(c#,java ...).高级语言包含可理解的单词和短语.另一方面,计算机(当我写这篇文章的时候)理解机器代码,它只是0和1的二进制/机器代码.因此,我们需要将高级代码转换为源代码,即(机器代码/二进制).因此,转换这个词.
因此,我们得出结论,编译器/解释器的工作是将高级代码转换为机器代码.
但两者都有不同的"翻译"代码的方式
区别:
编译:
将源代码转换为某种中间形式.对于静态语言,编译器通常将源代码转换为程序集(通常不会存储到磁盘),然后调用汇编程序将程序集转换为二进制代码,通常将其存储为目标文件(.o或.obj后缀)通常),然后调用链接器将目标文件链接到二进制可执行文件.此外,通常将编译,组装,链接的整个过程称为编译.所以你可以把gcc称为编译器,但它实际上调用了cc1,它是要编译的编译器,因为它是要汇编的汇编器,ld是要链接的链接器.
解释:
语言有一个中间所谓的字节码形式,源代码首先转换为字节码,这个过程可以称为编译,javac就是一个例子.字节码不能在主机上运行,它需要一个程序,这实际上是从OS的角度来看,将字节码解释为主机,这个程序叫做解释器,想想java.某些语言(如python)使用单一语言进行编译和解释
- 均来自:https://www.quora.com/What-are-the-differences-between-a-compiler-an-interpreter-and-an-assembler-Provide-examples
对比
翻译员
- 分析源代码所需的时间较少,但总体执行时间较慢.
- 不生成中间目标代码,因此是内存有效的.
- 继续翻译程序,直到满足第一个错误,在这种情况下它会停止.因此调试很容易.
编译器
- 分析源代码需要花费大量时间,但总体执行时间相对较快.
- 生成进一步需要链接的中间对象代码,因此需要更多内存.
- 只有在扫描整个程序后才会生成错误消息.因此调试比较困难.
- 来自:https://www.programiz.com/article/difference-compiler-interpreter
语言示例
解读
编译
| 归档时间: |
|
| 查看次数: |
68738 次 |
| 最近记录: |