编写语言以使用.NET的优点,缺点和困难

时间:2009-08-12 04:30:22

标签: .net clr language-design

我正在考虑可能在某个时候设计/构建一种语言,在.NET Framework / CLR上运行它的优点,缺点和难点是什么?

1 个答案:

答案 0 :(得分:21)

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

<强>优点

  • 使用System.Reflection.Emit命名空间和.NET 4.0中令人敬畏的新System.Linq.Expressions功能,以二进制形式生成字节代码非常简单。这个设置是我个人希望定位CLR的主要动力之一。
  • 您的代码将受益于CLR的JIT和内存管理器中内置的许多优化。
  • 一般情况下,如果您选择定位CLR而不是构建自己的本机代码,那么您将能够在更短的时间内为您的语言构建一个可用的编译器。

<强>缺点

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

困难(不计算语言和编译器前端)

  • 最“有趣”的方面是在CLR的限制下阐述表达语言语义结构的方法。
  • 这里没有太多要说的。与其他目标相比,定位CLR非常容易。

<强>摘要

对于从事新语言实施的人来说,CLI是一个很好的选择。它允许您从常见的编译器后端开始,并专注于语言本身的语义。我可能不会推荐有人创建一种新语言,但如果您决定,CLI将成为您旅途中的好朋友。