Zac*_*and 10
编程语言只是抽象原则的文本表示.它不是编译或解释 - 它只是文本.
编译器将采用该语言并将其转换为机器语言(汇编代码),这可以很容易地转换为机器指令(大多数系统使用二进制编码,但也有一些"模糊"系统).
解释器将采用该语言并将其转换为一些字节码解释,可以在支持的平台上轻松转换为二进制编码.
两者之间的区别在于何时发生变化.编译器通常会在用户运行程序之前将文本转换为机器语言并将其打包成二进制文件(例如,当程序员正在编译它时).当用户运行程序时,解释器通常会执行该转换.两种方法都需要权衡.
这里的重点是语言本身不是编译也不是解释; 它只是一个文本标准.将该文本转换为机器指令的实现细节是进行编译或解释选择的地方.
有些语言旨在简化编译,只为用户提供直接映射到机器指令的功能,例如算术、指针操作、函数调用(以及提供虚拟调度的间接函数调用)。解释这些一般也很容易,但性能特别差。C就是其中之一。
其他语言是为解释而设计的。它们通常具有动态类型、延迟调度、动态(非词法)闭包作用域、反射、动态代码生成以及其他使编译变得异常困难的功能。当然,困难并不等于不可能,并且由于艰苦的努力,其中一些语言最终确实出现了编译器。
| 归档时间: |
|
| 查看次数: |
11556 次 |
| 最近记录: |