据我了解,虽然C#是由微软创建的,但它是一种可用于除.NET编程之外的其他事物的编程语言。例如,我可以创建一个C#编译器,以针对本地x86或其他处理器甚至JVM。我的理解是否错误?有人知道C#除了.NET还用于什么吗?
据我了解,虽然C#是由微软创建的,但它是一种可用于除.NET编程之外的其他事物的编程语言。例如,我可以创建一个C#编译器,以针对本地x86或其他处理器甚至JVM。我的理解是否错误?有人知道C#除了.NET还用于什么吗?
C#被用于一个名为'Singularity'的实验性操作系统中,该操作系统从头开始使用托管级别编写。这是一个有趣的项目值得关注!
编辑:感谢Jörg W Mittag的评论 - Helios实际上是Singularity的修改形式,支持卫星内核。引用我现在正在阅读的论文 'Helios是一个旨在简化为异构平台编写、部署和调整应用程序任务的操作系统。Helios引入了卫星内核,它们跨不同架构和性能特征的CPU导出单一统一的OS抽象集合。卫星内核允许开发人员针对熟悉的操作系统API和抽象编写应用程序。'...有趣...
希望这可以帮助到您, 最好的问候, 汤姆。
除了像jrcs3所说的Mono之外,我不知道还有什么其他用途,但希望Eric Lippert会加入讨论并从编译器的角度给出关于C#的看法。
另一个使用领域是通过MonoTouch进行iPhone应用程序开发(我相信现在也包括iPad)。
MonoTouch是什么?
MonoTouch允许开发人员创建基于C#和.NET的应用程序,这些应用程序可以在苹果的iPhone和iPod Touch设备上运行,并利用iPhone API并重用已为.NET构建的代码和库以及现有技能。
粗略地说,它是这样的:
MonoTouch -> MonoDevelop/C# -> 编写iPhone应用程序 -> 编译为本机代码 -> iPhone应用程序。
相关链接:
你可以在Mono上编译C#程序。但那可能不算数。
Mono是Common Language Infrastructure (CLI)的另一种替代实现,可在Linux和其他各种操作系统上运行。正如其他地方所提到的,C#和CLI都是ECMA标准,任何有兴趣的人都可以实现它们。
Rotor是另一个非.NET实现。
确实有工具可以将.NET程序集转换为独立的可执行文件或库,这样您就不需要让客户安装.NET框架。这也在一定程度上进一步保护了您的代码免受反向工程的侵害--您无法使用Reflector查看本地二进制文件中的.NET源代码。
例如,Remotesoft Salamander .NET Protector。
但是,这并不是严格意义上的C#->本地;Salamander将MSIL转换为本地代码。
另一方面,至少有一个学术项目LLVM#正在使用LLVM制作C#->本地编译器。
如果你使用MonoTouch,你可以在iPod应用程序上使用它。