在Java和C#编程语言出现之前,计算机程序只进行编译或解释。汇编语言、C语言、C++语言、FORTRAN语言、Pascal语言等几乎都被编译成机器代码。像Basic、VbScript和JavaScript这样的语言通常被解释。
那么编译程序和解释程序之间的区别是什么呢?
要编写程序,请执行以下步骤:
对于一些语言,如turbopascal和Delphi,步骤2和3是组合在一起的。
机器代码文件是机器代码的自包含模块,需要链接在一起以构建最终程序。有单独的机器代码文件的原因是效率;编译器只需重新编译已更改的源代码。来自未更改模块的机器代码文件将被重用。这被称为制作应用程序。如果您希望重新编译和重建所有源代码,那么这就是所谓的构建。
链接是一个技术复杂的过程,不同模块之间的所有函数调用都连接在一起,为变量分配内存位置,所有代码都放在内存中,然后作为完整的程序写入磁盘。这通常比编译慢,因为所有机器代码文件都必须读入内存并链接在一起。
通过解释器运行程序的步骤如下
这是一个快得多的过程,它帮助新手程序员比使用编译器更快地编辑和测试代码。缺点是解释程序的运行速度比编译程序慢得多。每行代码都需要重新读取,然后重新处理,速度要慢5-10倍。
这两种语言都是半编译的。它们生成了一个为解释而优化的中间代码。这种中间语言独立于底层硬件,只要为该硬件编写了解释器,就可以更容易地将写入其中的程序移植到其他处理器。
Java在编译时生成字节码,由Java虚拟机(JVM)在运行时进行解释。许多JVM使用即时编译器将字节码转换为本机机器码,然后运行该代码以提高解释速度。实际上,Java源代码是在两个阶段的过程中编译的。
C#被编译成公共中间语言(CIL),以前称为Microsoft中间语言MSIL。它由公共语言运行库(CLR)运行。CLR是.NET framework的一部分,该环境提供垃圾收集和即时编译等支持服务。
Java和C#都采用了加速技术,因此有效速度几乎与纯编译语言一样快。如果应用程序花费大量时间进行输入和输出,如读取磁盘文件或运行数据库查询,那么速度差异几乎不明显。
除非您对速度有特别的需求,并且必须将帧速率提高几帧/秒,否则您可以忽略速度。C、C++或C语言的任何一个都将为游戏、编译器和操作系统提供足够的速度。
...面向对象的编程。 Python使用解释器来运行代码。与基于编译器的语言不同,Python解释器不会一次遍历整个代码。相反,它逐行读取,如果解释器发现错误,它将停止进一步的处理,并向用户发出错误消息。Python2使用时间更长,...
...立的和便携的。 高级语言的语法与英语相似,因此使用编译器或解释器将人类可读的程序转换为计算机可读的机器代码。这些语言不直接与硬件交互。因此,高级语言需要时间来执行。高级语言也不具有内存效率。它们可能需...
...本。但常识是错误的。这两种语言有一些共同点,但它们之间的差异比它们的相似之处要大得多。 ...
... 然后编译器将高级语言翻译成二进制文件,就像可执行文件一样。这个二进制文件就是您执行以启动所述应用程序的文件。 ...
...用throws关键字声明该异常,否则它将给出一个编译错误。编译器为每个throw语句检查异常对象的类型,如果它显示为checked,编译器将检查源代码,以确保在抛出或声明异常的方法中处理该异常,以便可以进一步处理该异常。 Excep...
...代码必须转换成机器可读的指令。简而言之,实现通常是编译器而不是解释器的语言称为编译语言。 什么是解释性语言(an interpreted language)? 解释器是用其他语言编写并编译成机器可读语言的程序。解释器本身就是机器语言...
...级或汇编程序应转换成机器语言,以便计算机理解指令。编译器、解释器和汇编程序是将高级或汇编语言程序转换为机器语言的翻译器。 覆盖的关键领域 1.什么是编译器-定义,功能2.什么是解释器-定义,功能3.什么是汇编器-定...
...从一种语言转换成另一种语言。有各种类型的翻译器,如编译器、解释器和汇编程序。编译器将整个高级语言源代码转换为机器代码。如果有任何语法或语义错误,程序将不会执行。当编译器检查整个程序时,扫描时间很长,但...
...解释器转换为机器代码,而用编程语言编写的源代码使用编译器或解释器转换为机器代码。 脚本语言是一种在一个文件中包含一系列命令的计算机语言,可以在不编译的情况下执行。编程语言是一种提供规则、语法和命令来开...