English 中文(简体)
是否有真正的世界应用,使用计量标准?
原标题:Are there real world applications that use metaprogramming?

我们都知道,梅塔方案是一个法典概念=数据(或撰写方案)。

But are there any applications that use it & what are the advantages of using it?

这个问题可以结束,但我确实看到任何相关问题。

最佳回答

民主选举学会全程编制:

  • code completion
  • code generation
  • automated refactoring

甲型六氯环己烷往往被用于围绕 Java的限制开展工作:

  • code generation to work around the verbosity (e.g. getter/setter)
  • code generation to work around the complexity (e.g. generating Swing code from a WYSIWIG editor)
  • compile time/load time/runtime bytecode rewriting to work around missing features (AOP, Kilim)
  • generating code based on annotations (Hibernate)

框架是另一个例子:

  • generating Models, Views, Controllers, Helpers, Testsuites in Ruby on Rails
  • generating Generators in Ruby on Rails (metacircular metaprogramming FTW!)

在Ruby,在不进行美术的情况下,你根本无法做任何thing。 即便只是界定一种方法,实际上也是制定法典的法典。

Even if you just have a simple shell script that sets up your basic project structure, that is metaprogramming.

问题回答

由于数据编码是Lisp的主要概念之一,因此最好看到这些概念中项目的实际应用。

rel=“nofollow”>thislink, 您可看到一篇关于世界实际申请的文章,部分内容是Lisp的方言。

不是因为你能够,而是要写书写节目的方案,而是在你真正需要的时候,在你的语言<>上添加新的功能。 如果你能够简单地为 Java或C#...添加新的关键词,那就有理由认为:

如果你以依赖语言的方式实施美术,那么你就有一个方案分析和改造系统。 这正是将(任意)方案作为数据处理的工具。 这些方案可用于对任意方案进行任意转变。

这还意味着,编辑的画面被翻译成你的语言时所表现出的具体美术特征限制了你。 例如,虽然C++有模板,但它没有“反思”。 但是,即使基兰乌格没有,方案转变制度也可以提供反思。 尤其是,拥有一个方案改造引擎就意味着永远不必说“i m sorry”,那么,你的语言并不支持(足够)的元件,因此,除了人工书写的“外,我可以做很多事情。

。 DMS 软件重新设计工具箱用于这种方案转变系统。 它被用于建立测试覆盖面和特征分析工具、形成密码的工具、改造大规模C++应用结构的工具、将应用从一个地块移至另一个地段的工具。 这都是极为实际的。 与安保部共同完成的大部分任务完全不可行。

不是真正的世界应用,而是在废墟中谈论美术:

2006年8月3日,谷歌技术公司(Manning, 2003年7月)将使用“鲁比”谈论代号技术。 他将在关于作为工具的Rubyi的谈话中,以及在什么地方进行谈话时,既包括自行解决办法,也包括现成解决办法。

一个真正的世界例子是Django的模型元。 它是该类的产物,其模式继承了模型,并负责其所有属性和方法的规格。

任何使用动态语言的口服体液处理法,都是实际计量的即时例子。 例如,见KallAlchemy或Django s ORM如何在运行时间为数据库中发现的表格设置课程。

Java世界使用@annotations来改变阶级行为,ORM和其他工具也采用美分法。

在C++中进行的元数据编制使你能够撰写在汇编中将变换的代码。

我知道的几例伟大例子(为他们而奋斗):

  • Blitz++, a library to write efficient code for manipulating arrays
  • Intel Array Building Blocks
  • CGAL
  • Boost::spirit, Boost::graph

许多编辑和口译人员在内部使用扫描技术,作为密码重写通行证链条。

业已提到,信通厅、项目模板、信通空局的通用代码生成。

具体领域 语言得到广泛使用,实施语言的最佳方法是使用美术。

象“自治”这样的情况显然是盐碱化。

实际上,它不可能找到一个软件开发区,它从一种或另一种美术形式中获益。





相关问题
How do you set the class of an object to something else?

I ve seen this recently and now I can t find it … How do you set the class of an object to something else? --Update: Well, in Pharo! Like: d:=Object new. d setClass: Dictionary. Only that it isn ...

Using Polymorphic Code for Legitimate Purposes?

I recently came across the term Polymorphic Code, and was wondering if anyone could suggest a legitimate (i.e. in legal and business appropriate software) reason to use it in a computer program? ...

How can I get this snippet to work?

I d like to port a little piece of code from Ruby to Groovy, and I m stuck at this: def given(array,closure) { closure.delegate = array closure() } given([1,2,3,4]) { findAll { it > 4} ...

Why can t I use attr_accessor inside initialize?

I m trying to do an instance_eval followed by a attr_accessor inside initialize, and I keep getting this: ``initialize : undefined method attr_accessor `. Why isn t this working? The code looks kind ...

热门标签