Language agnostic 自我修改代码?

Language agnostic 自我修改代码?,language-agnostic,input,runtime,self-modifying,Language Agnostic,Input,Runtime,Self Modifying,我想做以下几点。我已经在我的程序中声明了一个结构,并且在执行程序的运行时,如果有用户输入,我应该能够在代码中创建另一个新结构/编辑该结构。我们怎么能做到呢?这就是“自我修改代码”吗?请澄清。请举一些例子。谢谢 让我给出一个我想做的想法,我有一个名为“学生”的“结构/类”,它包含像“int roll\u no”和“int regu\u no”这样的变量。如果用户希望在运行时添加一个新变量,如“char name”,该如何操作?请查看以下内容: 这里有关于反射的讨论,这可能是您想要的-反射不仅是关

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

让我给出一个我想做的想法,我有一个名为“学生”的“结构/类”,它包含像“int roll\u no”和“int regu\u no”这样的变量。如果用户希望在运行时添加一个新变量,如“char name”,该如何操作?

请查看以下内容:

这里有关于反射的讨论,这可能是您想要的-反射不仅是关于内省(大多数开发人员已经知道了),而且是关于改变语言构造和运行时代码操作的含义

最好的语言可能是ruby和smalltalk

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

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


哦,我差点忘了,看看lisp和元循环求值。

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

这是可能的,但取决于您使用的语言。你在使用C、PHP等吗?另外,您是否打算根据用户输入创建新代码?如果是这样的话,出于安全考虑,你需要非常小心你所接受的东西,尤其是在网络上。也许如果你能展示你的用例,你可以得到一些更准确的建议。我正在使用C++,C中有可能吗?对于自修改代码,哪种语言更容易?Python呢?据我所知,这将是一个离线系统,C/C++最简单的方法是生成代码,编译到库中,然后在运行时加载。不过,python或任何其他动态语言是更好的选择。@Niranjan,使用C,您可以使用
tcc
或更好的
LLVM
生成运行时代码。两者都很容易使用。