【发布时间】:2012-03-04 15:53:20
【问题描述】:
我读过很多关于 C# 的争议,有人说它是解释型的,有人说它不是。我确实知道它已编译到 MSIL 中,然后在运行时 JITed,具体取决于处理器等……但它不是仍以需要 VM (.NET) 运行的方式进行解释吗?
【问题讨论】:
-
谁曾经定义过“解释 == 需要 VM”?可以在不定义 VM 的情况下从源代码进行解释(一些 PLT 人员可能会争辩说每种语言都是 VM,但这不符合一般用法),可以有一个“VM”,它是抽象定义的,但只能通过编译来实现机器码方言。此外,如果有的话,MSIL 将被解释 - C# 显然被编译为 MSIL,甚至提前。
-
我想你可以问同样的关于 java 的问题
-
没有“争议”。争论意味着有争论。只有事实——.NET 使用 IL(以及一个用于 JIT 编译该 IL 的 VM)。如果您想将其称为解释,那很好,但您需要记住,与“解释性”(相对较差的性能、动态类型、后期绑定)的典型关联不适用于 .NET,因此这种分类的价值是可疑的。
-
@GETah,哈哈,如今 Java 几乎像砖一样便携。