自修改代码?

时间:2011-10-16 07:56:53

标签: language-agnostic input runtime self-modifying

我想做以下事情。我已经在我的程序中声明了一个结构,并且在执行程序时运行时,如果有用户输入,我应该能够在我的代码中创建另一个新结构/编辑该结构。我们怎么做?这是“自修改代码”吗?请澄清。请举几个例子。谢谢

让我想一想我想做什么,我有一个名为“student”的“Structure / Class”,它包含“int roll_no”和“int reg_no”之类的变量。如果用户希望在运行时添加一个新的变量,如“char name”,该如何完成?

2 个答案:

答案 0 :(得分:3)

看看这个:

http://bracha.org/Site/Talks.html

有关于反思的讨论,这可能就是你想要的 - 反思不仅仅是关于内省(大多数开发人员已经知道),而且还涉及改变语言结构和运行时代码操作的含义。

这种东西的最佳语言可能是ruby和smalltalk。

如果您的语言不支持这些功能,您仍然可以选择利用代码生成 - 这几乎适用于所有编程语言,但在具有“eval”支持的动态代码中则更容易。例如,即使在C / C ++中也可以使用这种东西,但你的应用程序必须嵌入编译器。

Java也是不错的选择(对类加载器和许多用于字节码操作的库)是

哦,我差点忘了,看一下lisp和metacircular评估。

答案 1 :(得分:0)

听起来您不需要修改现有代码,而是在运行时发出一些新代码。对于运行时存在编译器的任何环境,都很容易。对于.NET,基于JVM的环境,各种Lisps等都是如此。