什么是编程语言,如果它不被解释或编译

时间:2015-10-26 21:44:41

标签: compilation

如果我有一个“主机”应用程序,该应用程序在某个时刻执行并且知道某些代码的位置。如果它然后实时读取该代码然后做了正确的响应,例如在此代码中创建一个窗口,它会被调用:

int main()
{
    create magical mystical window()
}

我知道如果一种语言将代码直接编译成二进制文件,它将被称为编译语言,如果一种语言将代码转换为另一种语言,它将被称为解释语言。

2 个答案:

答案 0 :(得分:2)

  

我知道编程语言会读取代码并将其转换为另一种语言然后编译它将被称为解释语言。

不,这是一种带有额外步骤的编译语言。

您所描述的是一种解释性语言,其中解释器会弄清楚每行代码在运行时的含义。

答案 1 :(得分:1)

实际上,您知道的错误。

  • 一个软件,它接受代码并将其转换为二进制代码 可以直接在机器的OS和/或硬件上运行 的编译即可。
  • 如果编译器为不同于其自身执行的平台生成代码,则有时称为交叉编译器
  • 一个接受代码并执行它的软件 直接将其高级结构转换为低级别 在机器的操作系统和/或硬件上运行的结构通常称为 的解释即可。
  • 一个软件,它接受代码并将其转换为 另一组可以编译或解释的代码 有时称为 transpiler

然而,事情并非如此简单。例如,java被解释但它动态编译它运行的一些代码,但是,我们仍称它为解释语言。 C被称为编译语言,但是许多编译器会将C转换为汇编程序,然后将其组装成处理器将运行的字节码。因此,C是现实中的一种转换语言,但我们称它们是按惯例编译的语言,并且一些现代编译器(不幸的是)绕过了汇编程序。

因此,对于很多语言来说,它们是由惯例决定的以及它是如何被使用的。但是,正如大卫施瓦茨在评论中对自己对这个问题的回答所说:

  

实际上,将执行过程描述为该语言的属性并不是一个特别好的主意。