【发布时间】:2020-06-21 10:07:37
【问题描述】:
对于像汇编这样的超低级语言,没有运行时,但对于其他实际经常使用的语言,如 Rust、C、C++、C#、Java、Kotlin、Swift 等,有一个运行时与该语言一起使用。为什么这些语言不是在编译时完成的?是因为它比使用运行时更难,还是因为使用运行时有一些实际好处?
【问题讨论】:
-
定义“运行时”。有一个运行时 system 与汇编器之上的所有语言相关联,因为所有语言都需要一个库来进行 I/O,除了该语言可能以 API 的方式提供的任何其他内容。一些语言具有解释实现,其中运行时系统包括解释器。你的问题是什么?
-
C 确实在编译时做所有事情,除了实际运行程序和调用库函数,一些 C 实现将其称为“C 运行时库”。您是否在 JIT VM 与动态链接到提前编译的机器代码库之间混淆了?
标签: compiler-construction runtime compile-time low-level