java源程序和编译型运行区别,编译语言和解释语言有什么区别?

问题

在阅读了关于这个主题的一些材料之后,我仍然不确定编译语言和解释语言之间的区别是什么。我被告知这是Java和JavaScript之间的差异之一。请有人帮我理解吗?

#1 热门回答(130 赞)

编译语言和解释语言有什么区别?

区别在于语言;它是在实现。

从我的系统中得到了这个,这是一个答案:

在编译实现中,原始程序被转换为本机机器指令,由硬件直接执行。

在解释的实现中,原始程序被翻译成其他内容。另一个名为"解释器"的程序然后检查"别的东西"并执行所要求的任何动作。根据语言及其实现,有各种形式的"别的东西"。从更受欢迎到不太受欢迎,"其他东西"可能是虚拟机的二进制指令,通常称为字节码,就像在Lua,Python,Ruby,Smalltalk和许多其他系统中所做的那样(该方法在20世纪70年代由UCSD P系统和UCSD Pascal)原始程序的树状表示,例如抽象语法树,就像许多原型或教育解释器一样。源程序的标记化表示,类似于Tcl的字符源程序,如在MINT和TRAC中所做的那样

使问题复杂化的一件事是可以将(编译)字节码转换为本机机器指令。因此,成功的整合实现可能最终获得编译器。如果编译器在后台动态运行,它通常被称为即时编译器或JIT编译器。 JIT是为Java,JavaScript,Lua开发的,我敢说其他许多语言。此时,你可以使用混合实现,其中解释了一些代码并编译了一些代码。

#2 热门回答(43 赞)

Java和JavaScript是展示这种差异的一个相当糟糕的例子,因为它们都是解释型语言。 Java(已解释)和C(或C)(已编译)可能是一个更好的示例。

为什么翻阅文本?正如这个答案正确指出的那样,解释/编译是关于语言的具体实现,而不是语言本身。虽然像"C是一种编译语言"这样的语句通常是正确的,但没有什么可以阻止某人编写C语言解释器。实际上,C语言的解释器确实存在。

基本上,编译的代码可以由计算机的CPU直接执行。也就是说,可执行代码在CPU的"本机"语言(汇编语言)中指定。

但是,解释语言的代码必须在运行时从任何格式转换为CPU机器指令。这种翻译由翻译完成。

另一种方法是将解释为语言代码,在程序正在执行时逐步转换为机器指令,而编译语言的代码已经在程序执行前被翻译。

#3 热门回答(3 赞)

通常,编译器读取更高级语言的计算机代码并将其转换为p代码或本机代码。解释器直接从p代码或解释代码(如Basic或Lisp)运行。通常,编译的代码运行得更快,更紧凑,并且已经发现所有语法错误和许多非法引用错误。解释的代码仅在应用程序尝试解释受影响的代码后才发现此类错误。解释代码通常适用于简单的应用程序,这些应用程序只能使用一次或最多使用一次,甚至可能用于原型设计。编译代码更适合严肃的应用程序。编译器首先接受整个程序,检查错误,编译它然后执行它。然而,解释器逐行执行此操作,因此需要一行,检查错误然后执行它。

如果你需要更多信息,只需谷歌"编译器和解释器之间的差异"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值