编译器和解释器之间的差异

在Java和C#编程语言出现之前,计算机程序只进行编译或解释。汇编语言、C语言、C++语言、FORTRAN语言、Pascal语言等几乎都被编译成机器代码。像Basic、VbScript和JavaScript这样的语言通常被解释。...

在Java和C#编程语言出现之前,计算机程序只进行编译或解释。汇编语言、C语言、C++语言、FORTRAN语言、Pascal语言等几乎都被编译成机器代码。像Basic、VbScript和JavaScript这样的语言通常被解释。

Child using a laptop

那么编译程序和解释程序之间的区别是什么呢?

编撰

要编写程序,请执行以下步骤:

  1. 编辑程序
  2. 将程序编译成机器代码文件。
  3. 将机器代码文件链接到可运行程序(也称为exe)中。
  4. 调试或运行程序

对于一些语言,如turbopascal和Delphi,步骤2和3是组合在一起的。

机器代码文件是机器代码的自包含模块,需要链接在一起以构建最终程序。有单独的机器代码文件的原因是效率;编译器只需重新编译已更改的源代码。来自未更改模块的机器代码文件将被重用。这被称为制作应用程序。如果您希望重新编译和重建所有源代码,那么这就是所谓的构建。

链接是一个技术复杂的过程,不同模块之间的所有函数调用都连接在一起,为变量分配内存位置,所有代码都放在内存中,然后作为完整的程序写入磁盘。这通常比编译慢,因为所有机器代码文件都必须读入内存并链接在一起。

口译

通过解释器运行程序的步骤如下

  1. 编辑程序
  2. 调试或运行程序

这是一个快得多的过程,它帮助新手程序员比使用编译器更快地编辑和测试代码。缺点是解释程序的运行速度比编译程序慢得多。每行代码都需要重新读取,然后重新处理,速度要慢5-10倍。

输入java和c#

这两种语言都是半编译的。它们生成了一个为解释而优化的中间代码。这种中间语言独立于底层硬件,只要为该硬件编写了解释器,就可以更容易地将写入其中的程序移植到其他处理器。

Java在编译时生成字节码,由Java虚拟机(JVM)在运行时进行解释。许多JVM使用即时编译器将字节码转换为本机机器码,然后运行该代码以提高解释速度。实际上,Java源代码是在两个阶段的过程中编译的。

C#被编译成公共中间语言(CIL),以前称为Microsoft中间语言MSIL。它由公共语言运行库(CLR)运行。CLR是.NET framework的一部分,该环境提供垃圾收集和即时编译等支持服务。

Java和C#都采用了加速技术,因此有效速度几乎与纯编译语言一样快。如果应用程序花费大量时间进行输入和输出,如读取磁盘文件或运行数据库查询,那么速度差异几乎不明显。

这对我意味着什么?

除非您对速度有特别的需求,并且必须将帧速率提高几帧/秒,否则您可以忽略速度。C、C++或C语言的任何一个都将为游戏、编译器和操作系统提供足够的速度。

  • 发表于 2021-09-15 05:05
  • 阅读 ( 223 )
  • 分类:编程

你可能感兴趣的文章

蟒蛇2(python 2)和三(3)的区别

...面向对象的编程。 Python使用解释器来运行代码。与基于编译器的语言不同,Python解释器不会一次遍历整个代码。相反,它逐行读取,如果解释器发现错误,它将停止进一步的处理,并向用户发出错误消息。Python2使用时间更长,...

  • 发布于 2020-10-20 01:55
  • 阅读 ( 348 )

高级语言(high level language)和低级语言(low level language)的区别

...立的和便携的。 高级语言的语法与英语相似,因此使用编译器或解释器将人类可读的程序转换为计算机可读的机器代码。这些语言不直接与硬件交互。因此,高级语言需要时间来执行。高级语言也不具有内存效率。它们可能需...

  • 发布于 2020-10-23 20:12
  • 阅读 ( 655 )

为什么有些编程语言比其他语言快?

... 编译器效率 ...

  • 发布于 2021-03-13 15:07
  • 阅读 ( 345 )

java与javascript:你需要知道的一切

...本。但常识是错误的。这两种语言有一些共同点,但它们之间的差异比它们的相似之处要大得多。 ...

  • 发布于 2021-03-14 17:24
  • 阅读 ( 237 )

哪个linux shell最好?比较了5种常见的贝壳

... 然后编译器将高级语言翻译成二进制文件,就像可执行文件一样。这个二进制文件就是您执行以启动所述应用程序的文件。 ...

  • 发布于 2021-03-30 18:45
  • 阅读 ( 371 )

选中的(checked)和未检查的异常(unchecked exception)的区别

...用throws关键字声明该异常,否则它将给出一个编译错误。编译器为每个throw语句检查异常对象的类型,如果它显示为checked,编译器将检查源代码,以确保在抛出或声明异常的方法中处理该异常,以便可以进一步处理该异常。 Excep...

  • 发布于 2021-06-25 08:14
  • 阅读 ( 402 )

编译(compiled)和解释语言(interpreted language)的区别

...代码必须转换成机器可读的指令。简而言之,实现通常是编译器而不是解释器的语言称为编译语言。   什么是解释性语言(an interpreted language)? 解释器是用其他语言编写并编译成机器可读语言的程序。解释器本身就是机器语言...

  • 发布于 2021-06-26 05:11
  • 阅读 ( 764 )

编译器解释器(compiler interpreter)和汇编程序(assembler)的区别

...级或汇编程序应转换成机器语言,以便计算机理解指令。编译器、解释器和汇编程序是将高级或汇编语言程序转换为机器语言的翻译器。 覆盖的关键领域 1.什么是编译器-定义,功能2.什么是解释器-定义,功能3.什么是汇编器-定...

  • 发布于 2021-06-30 18:09
  • 阅读 ( 1396 )

翻译(translator)和程序设计语言中的解释器(interpreter in programming language)的区别

...从一种语言转换成另一种语言。有各种类型的翻译器,如编译器、解释器和汇编程序。编译器将整个高级语言源代码转换为机器代码。如果有任何语法或语义错误,程序将不会执行。当编译器检查整个程序时,扫描时间很长,但...

  • 发布于 2021-06-30 18:15
  • 阅读 ( 362 )

脚本语言(scripting language)和程序设计语言(programming language)的区别

...解释器转换为机器代码,而用编程语言编写的源代码使用编译器或解释器转换为机器代码。 脚本语言是一种在一个文件中包含一系列命令的计算机语言,可以在不编译的情况下执行。编程语言是一种提供规则、语法和命令来开...

  • 发布于 2021-07-01 02:49
  • 阅读 ( 263 )
jxdfrnb
jxdfrnb

0 篇文章

相关推荐