Javascript 关于node.js的编译语言与解释语言的定义

Javascript 关于node.js的编译语言与解释语言的定义,javascript,v8,interpreted-language,Javascript,V8,Interpreted Language,最近就node.js中的javascript是解释还是编译进行了争论。我认为它是一种解释性语言,而她认为它是编译的,因为她必须重新启动节点应用程序才能看到js代码的更改 我认为它没有被认为是编译的,因为它在运行之前没有传统的编译步骤,尽管我猜从技术上讲,v8引擎在运行时会动态编译它 她说,动态解释运行时的定义意味着它必须监控文件系统对源文件的更改,并相应地更新运行时——这确实是定义吗 解释语言的定义是否需要实时更新的文件监控?什么定义包含这样一个特性 正确的定义是什么?我建议,因为您可以使用断点

最近就node.js中的javascript是解释还是编译进行了争论。我认为它是一种解释性语言,而她认为它是编译的,因为她必须重新启动节点应用程序才能看到js代码的更改

我认为它没有被认为是编译的,因为它在运行之前没有传统的编译步骤,尽管我猜从技术上讲,v8引擎在运行时会动态编译它

她说,动态解释运行时的定义意味着它必须监控文件系统对源文件的更改,并相应地更新运行时——这确实是定义吗

解释语言的定义是否需要实时更新的文件监控?什么定义包含这样一个特性


正确的定义是什么?

我建议,因为您可以使用断点运行节点,动态更改代码(以及内存中的数据),然后继续运行,这可能足以证明它可以临时运行(解释)


但是,从技术上讲,每种编程语言都是一种编译的编程语言,不管它是否是传统的编译语言。

我建议,因为您可以使用断点运行节点,动态地更改代码(以及内存中的数据)并继续运行,这可能足以证明它可以临时运行(解释)


但是,从技术上讲,每种编程语言都是一种编译的编程语言,不管它是否是传统的编译语言。

简单的回答是,她比你更正确。尽管按照这个定义,传统的javascript不也会被认为是编译的吗?另外,您可以使用一种解释语言,它不监视代码文件的实时重新加载,对吗?您应该在这里阅读相同问题的答案。“编译”通常意味着将代码转换为其他表示形式(机器码或字节码),然后执行该表示形式。一种语言不能被解释或编译(有C解释器),但该语言的实现可以被解释或编译。顺便说一句,她说的动态解释运行时的定义是完全错误的。虽然你可以说v8使javascript成为一种编译语言,但我觉得这与javascript作为解释语言的广义定义背道而驰。简单的回答是,她比你更正确。尽管根据这个定义,传统的javascript不也被认为是编译的吗?另外,您可以使用一种解释语言,它不监视代码文件的实时重新加载,对吗?您应该在这里阅读相同问题的答案。“编译”通常意味着将代码转换为其他表示形式(机器码或字节码),然后执行该表示形式。一种语言不能被解释或编译(有C解释器),但该语言的实现可以被解释或编译。顺便说一句,她说的动态解释运行时的定义是完全错误的。虽然你可以说v8使javascript成为一种编译语言,但我觉得这与javascript作为一种解释语言的广义定义背道而驰。传统上是编译的吗?这是什么意思?我所说的“传统编译”是指“有一个明显独立的用户驱动的编译步骤”。实际上,node.js使用V8,这是一个纯编译器,它从不解释。V8中没有解释器,只有两个编译器(一个在旧版本中)。传统上编译吗?这是什么意思?我所说的“传统编译”是指“有一个明显独立的用户驱动的编译步骤”。实际上,node.js使用V8,这是一个纯编译器,它从不解释。V8中没有解释器,只有两个编译器(一个在旧版本中)。