使用.NET编写语言的优点、缺点和困难
我正在考虑可能在某个时候设计/构建一种语言,以及编写在.NET framework/CLR上运行的语言有哪些优点、缺点和困难?最困难的部分将是设计一种有效的编程语言。许多人把自己的整个职业生涯都献给了这项任务。因为这里有很多关于语言设计和一般解析的问题,所以我将特别关注针对CLR的方面 优势使用.NET编写语言的优点、缺点和困难,.net,clr,language-design,.net,Clr,Language Design,我正在考虑可能在某个时候设计/构建一种语言,以及编写在.NET framework/CLR上运行的语言有哪些优点、缺点和困难?最困难的部分将是设计一种有效的编程语言。许多人把自己的整个职业生涯都献给了这项任务。因为这里有很多关于语言设计和一般解析的问题,所以我将特别关注针对CLR的方面 优势 使用.NET4.0中的System.Reflection.Emit名称空间和全新的System.Linq.Expressions功能,以二进制形式生成字节码非常简单。这种设置是我个人希望瞄准CLR的主要动
- 使用.NET4.0中的
名称空间和全新的System.Reflection.Emit
功能,以二进制形式生成字节码非常简单。这种设置是我个人希望瞄准CLR的主要动机之一System.Linq.Expressions
- 您的代码将受益于CLR的JIT和内存管理器中内置的许多优化
- 一般来说,如果您选择以CLR为目标而不是构建自己的本机代码,那么您将能够在更短的时间内为您的语言构建一个工作的编译器
- 它将只在.NET framework运行的平台上运行。如果您避免P/Invoke调用,那么在Mono项目的帮助下,这应该不是问题
- 您必须将语言中的语义结构降低到可以在CIL指令和CLI对象模型中表示的形式。对于过程性的、强类型的、可选的面向对象语言,这相当简单。对于函数式或动态类型语言,这可能是一个相当大的挑战,但是如果需要这些功能,您可能会从DLR获得一些帮助
- 一般来说,您无法方便地访问机器内部函数,因此对于一种面向高性能/矢量化科学计算的语言,当前实现可能会面临一些性能问题。Mono正在积极地研究这个问题,但Mono和.NET框架都没有将其作为“一项成熟的技术”来使用
- 最“有趣”的方面是在CLR的限制下展示表达语言语义结构的方法
- 这里没有太多要说的。与其他目标相比,以CLR为目标非常容易