编写.NET语言的优点、缺点和困难

6

我在考虑可能设计/构建一种语言,使用.NET框架/CLR运行的优点、缺点和难点是什么?

1个回答

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 将成为你旅程中的好伙伴。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接