到底有什么区别?这些术语似乎在某种程度上可以互换使用,但我读到了关于目标-c的维基百科条目,我偶然发现:
除了C的过程编程风格之外,C++还直接支持某些形式的面向对象编程、泛型编程和元编程。
参考C++。很明显他们不一样?
发布于 2010-10-14 21:46:21
data.
正如在其他几个答案中已经提到的,这种区别在C++中可能很混乱,因为一般编程和(静态/编译时间)元编程都是用模板完成的。更让您困惑的是,C++中的泛型编程实际上使用元编程来提高效率,即模板特定化从泛型程序生成专门(快速)程序。
还要注意的是,正如每个Lisp程序员都知道的,代码和数据是一样的,所以没有所谓的“元编程”,这都是编程。同样,这在C++中是有点难理解的,因为您实际上使用了两种完全不同的编程语言(C++,C族中一种命令式、过程化、面向对象的语言)和元编程(模板,一种纯粹的函数“偶然”语言,介于纯lambda演算和Haskell之间,语法非常糟糕,因为它从来没有真正打算成为一种编程语言)。
许多其他语言在编程和元编程中都使用相同的语言(例如Lisp、Template Haskell、辐合、Smalltalk、Newspeak、Ruby、Ioke、Seph)。
发布于 2010-10-14 21:11:13
从广义上讲,元编程意味着编写产生其他程序的程序。例如,像C++中的模板一样,只有在实例化时才会生成实际的代码。可以将模板解释为将类型作为输入并生成实际函数/类作为输出的程序。预处理器是另一种元编程。另一个虚构的元编程示例:一个读取XML并根据XML生成一些SQL脚本的程序。通常,元程序是生成另一个程序的程序,而泛型编程是关于参数化的(通常是其他类型的)类型(包括函数)。
编辑后,考虑了对这个答案的评论
发布于 2010-10-14 21:13:14
我将元编程大致定义为“编写编写程序”,泛型编程为“使用语言特性来编写参数化的参数化的函数、类等”。
按照这个标准,C++模板对于两种通用编程都很有用(想想vector,list,sort.)和元编程(想想Boost和精神)。此外,我认为C++中的通用编程(即编译时多态性)是通过元编程(即从模板代码生成代码)来完成的。
https://stackoverflow.com/questions/3937586
复制相似问题