首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >泛型编程与元编程

泛型编程与元编程
EN

Stack Overflow用户
提问于 2010-10-14 21:07:03
回答 6查看 7.9K关注 0票数 20

到底有什么区别?这些术语似乎在某种程度上可以互换使用,但我读到了关于目标-c的维基百科条目,我偶然发现:

除了C的过程编程风格之外,C++还直接支持某些形式的面向对象编程、泛型编程和元编程。

参考C++。很明显他们不一样?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2010-10-14 21:46:21

data.

  • Metaprogramming:编程:编写一个创建、转换、筛选、聚合或以其他方式操作programs.

  • Generic编程的程序--编写一个创建、转换、筛选、聚合和以其他方式操作programs.

  • Generic编程的程序:编写一个创建、转换、筛选、聚合和以其他方式操作数据的程序,但只对数据的结构做出最小的假设,从而最大限度地在各种数据类型之间实现重用。

正如在其他几个答案中已经提到的,这种区别在C++中可能很混乱,因为一般编程和(静态/编译时间)元编程都是用模板完成的。更让您困惑的是,C++中的泛型编程实际上使用元编程来提高效率,即模板特定化从泛型程序生成专门(快速)程序。

还要注意的是,正如每个Lisp程序员都知道的,代码和数据是一样的,所以没有所谓的“元编程”,这都是编程。同样,这在C++中是有点难理解的,因为您实际上使用了两种完全不同的编程语言(C++,C族中一种命令式、过程化、面向对象的语言)和元编程(模板,一种纯粹的函数“偶然”语言,介于纯lambda演算和Haskell之间,语法非常糟糕,因为它从来没有真正打算成为一种编程语言)。

许多其他语言在编程和元编程中都使用相同的语言(例如Lisp、Template Haskell、辐合、Smalltalk、Newspeak、Ruby、Ioke、Seph)。

票数 44
EN

Stack Overflow用户

发布于 2010-10-14 21:11:13

从广义上讲,元编程意味着编写产生其他程序的程序。例如,像C++中的模板一样,只有在实例化时才会生成实际的代码。可以将模板解释为将类型作为输入并生成实际函数/类作为输出的程序。预处理器是另一种元编程。另一个虚构的元编程示例:一个读取XML并根据XML生成一些SQL脚本的程序。通常,元程序是生成另一个程序的程序,而泛型编程是关于参数化的(通常是其他类型的)类型(包括函数)。

编辑后,考虑了对这个答案的评论

票数 13
EN

Stack Overflow用户

发布于 2010-10-14 21:13:14

我将元编程大致定义为“编写编写程序”,泛型编程为“使用语言特性来编写参数化的参数化的函数、类等”。

按照这个标准,C++模板对于两种通用编程都很有用(想想vectorlistsort.)和元编程(想想Boost和精神)。此外,我认为C++中的通用编程(即编译时多态性)是通过元编程(即从模板代码生成代码)来完成的。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3937586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档