gpt4 book ai didi

java - 编辑程序 “while they are running” ?如何?

转载 作者:太空狗 更新时间:2023-10-29 17:02:37 24 4
gpt4 key购买 nike

此问题是以下问题的推论:Editing programs “while they are running”? Why?

我最近才接触到 Clojure 的世界,并对 a 着迷few examples我见过“实时编码”。上面链接的问题讨论了“为什么”。

我的问题是:如何这种实时编码技术成为可能?这是使它成为可能的clojure语言的特征吗?或者这只是他们应用的一种模式,可以应用于任何语言?我有 python 和 java 的背景。是否可以像在 clojure 中那样使用这些语言中的任何一种“实时代码”?

最佳答案

一些语言的实现已经有很长时间了,尤其是许多 Lisp 变体和 Smalltalk。

Lisp 将标识符作为一种数据结构,称为符号。这些符号可以重新分配,并在运行时查找。此原则称为后期绑定(bind)。符号命名函数和变量。

另外,Lisp 实现要么在运行时有一个解释器,要么甚至有一个编译器。接口(interface)是函数 EVALCOMPILE。另外还有一个函数 LOAD,它允许加载源代码和编译代码。

接下来,像 Common Lisp 这样的语言有一个对象系统,它允许更改类层次结构、类本身,可以添加/更新/删除方法并将这些更改传播到已经存在的对象。因此面向对象的软件和代码可以 self 更新。使用元对象协议(protocol),您甚至可以在运行时重新编程对象系统。

同样重要的是,Lisp 实现可以垃圾收集删除的代码。这样,正在运行的 Lisp 不会因为代码被替换而增加运行时大小。

Lisp 通常还有一个错误系统,可以从错误中恢复并允许从调试器中替换有缺陷的代码。

关于java - 编辑程序 “while they are running” ?如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519384/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com