Java 什么';编译语言和解释语言的区别是什么?

Java 什么';编译语言和解释语言的区别是什么?,java,javascript,programming-languages,Java,Javascript,Programming Languages,在阅读了一些关于这个主题的材料之后,我仍然不确定编译语言和解释语言之间的区别是什么。我被告知这是Java和JavaScript之间的区别之一。有人能帮我理解一下吗?Java和JavaScript是一个很糟糕的例子来说明这种差异,因为它们都是解释语言。Java(解释)和C(或C++)(编译)可能是一个更好的例子 为什么删除文本?正如正确指出的,解释/编译是关于一种语言的具体实现,而不是语言本身。虽然像“C是一种编译语言”这样的语句通常是正确的,但没有什么可以阻止人们编写C语言解释器。其实, 基本上

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

Java和JavaScript是一个很糟糕的例子来说明这种差异,因为它们都是解释语言。Java(解释)和C(或C++)(编译)可能是一个更好的例子

为什么删除文本?正如正确指出的,解释/编译是关于一种语言的具体实现,而不是语言本身。虽然像“C是一种编译语言”这样的语句通常是正确的,但没有什么可以阻止人们编写C语言解释器。其实,

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

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


另一种说法是,解释语言是在程序执行时逐步将代码翻译成机器指令,而编译语言则是在程序执行之前将代码翻译成机器指令。

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


如果您需要更多信息,只需在谷歌上搜索“编译器和解释器之间的差异”。

这是一个非常模糊的区别,实际上通常不是一种语言本身的属性,而是您用来执行该语言代码的程序的属性

然而,大多数语言主要以一种或另一种形式使用,是的,Java基本上总是编译的,而javascript基本上总是解释的

编译源代码就是在源代码上运行一个程序,该程序生成一个二进制可执行文件,在运行时,该文件的行为由源代码定义。例如,javac将HumanReadBale.java文件编译成机器可读的.class文件

要解释源代码,需要在源代码上运行一个程序,该程序立即生成定义的行为,而无需生成中间文件。例如,当您的web浏览器加载stackoverflow.com时,它会解释一组javascript(您可以通过查看页面源代码查看这些javascript),并产生这些页面具有的许多良好效果,例如,向上投票或顶部的小通知条

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

差异不在于语言;它正在实施中。

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

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

  • 在解释实现中,原始程序被转换为其他程序。另一个程序称为“解释器”,然后检查“其他东西”,并执行所需的任何操作。根据语言及其实现,“其他东西”有多种形式。从更受欢迎到不受欢迎,“其他东西”可能是

    • 虚拟机的二进制指令,通常称为字节码,如Lua、Python、Ruby、Smalltalk和许多其他系统中的指令(该方法在20世纪70年代由UCSD p-system和UCSD Pascal推广)

    • 原始程序的树状表示,如抽象语法树,许多原型或教育解释器都是这样做的

    • 源程序的标记化表示,类似于Tcl

    • 源程序的字符,如MINT和TRAC中所做的


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

解释的语言在运行时根据shell脚本中的指令执行,编译的语言是编译的语言(更改为汇编语言,CPU可以理解)然后在C++中执行。

这里是编译器与解释器语言之间的基本区别。 编译器语言

  • 将整个程序作为单个输入,并将其转换为存储在文件中的目标代码
  • 生成中间目标代码
  • e、 g:C,C++
  • 编译后的程序运行得更快,因为编译是在执行之前完成的
  • 内存需求是