元编程就是编写能为你编写代码的代码。但那不就是代码生成器所做的事情吗,就像是 rails gem,或者 yeoman?或者甚至是字节码编译器?
是的,但元编程一般指的是 Ruby 中的另外一些东西 。 ruby 中的元编程指的是能为你动态地编写代码的代码 。是在运行时发生的。 Ruby 是动态元编程的首要语言,因为它采用了 类型推断 并且是强 发射 的 – 相比现有的其它语言处在一个更高的级别。这能让你做一些像使用几行代码就可以加入大量功能这样事情,真的很酷,但是有一个问题:一个不小心,在你提升很多东西的同时,得到却是几乎无法阅读的代码。这件事情的意思,用 Uncle Ben 的话说就是 :
“能力越大,责任也就越大.”
Uncle Ben 说这话的时候,并不是在谈论现实生活中的什么东西,他讲的是元编程。