2015-10-26 86 views
0

如果我有一个“宿主”应用程序在某个时刻执行并知道某些代码的位置。那会是什么叫如果然后阅读代码的实时,然后做如在此代码创建一个窗口的正确响应:什么是编程语言,如果它不被解释或编译

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

我知道,如果一个语言直接编译的代码转换成二进制它会被称为编译语言,并且如果一种语言将该代码转换成另一种语言,它将被称为解释型语言。

+0

如果代码被转换成另一种语言,它是一个“反编译器”,而不是一个解释器......“解释器”正是你想要的。 –

+0

谢谢,我现在明白,一种转换为另一种语言的语言称为反编译语言,编译成二进制语言的语言称为编译语言,应用程序实时编译的语言称为解释语言。 – Hyden

回答

1

其实,你错了什么,你知道

  • 一块软件,需要代码并将其转换为二进制文件 可以在机器的OS上运行的和/或硬件直接通常被称为 编译
  • 如果编译器为与其自身执行的平台不同的平台生成代码,那么这有时称为交叉编译器
  • 一块软件,需要代码并执行它直接 ,转换其高级别结构变为低电平,该机器的操作系统和/或硬件上运行 结构通常被称为 解释
  • 一段软件需要代码并将其转换为 然后可以编译或解释的另一组代码是 有时称为转发程序

然而,事情并不那么简单。例如,Java被解释,但它动态地编译它运行的一些代码,但是,我们仍然称它为解释型语言。 C被称为编译语言,但许多编译器会将C转换为汇编器,然后将其汇编成处理器将运行的字节码。因此,C实际上是一种编译语言,但我们把它称为一种编译语言,而且一些现代编译器(不幸地)绕过了汇编语言的步骤。

因此,对于很多语言,它们是通过约定来确定的,以及它是如何使用的。但是,正如大卫·施瓦茨在他自己的答案评论这个问题只是说:

真的,这不是来描述执行过程作为语言的属性特别好的主意。

+0

好的,谢谢。我会改变接受的答案,因为它更详细,并提到它被称为我不知道的“译员”,并有很好的例子。 – Hyden

2

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

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

你所描述的是一种解释型语言,解释者计算出每行代码在运行时意味着什么。

+0

好的,谢谢。所以,为了确保一种语言变成另一种语言,然后编译出来仍然是一种编译语言,而我所描述的是一种解释语言? – Hyden

+1

@Hydra是的。我应该指出,尽管C通常被认为是一种编译语言,但如果你愿意的话,你可以创建一个C解释器。同样,可以为大多数解释型语言编译编译器。真的,将执行过程描述为语言属性并不是一个好主意。 –