元编程有多普遍?[关闭]


10

您或您有多少次在项目中使用过元编程?在uni中,我从未见过这种方法的应用,但是我在以前的工作中就已经看到过这种方法(当我看到它的时候,我被它的有效性所震撼)。

但这有多普遍?是一直使用还是偶尔使用?


5
可能不是那么普遍。尽管Lisp非常常见,但Lisp并不常见-甚至不是Common Lisp。
paul 2012年

显式还是隐式?在一种极端情况下,使用Java和C#可以说是元编程,因为它们的编译器输出语言文件,然后编译或解释这些文件。在另一种情况下,几乎没有人用他们为其构建编译器的语言编写代码来生成代码。
莫兹

元编程无处不在。任何依赖Autotools的开源项目都在使用元编程。Qt世界中的MOC,LLVM中的tblgen,许多.NET项目中的T4,几乎任何生成JavaScript的Web项目,等等。
SK-logic

Answers:


5

如果您认为反射是一种元编程,则它是相对常见的。对于某些人来说,泛型编程(模板和泛型)甚至是元编程的一种形式,因此这更为普遍。

但是,我认为元编程更为复杂,它涉及实际的代码生成,因此即使在脚本语言中也很少见。


为什么模板元编程不是“实际代码生成”?!C ++模板是图灵完备的,您可以生成任意复杂的代码。
SK-logic

@ SK-logic:我的意思是在运行时按需生成新代码。模板由编译器处理,您可以将它们视为一种强大的预编译器宏。
Wizard79 2013年

为什么要在运行时生成代码?元编程的最强大形式(如Common Lisp,Racket,Template Haskell等)在编译时。
SK-logic

3

我认为这很大程度上取决于您使用哪种语言。普通Lisp人士可能会合理使用它-例如,元对象协议允许整洁的东西透明/正交持久化-而Smalltalkers经常使用它。


2

它倾向于在Common Lisp项目中普遍且一致地显示。查看OnLispLet Over Lambda以获得一些解释/见解。

如果您只是想了解示例(并且了解CL),请查看Antiweb信息库;在幕后进行了大量的元编程。


1

在过去的两年中,对新任务进行编程的第一时间几乎总是写代码来编写代码。与数据库的交互有大量的样板可简化为自动脚本生成。想一想您需要查询3个表以形成一个对象或类似对象的地方。如果将来有十件事可能会改变,为什么还要自己写呢?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.