我注意到一些不太古老的 VM 语言,例如 Lua、NekoVM 和用 C 编写的 Potion。
看起来他们正在重新实现许多 C++ 功能。
用 C 而不是 C++ 编写它们有好处吗?
最佳答案
我对 Lua 有所了解。
Lua 是用纯 ANSI 标准 C 编写的,可以在任何 ANSI 平台上编译,没有错误也没有警告。因此,Lua 几乎可以在世界上任何平台上运行,包括像Canon PowerShot cameras 这样的平台。 .让 C++ 在奇怪的小型嵌入式平台上运行要困难得多。
Lua 是一个高性能的 VM,并且由于 C 无法表达方法调用(可能是虚拟的也可能不是)和运算符重载,因此更容易预测 C 代码的性能 只需查看代码即可。 C++,尤其是模板库,使得在不知不觉中烧毁资源变得有点太容易了。 (Lua 的完整实现不仅包括 VM,还包括库,适合 145K 的 x86 目标代码。整个语言甚至适合一个很小的 256K 缓存,你可以在 Intel i7 的 L2 和旧芯片的 L1 找到它。除非你真的知道什么你在做,编写编译成这么小的东西的 C++ 要难得多。)
这是用 C 编写 VM 的两个很好的理由。
关于c++ - 为什么许多 VM 看起来具有 C++ 功能却用 C 编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780027/