C# 用户似乎都希望 C# 可以和 C++ 一样编译为本地的机器码。如果 C# 可以编译为机器码,将可以做到:
1. 效率提高,可以取代 C++ 。
2. 反编译。
当然微软在
商业利益的考虑下是不允许这么做的。
不过仍然有很多人在尝试这个艰巨的任务。完成 C# 转原生代码,可以认为是 C# 转 C++ 代码。C# 本身就是学习 C++ 的,因此大部分语法都可以直接转为 C++ 代码。主要问题为 C# 的运行库很难移植到 C++。
1. C++ 没有 GC 库。这个可以使用开源的 GC 库代替。
2. C++ 没有
动态类型加载器。这个可以自动生成一些
静态方法来调用。
3. C++ 没有 .net 其它工具库。这个理论上可以先将微软开源的 C# 开源库编译为 C++,然后直接调用。
因此理论上,C# 编译为原生机器码是完全可行的,不过这是一个很大的项目。
这是一个开源的 C# 转 C++ 的项目。
http://makesharppwn.codeplex.com/
经过测试,它现在可以转换部分代码,还属于玩具级别。
我相信一个开发效率高又能在性能上和 C++ 媲美的语言还是很有需求的。与其开发 C# 的编译器还可能有版权问题。还不如自己创造一个和 C# 接近的新语言。
以下是我要做的新语言的目标,如果有意合作的请点击:
https://github.com/xuld/Tea/wiki/Tea-%E8%AF%AD%E8%A8%80%E5%BC%80%E5%8F%91%E5%AF%BB%E5%90%88%E4%BD%9C