C编译或/和解释?

时间:2013-11-29 16:18:25

标签: c++ c

关于“编译与解释”有很多答案和引文,我确实理解它们之间的区别。

说到C,我不确定。 C是编译的还是解释的?或者两者兼而有之?如果你加上一些解释,我真的很感激。

3 个答案:

答案 0 :(得分:9)

编程语言只是抽象原则的文本表示。它不是编译或解释的 - 它只是文本。

编译器将采用该语言并将其转换为机器语言(汇编代码),这可以很容易地转换为机器指令(大多数系统使用二进制编码,但也有一些“模糊”系统)。

解释器将采用该语言并将其转换为一些字节码解释,可以在支持的平台上轻松转换为二进制编码。

两者之间的区别在于发生了这种变化。编译器通常会在用户运行程序之前将文本转换为机器语言并将其打包成二进制文件(例如,当程序员编译它时)。当用户运行程序时,解释器通常会执行转换。两种方法都存在权衡取舍。

这里的重点是语言本身编译或解释;它只是一个文本标准。将该文本转换为机器指令的实现细节是进行编译或解释的选择。

答案 1 :(得分:5)

将语言分类为/或;通常是错误的。语言将要做什么?它只是纸上的规范,它不能阻止人们将其实现为编译器或解释器,或某种组合/混合方法。

答案 2 :(得分:3)

有些语言旨在简化编译,只为用户提供直接映射到机器指令的功能,例如算术,指针操作,函数调用(以及提供的间接函数调用)你虚拟调度)。解释这些通常也很容易,但性能特别差。 C就是其中之一。

其他语言专为解释而设计。这些通常具有动态类型,惰性调度,动态(非词法)闭包范围,反射,动态代码和其他使编译难以置信的功能。当然困难并不是不可能的,其中一些语言最终会因为Herculean的努力而最终成为编译器。