gpt4 book ai didi

.net - 编写使用 .NET 的语言的优点、缺点和困难

转载 作者:行者123 更新时间:2023-12-04 13:09:05 26 4
gpt4 key购买 nike

我正在考虑在某个时候设计/构建一种语言,编写它以在 .NET 框架/CLR 上运行的优点、缺点和困难是什么?

最佳答案

最难的部分是设计一种有效的编程语言。许多人将他们的整个职业生涯都奉献给了这项任务。由于这里有很多关于语言设计和一般解析问题的问题,我将特别关注针对 CLR 的方面。

优势

  • 使用 System.Reflection.Emit 以二进制形式生成字节码相当简单。命名空间和令人敬畏的新 System.Linq.Expressions .NET 4.0 中的能力。这种设置是我个人希望以 CLR 为目标的主要动力之一。
  • 您的代码将受益于 CLR 的 JIT 和内存管理器中内置的许多优化。
  • 一般来说,如果您选择面向 CLR 而不是构建您自己的 native 代码,您将能够在更短的时间内为您的语言构建一个工作编译器。

  • 缺点
  • 它只会在运行 .NET 框架的平台上运行。如果您避免 P/Invoke 调用,那么在 Mono 项目的帮助下,这应该不是问题。
  • 您必须将语言中的语义结构降低为可在 CIL 指令和 CLI 对象模型中表示的形式。对于过程的、强类型的、可选的面向对象语言,这相当简单。对于函数式或动态类型语言,这可能是一个相当大的挑战,但如果您需要这些功能,您可以从 DLR 获得一些帮助。
  • 通常,您无法方便地访问机器内部函数,因此对于针对高性能/矢量化科学计算的语言,您可能会面临当前实现的一些性能问题。 Mono 正在积极解决这个问题,但 Mono 或 .NET Framework 都没有将其作为“成熟的技术”。

  • 疑难解答 (不算语言和编译器前端)
  • 最“有趣”的方面是在 CLR 的限制下布置表达语言语义结构的方法。
  • 这里没有太多要说的。与其他目标相比,以 CLR 为目标非常容易。

  • 摘要

    对于从事新语言实现的人员来说,CLI 是一个很好的选择。它允许您将注意力从常见的编译器后端转移到语言本身的语义上。我可能不建议某人创建一种新语言,但如果您决定这样做,CLI 将成为您旅程中的好 friend 。

    关于.net - 编写使用 .NET 的语言的优点、缺点和困难,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1264218/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com