提升proto vs c#表达树

Gui*_*e07 4 c# c++ boost

首先,我想知道两个"功能"是否具有相同的目标.其次,如果是(或仅部分是),则对于c#表达式树,boost proto是否有任何明显的限制

谢谢

Eri*_*ler 6

我是Boost.Proto的作者,我最近才发现了C#表达式树.AFAICT,它们在意图上相似,但在实施和范围上都不同.

C#具有语言支持,可将LINQ表达式捕获为动态类型树.LINQ使用者使用它来优化查询评估.对内存数据结构的查询可以通过LINQ扩展方法进行简单的评估,但是通过在运行时遍历LINQ表达式,计算T-SQL字符串并将其传递给LINQ表达式,可以更好地执行针对远程数据库的查询.用于远程执行的SQL服务器.就目前而言,C#表达式树最适合这些优化问题.

Boost.Proto OTOH的范围更广.Proto表达式树是静态类型的,允许在编译时完成复杂的转换和代码生成.更重要的是,Proto提供了用于内省和转换树以及从中生成自定义代码的工具.这可能对优化很有用,但也可以为表达式提供完全不同的特定于域的语义.因此,Proto更准确地被认为是嵌入式域特定语言工具包.

使用C#表达式树也可以做到这一点,但AFAIK目前还没有用于树转换和代码生成的框架.在.NET上执行运行时代码生成的能力使这成为一种令人信服的可能性.也许一些有进取心的开发人员(你?)愿意在C#表达式树上编写一个Proto#.:-)