首页 / 软件开发 / JAVA / 冒号课堂§3.2:超级范式
冒号课堂§3.2:超级范式2011-06-25 BlogJava xyz98第三课 常用范式(2)3.2 超级范式——提升语言的级别智能繁衍:机器人生产机器人 ——题记关键词:编程范式,模板元编程,元编程,语言导向式编程,产生式编程摘要:元编程简谈?提问什么是元编程?它与通常的编程有何不同?元编程有何用处?它有哪些应用?相比自编的元程序,用IDE自动生成的代码有什么缺陷?语言导向式编程有何优点?它与元编程有何关系?元编程与产生式编程有何异同?为什么说元程序是一种最高级的程序?:讲解问号忽然想起一事,问道:“有一本名为《C++模版元编程》的书,既然提到了模板,想来也属于泛型编程吧?”冒号答道:“模板元编程即Template Metaprogramming,与泛型编程密切相关但自成一派,隶属于另一种编程范式——元编程(Metaprogramming),简称MP。此处的前缀‘meta-’常译作‘元’,其实就是‘超级’、‘行而上’的意思。比如,元数据(Metadata)是关于数据的数据,元对象(Metaobject)是关于对象的对象,依此类推,元编程自然是关于程序的程序,或者说是编写、操纵程序的程序。”叹号皱着眉:“听着有点绕。”冒号投影出另一段代码——C++(元编程):
template <int N>
struct factorial
{
enum { value = N * factorial<N - 1>::value };
};
template <> // 特化(specialization)
struct factorial<0> // 递归中止
{
enum { value = 1 };
};
void main()
{
cout << factorial<5>::value << endl; // 等价于 cout << 120 << endl;
}“以上用模板元编程实现了阶乘运算。”冒号讲解道,“与前面三种核心范式的阶乘实现有着根本的不同:这里阶乘的值是在编译时而非运行时计算出来的。换句话说,这段代码以模板形式通过编译器生成了新的代码,并在编译期间获得执行。”