Joh*_*n V 6 c# programming-languages
我已经阅读了很多关于C#的争议,有些人说它被解释,有些人说它不是.我知道它被编译到MSIL中,然后在运行时进行JITed,具体取决于处理器等......但它是否仍然以它需要运行VM(.NET)的方式解释?
Oli*_*bes 30
VM只是微处理器的抽象.它只是一个定义,并不存在.即你无法在VM上运行代码; 但是,您可以为它生成IL代码.优点是语言编译器不需要知道有关不同类型的真实处理器的细节.由于不同的.NET语言(如C#或VB(以及更多))会生成IL,因此它们在此级别上兼容.这与其他约定(如常见类型系统)一起允许您在C#程序中使用从VB代码生成的DLL.
当您运行.NET应用程序时,IL会在Windows上及时编译,也可以在Mono中提前编译.在这两种情况下,都会生成实际处理器的本机代码.这个完全编译的代码在REAL微处理器上执行!
另一个方面是您必须编写的编译器数量.如果您有n种语言并且希望在m个处理器体系结构上运行它们,则需要n个 语言到IL的编译器 + m个 IL到本机代码的编译器.没有这个中间抽象层,你需要有n×m个编译器,这可能比n + m更高的数量!
| 归档时间: |
|
| 查看次数: |
19863 次 |
| 最近记录: |