【问题标题】:Was C# compiler written in C++?C# 编译器是用 C++ 编写的吗?
【发布时间】:2015-04-14 15:55:26
【问题描述】:

C# 编译器是用 C++ 编写的吗?

【问题讨论】:

    标签: c# .net compiler-construction roslyn


    【解决方案1】:

    是的,但有计划用 C# 编写 C# 编译器,我相信在 this podcast 中已经讨论过。

    【讨论】:

    • @Josh:以前版本的编译器。它是迭代的,而不是递归的。他们没有使用相同版本的编译器来编译自己。相反,他们使用以前的版本来实现下一个版本的编译器。
    • 这没什么不寻常的。很大一部分“严肃”语言最终被引导为自托管。
    • 它被称为 Bootstrapping,用自己的语言编写编译器是相当普遍的。这通常也是一种自豪感,标志着该语言的一个重要里程碑。 en.wikipedia.org/wiki/Bootstrapping_(compilers)
    • 添加一个有意义的真实例子,用去年型号的电动螺丝刀组装今年的型号会不会错?
    • 这篇文章正在老化。用 C# 编写的 C# 编译器现在是否成为现实(.Net)?
    【解决方案2】:

    是的。

    Mono C# 编译器是用 C# 编写的。

    【讨论】:

    • 编译单声道 C# 编译器的编译器是否也是用 C# 编写的?
    【解决方案3】:

    .NET 框架是用简单托管 C (SMC) 编写的

    历史

    在 .NET Framework 的开发过程中,类库最初是使用名为 Simple Managed C (SMC) 的托管代码编译器系统编写的。1999 年 1 月,Anders Hejlsberg 组建了一个团队来构建当时名为Cool,代表“C-like Object Oriented Language”。[16]微软曾考虑将“Cool”作为语言的最终名称,但出于商标原因选择不这样做。到 .NET 项目在 2000 年 7 月的专业开发者大会上公开宣布时,该语言已重命名为 C#,并且类库和 ASP.NET 运行时已移植到 C#。

    发件人:http://en.wikipedia.org/wiki/C_Sharp_%28programming_language%29

    【讨论】:

    • 这回答了一个问题,但不是 OP 的问题。
    【解决方案4】:

    有一个新的(截至 2011 年底)由 Microsoft 编写的 C# 和 VB 编译器,名为 Roslyn,分别用 C# 和 VB.NET 编写。项目页面是here。 Roslyn 编译器被编写为一个公开丰富的公共 API 的库。 InfoWorld 有一篇关于它的新闻文章here。

    更新: 自 2014 年 4 月 3 日起,Roslyn 在 Apache License 2.0 下开源。

    【讨论】:

      【解决方案5】:

      是的 - 作为大多数 CLR。如果您想查看 CLR 和/或编译器的内部结构,我强烈推荐 Microsoft(又名 Rotor)的 Shared Source CLI:

      但是,实际上有一个用 C# 编写的编译器。我相信Mono 是这样写的。下载Mono sources 并亲自了解。

      【讨论】:

        猜你喜欢
        • 2011-08-05
        • 1970-01-01
        • 1970-01-01
        • 2015-02-15
        • 2013-08-17
        • 2012-01-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多