1. 怎么理解元编程
1.一种语言本来做不到的事情,通过你编程来修改它,使得它可以做到了,这就是元编程。
2.就是用代码生成(操纵)代码。
3.常见的开发语言均能做到元编程,Lisp这货就不用多说了,C的Marco,C++的Template,Java的Annotation,C#的Attribute、Reflection、CodeDom和IL Emitter,各种脚本语言(如js、python)的eval,甚至连Unix/Linux的shell脚本也能。
4.元编程常见的应用场景很多,扩展(重构)语法、开发DSL、生成代码、根据特定场景自动选择代码优化、解决一些正交的架构设计问题、AOP等等。
5.所以元编程存在的目的,就是多提供了一个抽象层次。
6.至于元编程有什么优缺点,争议还是比较大的。比如以重构语法的应用为例,很多元编程的反对者就认为这样会导致代码的可读性、可维护性降低,分化社区,影响交流,因为每个开发人员都能搞一个自己的方言。
总的来说,元编程玩得转的话会让你日子好过一些,玩不转会让你日子不好过一些。
2. 元编程的元编程的概念
反射是促进元编程的一种很有价值的语言特性。把编程语言自身作为头等对象(如Lisp或Rebol)也很有用。支持泛型编程的语言也使用元编程能力。
元编程通常有两种方式起作用。一种方式是通过应用程序接口(API)来暴露运行时引擎的内部信息。另一种方法是动态执行包含编程命令的字符串。因此,“程序能编写程序”。虽然两种方法都能用,但大多数方法主要靠其中一种。