最近在接触 Java
的 Spring
框架,其中提及了 元编程
这个概念。从 Wiki
的解释中,我们大概可以找到这样一条关键语句:
程序能够编写程序。
什么意思?举个简单的例子,我们在获取一个类的属性的时候,我们通常要给它配置 get
的方法去获取,但是这会显得有些繁琐。因此,许多语言都会实现一些魔术方法,比如 PHP
的 __get
。再比如一些反射机制也是如此。
那么面向元编程又是一个什么概念?
在解释之前,我们可以先梳理一下我们之前所接触到的一些概念:面向过程,面向对象,面向切面(AOP),面向微服务。在这些概念里面,我们可以大致分为两类,一类是语言本身的特性,比如面向过程和面向对象;另外一类是我们在根据我们实际项目所需要做的架构方式,比如面向微服务。
而面向元编程,在我看来属于一种 设计理念 。当我们在面对我们的实际业务时,我们总是会遇到许多重复性的事情,面向元编程则希望我们能以一种高度抽象的方式来 自动化地 完成这些工作。
记得在很早之前我就说过,在面对开发者时,一门语言的设计就是应该怎么简单怎么来。它的实现不一定简单,但是它暴露给开发者的 API
一定要能立即上手。我们也可以看到,诸如 Java
的一些框架在不断的减少配置的问题,而 Node
不断的在优化回调地狱问题。语言地设计可以有不同的特性,但是以「上手难」为其特性我认为总是不妥的。
本文由nine 创作,采用 知识共享署名4.0 国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: May 28, 2018 at 12:45 pm