关于元编程的一些思考

in Think with 0 comment

最近在接触JavaSpring框架,其中提及了元编程这个概念。从Wiki的解释中,我们大概可以找到这样一条关键语句:

程序能够编写程序。

什么意思?举个简单的例子,我们在获取一个类的属性的时候,我们通常要给它配置get的方法去获取,但是这会显得有些繁琐。因此,许多语言都会实现一些魔术方法,比如PHP__get。再比如一些反射机制也是如此。

那么面向元编程又是一个什么概念?
在解释之前,我们可以先梳理一下我们之前所接触到的一些概念:面向过程,面向对象,面向切面(AOP),面向微服务。在这些概念里面,我们可以大致分为两类,一类是语言本身的特性,比如面向过程和面向对象;另外一类是我们在根据我们实际项目所需要做的架构方式,比如面向微服务。
而面向元编程,在我看来属于一种设计理念。当我们在面对我们的实际业务时,我们总是会遇到许多重复性的事情,面向元编程则希望我们能以一种高度抽象的方式来自动化地完成这些工作。

记得在很早之前我就说过,在面对开发者时,一门语言的设计就是应该怎么简单怎么来。它的实现不一定简单,但是它暴露给开发者的API一定要能立即上手。我们也可以看到,诸如Java的一些框架在不断的减少配置的问题,而Node不断的在优化回调地狱问题。语言地设计可以有不同的特性,但是以「上手难」为其特性我认为总是不妥的。

Responses