我的问题陈述是 “在运行时转换应用程序时,如果不关闭应用程序实例(不杀死它或停止它),就会改变应用程序。”
哪种框架或编程语言具有此功能。 感谢您的支持。
答案 0 :(得分:1)
它取决于操作系统和语言。
在Linux上,一个好的候选者是Common Lisp,尤其是SBCL。或kernel(一种Scheme方言)。
您也可以使用dynamic loading。甚至在Linux上使用dlopen(3)的C或C ++。 (例如,MELT生成C ++代码,将其编译为某些shared object,并dlopen
- s ....,所有这些都在运行时)。或者Ocaml的dynlink等等......当然还有Java和其他基于JVM的实现(Scala,Clojure ......)和class loading。另外erlang ......
如果应用程序存在很长时间,您还需要关心garbage collecting旧死代码。
在运行时更改call stack会很困难(例如,将一些调用堆栈帧更改为另一个)。阅读continuations和call/cc。
另请阅读homoiconicity,application checkpointing,persistence,multistage programming,just-in-time compilation,eval,generative metaprogramming,{{ 3}}和type introspection。
BTW,Pitrat的书reflection说明了为什么改变自己的代码是有用的。另见artificial beings: the conscience of a conscious machine。 运行时模块化仍然是一个研究课题。参见例如his blog,...和Queinnec的this。
PS:你仍然可以在这个科目上攻读博士学位。如果你这样做,我会很高兴看到你的!