什么语言支持"动态"元编程?

Pet*_*own 2 ruby programming-languages metaprogramming

Metaprogramming Ruby中,作者指出只有少数语言(包括Ruby)可以在运行时自行操作.除了Ruby之外还有哪些其他语言可以支持这种类型的元编程?

我所指的具体引用是在第xix页的介绍中:

在本书中,我将坚持元编程的不同含义,专注于在运行时操作自身的代码.只有少数语言可以有效地做到这一点,Ruby就是其中之一.您可以将其视为动态元编程,以区别于代码生成器和编译器的静态元编程.

use*_*736 6

现在大多数语言都在朝着提供这种功能的方向发展,但它通常不像红宝石那样"干净".所有这些语言都有很多这些功能(参考):

  • 动作脚本
  • BASIC
  • BeanShell的[3]
  • Clojure的
  • ColdFusion的
  • Common Lisp和大多数其他Lisps
  • Groovy的[4]
  • E编程语言
  • JavaScript的
  • VBScript中
  • MATLAB/Octave
  • LUA
  • Objective-C的
  • Perl的
  • PHP
  • 电源外壳
  • 蟒蛇
  • 红宝石
  • 短暂聊天
  • TCL

其他语言(如Java和C#(引用))有在运行时检查和创建代码的方法,但它不像那些语言那样"自然",而且感觉很像黑客.

  • 我是有问题的作者,是的,我会强调“有效”。:) 我同意这个答案,即大多数现代语言都提供某种运行时“元编程”功能,但只有少数语言让它感觉像是语言的一个组成部分,甚至更少的语言在“常规编程”和“元编程”与 Ruby 或 LISP 方言一样模糊。所以,对这个答案+1。 (2认同)