【问题标题】:Is C# used anywhere besides .NET programming?除了 .NET 编程之外,C# 是否在任何地方使用?
【发布时间】:2010-02-01 01:09:20
【问题描述】:

据我了解,虽然 C# 是由 Microsoft 创建的,但它是一种编程语言,可用于或实现除 .NET 编程之外的其他事物。例如,我可以为 C# 创建一个编译器,以针对本机 x86 或其他处理器甚至 JVM。我的理解不正确吗?有谁知道 C# 是否用于 .NET 以外的任何东西?

【问题讨论】:

    标签: c# compiler-construction programming-languages


    【解决方案1】:

    C# 用于名为“Singularity”的实验性操作系统,该操作系统从头开始以托管级别编写。一个值得关注的有趣项目!

    编辑:感谢 Jörg W Mittag 的评论 - Helios 实际上是 Singularity 的一种修改形式,以支持卫星内核,引用自我现在正在阅读的论文'Helios 是一个操作系统,旨在简化异构平台应用程序的编写、部署和调整任务。 Helios 引入了卫星内核,它在具有不同架构和性能特征的 CPU 之间导出一组统一的操作系统抽象。卫星内核允许开发人员针对熟悉的操作系统 API 和抽象编写应用程序。'...有趣...

    希望这会有所帮助, 最好的祝福, 汤姆。

    【讨论】:

    • 好吧,没什么可看的。该项目几年前就结束了,大多数研究人员现在都在研究 Helios(它基于 Singularity 并将其想法扩展到异构系统)。
    【解决方案2】:

    你是对的,它可以用于其他事情。这是一个语言规范……如果你花时间,你可以把它编译成你喜欢的任何东西,但这将是一个巨大的努力。

    我不知道除了 jrcs3 所说的 Mono 之外的任何其他用途,但希望 Eric Lippert 能够加入并为您提供关于 C# 的编译器观点

    【讨论】:

      【解决方案3】:

      C# itself is a specification specified by the ECMA 表示“指定形式并建立对用 C# 编程语言编写的程序的解释。”和the CLR 一样。目前最流行的这些实现由 Microsoft 提供,即您所知道的 C#.net。 C# 和 CLR 是开放标准,这意味着任何人都可以自己实现它们,因此形成了 mono,一个用于 mac/linux 的 C# 编译器。将此与 java 进行比较,后者的唯一实现是由 sun 提供的。它不是一个开放标准,因此您无法创建自己的实现。

      来自wikipedia

      Mono "一个开源的、跨平台的 C# 和与 Microsoft.NET 二进制兼容的 CLR 的实现"

      DotGNU“是 GNU 项目的一部分,旨在为 Microsoft 的 .NET Framework 提供免费软件替代品”

      Dot Net Anywhere 是一个针对嵌入式系统的 .net CIL 解释器。

      【讨论】:

      • 吹毛求疵:CLR 是 Microsoft 的专有实现。该规范称为VES(虚拟执行系统)。
      • 另外,Java 只有一种实现是不正确的。仅Sun就有四个实现,Oracle有一个,IBM至少有两个,微软有/有一个,Apache有一个,RedHat有一个,Apple有一个,Azul有一个,几乎每部手机供应商有一个,谷歌有一个,然后有几十个开源和研究。
      • Google 的实现是指Android 上的实现吗?那不是为非标准 JVM 编译的普通 Java 吗?
      • 转子的链接在这里...microsoft.com/downloads/…
      【解决方案4】:

      据我所知,所有当前存在的 C# 实现都构建为 CIL 并在 .NET CLR 或兼容环境中运行,而我所知道的 .NET CLR 的唯一替代方案是 Mono。

      换句话说,所有当前版本的 C# 构建都可以在 .NET 或 Mono 中运行。

      .NET 和 Mono 使用相同的“二进制文件”,因此所有当前的 C# 编译器实际上只有一个目标。

      【讨论】:

        【解决方案5】:

        另一个使用领域是通过 MonoTouch 开发 iPhone 应用程序(我现在也相信 iPad)。

        什么是 MonoTouch?

        MonoTouch 允许开发人员创建在 Apple 的 iPhone 和 Apple 的 iPod Touch 设备上运行的基于 C# 和 .NET 的应用程序,同时利用 iPhone API 并重用为 .NET 构建的代码和库以及现有的技能。

        大致上是这样的:

        MonoTouch -> MonoDevelop/C# -> 编写 iPhone 应用程序 -> 编译为本机代码 -> iPhone 应用程序。

        相关链接:

        【讨论】:

        • 它本身并不是真正的 C# 代码,因为它被翻译成目标 c 进行编译...
        • @tommieb75 是的,但它仍然符合 OP 的问题,并且不需要开发人员编写 Objective-C。他们正在编写 C#(甚至在一定程度上支持 LINQ)。
        【解决方案6】:

        请注意,Unity 3D 也允许“C# Scripts”,并编译为目标 Mac、Windows、Web、Wii 和 iPhone(以及 iPad)。

        【讨论】:

        • 郑重声明:请注意,随着最近发布的 iPhone OS 4.0 SDK 版本,Apple 已禁止在 iPhone OS 系列设备上使用所有形式的交叉编译语言。
        • 郑重声明:Apple 曾试图这样做,但不得不让步。没有任何 Mono 应用因此而被 App Store 拒绝,现在它已成为古老的历史。
        【解决方案7】:

        确实有一些工具可以将 .NET 程序集转换为独立的可执行文件或库,因此您不需要您的客户拥有 .NET 框架。这还可以在一定程度上进一步保护您的代码免受逆向工程的影响——您不能使用 Reflector 在本机二进制文件上查看 .NET 源代码。

        例如,参见Remotesoft Salamander .NET Protector

        但是,这并不是严格意义上的 C# -> 本机; Salamander 将 MSIL 转换为本机代码。

        另一方面,at least one academic project 使用 LLVM 制作 C# -> 本机编译器,称为 LLVM#。

        【讨论】:

        • 单个开发人员需要 1249 美元...如果您是一个致力于将项目推向市场的程序员,这有点贵...
        【解决方案8】:

        您可以在Mono 上编译 C# 程序。但这可能不算数。

        Mono 是在 Linux 和各种其他操作系统上运行的通用语言基础架构 (CLI) 的替代实现。如其他地方所述,C# 和 CLI 都是 ECMA 标准,任何愿意这样做的人都可以实施。

        Rotor 是另一个非 .NET 实现。

        【讨论】:

        • 我不同意...Mono 不是 .NET。它是一个用 C# 编写的平台。 ;)
        【解决方案9】:

        如果您使用 MonoTouch,您可以在 iPod 应用程序上使用它。

        【讨论】:

        • 不只是 iPod,包括 iPhone 和 iPad 在内的所有 iOS 平台。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-07-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多