C编译或/和解释?

Han*_*och -1 c c++

关于"编译与解释"有很多答案和引文,我确实理解它们之间的差异.

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

Zac*_*and 10

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

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

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

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

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


unw*_*ind 5

通常是编译的,但当然没有任何东西阻止人们实现解释器.

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

  • 我不认为用户会发现这个答案在任何方面都有用...... (3认同)
  • 很明显,用户要求C的典型用法(即编译)和编译和解释之间的差异之间的简短描述. (2认同)

Ben*_*igt 5

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

其他语言是为解释而设计的。它们通常具有动态类型、延迟调度、动态(非词法)闭包作用域、反射、动态代码生成以及其他使编译变得异常困难的功能。当然,困难并不等于不可能,并且由于艰苦的努力,其中一些语言最终确实出现了编译器。