SIr*_*lot 113 javascript java programming-languages
在阅读了关于这个主题的一些材料之后,我仍然不确定编译语言和解释语言之间的区别是什么.我被告知这是Java和JavaScript之间的差异之一.请有人帮我理解吗?
Nor*_*sey 156
编译语言和解释语言有什么区别?
差异不在于语言; 它在实施中.
从我的系统中得到了这个,这是一个答案:
在编译的实现中,原始程序被转换为本机机器指令,其由硬件直接执行.
在解释的实现中,原始程序被翻译成其他东西.另一个名为"解释器"的程序然后检查"别的东西"并执行所要求的任何动作.根据语言及其实现,有各种形式的"别的东西".从更受欢迎到不那么受欢迎,"其他东西"可能是
虚拟机的二进制指令,通常称为字节码,在Lua,Python,Ruby,Smalltalk和许多其他系统中完成(该方法在20世纪70年代由UCSD P系统和UCSD Pascal推广)
原始程序的树状表示,例如抽象语法树,就像许多原型或教育解释器一样
源程序的标记化表示,类似于Tcl
源程序的字符,如MINT和TRAC中所做的那样
使问题复杂化的一件事是可以将(编译)字节码转换为本机机器指令.因此,成功的整合实现可能最终获得编译器.如果编译器在后台动态运行,它通常称为即时编译器或JIT编译器.JIT是为Java,JavaScript,Lua开发的,我敢说其他许多语言.此时,您可以使用混合实现,其中解释了一些代码并编译了一些代码.
sta*_*ica 55
Java和JavaScript是证明这种差异的一个相当糟糕的例子,因为它们都是解释型语言.Java (已解释)和C(或C++)(已编译)可能是一个更好的示例.
为什么翻阅文本?正如这个答案正确指出的那样,解释/编译是关于语言的具体实现,而不是语言本身.虽然像"C是一种编译语言"这样的陈述通常是正确的,但没有什么可以阻止某人编写C语言解释器.实际上,C语言的解释器确实存在.
基本上,编译的代码可以由计算机的CPU直接执行.也就是说,可执行代码在CPU的"本机"语言(汇编语言)中指定.
但是,解释语言的代码必须在运行时从任何格式转换为CPU机器指令.这种翻译由翻译完成.
把它的另一种方式是,解释语言代码翻译成机器指令一步一步,而正在执行的程序,而编译语言有代码已经被翻译之前执行程序.
小智 14
这是编译器与解释器语言之间的基本区别.
编译语言
口译员语言:
通常,编译器读取高级语言计算机代码并将其转换为 p 代码或本机机器代码。解释器直接从 p 代码或解释过的代码(如 Basic 或 Lisp)运行。通常,编译后的代码运行得更快,更紧凑,并且已经发现了所有的语法错误和许多非法引用错误。只有在应用程序尝试解释受影响的代码后,解释代码才会发现此类错误。解释代码通常适用于只使用一次或最多使用几次的简单应用程序,甚至可能用于原型设计。编译后的代码更适合严肃的应用程序。编译器首先接收整个程序,检查错误,编译它然后执行它。而解释器逐行执行此操作,因此需要一行来检查错误,
如果您需要更多信息,只需谷歌搜索“编译器和解释器之间的差异”。
| 归档时间: |
|
| 查看次数: |
145134 次 |
| 最近记录: |