java元编程_一文读懂元编程

d3b637ece518

元编程(Metaprogramming)是编写、操纵程序的程序,简而言之即为用代码生成代码。元编程是一种编程范式,在传统的编程范式中,程序运行是动态的,但程序本身是静态的。在元编程中,两者都是动态的[1]。元编程将程序作为数据来对待,从而赋予了编程语言更加强大的表达能力。

d3b637ece518

编写元程序的语言称之为元语言,被操纵的语言称之为目标语言[2]。根据元语言和目标语言是否相同,我们可以将元编程分为两类:

d3b637ece518

当元语言即目标语言本身时,元编程是目标语言所支持的高级特性,是在编译期或运行期生成或改变代码的一种编程形式,是狭义上的元编程;当元语言并非目标语言时,元编程侧重代码内容的生成,并不关注目标语言代码的编译和执行,也可以称之为产生式编程(Generative Programming)或者代码生成技术(Code Generation)。我们按照从易到难的顺序来依次介绍这些技术。

元语言非目标语言

比较低阶的方式是用直接用处理文本的方式生成代码,其次是用IDE的可视化特性、以及用模版引擎的方式,而最高级的方式应该是用编译原理的方式实现。

1. 文本处理

几乎所有的编程语言都有输入输出文本的能力。利用文本输出能力生成具体代码是最简单的元编程手段。其实用这种方式可以生成任何一种语言的代码,之所以把它归类于"元语言非目标语言",因为它对目标语言的代码仅仅当作一种文本来处理。来看一个bash脚本的示例:

#!/bin/sh

# metaprogram

echo '#!/bin/sh' > program

for i in $(seq 992)

do

echo "echo $i" >> program

done

chmod +x program

这个脚本没有任何输入,生成了一个新的993行的脚本来打印输出数字1至992。这并不是打印一串数字最有效的方法。尽管如此,程序员可以在几分钟内编写和执行这个元程序,生成了近1000行的代码,简单粗暴。

#!/bin/sh

echo 1

echo 2

echo 3

...

echo 992

2. IDE特性

通过可视化IDE生成代码的编程探索可谓历史悠久,最早开始的是桌面端IDE,进入Web时代后诞生了富文本编辑器,随后又产生了一些脚手架框架。在页面上拖拖拽拽、快捷的操作命令就能生成代码,能够大大提升构建工程的速度。

d3b637ece518

VB 6.0的操作界面 - 图片来自于 Visual Basic

对于这种元编程方式而言,大都针对特定的IDE,大部分情况下我们只是普通用户,除了IDE的设计者很少有人去了解其背后的实现机制。当然有些IDE也会提供插件定制功能,这时候便有机会在其基础上进行元编程开发。

d3b637ece518

Eclipse上的Mybatis配置文件生成插件 - 图片截图于Eclipse Marketplace<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值