智能家居
rebol(Meta Programming 主要解决什么了问题?)

问题引言里的那句话,我认为是在说 C++,因为它强调了 do part of the work at compile time。但 Python 的 meta-programming,我闻所未闻。Python 1.2 开始用到现在,我确实没有听说 Python 有什么构建 DSL 的能力,更遑论所谓 meta-programming。Python 社区的文化,也向来没有在语法上玩花样的传统。于是大略查了查,它说的是应该是第三项东西:类结构动态调整,本质来说,就是反射(reflection)。参照 DeveloperWorks 上的这一篇:metaclass programming in Python,以及这一篇:metaprogramming。不难看出,这两篇文章谈的是完全另一个话题。因此谈所谓 Lisp 和 Ruby 在 meta-programming 上为什么比 Python 做得好,在我看来是一个伪命题,因为两者说的 meta-programming 的内涵和外延都不一样。

至于 Lisp/Scheme 家族的 meta Programming,与其说是做得更好,倒不如说是语法结构过于简单导致其怎么变换都是长得一个样子。关于这一点,不妨对比一下 REBOL,它构造出来的几个 DSL 语法上没有多少相似之处。不过,对我来说,Lisp/Scheme 这种语法简单其实才是我喜欢的 Scheme:编译器的设计者可以把更多的精力花在运行时和优化上。

— 完 —


顶一下()     踩一下()

热门推荐

发表评论
0评