元编程沉思录(草稿)
元编程沉思录
Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data.
It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself while running.
It also allows programs greater flexibility to efficiently handle new situations without recompilation.
可以扩展程序自身,这样的能力,为元编程。
比如Ruby,使用元编程可以扩展出领域专用语言DSL, 比如RSpec、puppet、chef等。相对于新创造的领域专用语言DSL来说, Ruby语言就成为其的元语言。
所以, 叫做元编程 。
meta-programming
一般代码的操作对象是数据
元编程操作的对象是其他代码
https://www.zhihu.com/question/23856985
元编程是用代码在编译期或运行期生成/改变代码。除非程序的运行期的输入数据会被直接或间接转化成代码,否则元编程不会给程序带来新的逻辑(信息论原理),此时它本质上是一种(让程序员自我感觉良好的)手工压缩源代码技术
非常赞同:"元编程"比"我们手写代码"多提供了一个抽象层次!用代码中的元数据来进行动态插入新代码逻辑!其实,也是根本没有什么“元编程”,有的只是“编程”。
就是无关业务逻辑,只跟当前代码结构相关的代码。比如通过在运行时通过java反射把所有Action结尾的类找出来,加上log或者其它动作。或者ruby里的methodingmissing, objc的category等给系统自带的类增强一些特性等。共有的特性就是它们处理的对象是你的代码,不是业务对象
作者:有美一人
链接:https://www.zhihu.com/question/23856985/answer/25896326
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
https://www.zhihu.com/question/23856985
元编程一言以蔽之,就是用代码生成(操纵)代码。常见的开发语言均能做到元编程,Lisp这货就不用多说了,C的Marco,C++的Template,Java的Annotation,C#的Attribute、Reflection、CodeDom和IL Emitter,各种脚本语言(如js、python)的eval,甚至连Unix/Linux的shell脚本也能。元编程常见的应用场景很多,扩展(重构)语法、开发DSL、生成代码、根据特定场景自动选择代码优化、解决一些正交的架构设计问题、AOP等等。所以元编程存在的目的,就是多提供了一个抽象层次。至于元编程有什么优缺点,争议还是比较大的。比如以重构语法的应用为例,很多元编程的反对者就认为这样会导致代码的可读性、可维护性降低,分化社区,影响交流,因为每个开发人员都能搞一个自己的方言。总的来说,元编程玩得转的话会让你日子好过一些,玩不转会让你日子不好过一些。
作者:猫杀
链接:https://www.zhihu.com/question/22572900/answer/21828721
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
增删查该
四个层级
1、代码级;
2、字节码级别;
3、可执行文件文件级别
4、运行时结构级别
对程序本身的管理;
目标(基因、内核)
技术支持
具体编程