It would also interesting to note that the program can’t run and optimise itself simultaneously. Probably it need to copy its source code, edit it, than terminate itself and start the new code. Or edit only subagent which is not in use in current moment.
Even if it was Neumann architecture, it should be able to modify any function not in its call chain freely, and would only have to include special handling code that edits itself out for when it returns to a function in its call chain.
In other architectures, I can imagine anything changing anything short of the architecture and the code the execution pointer will traverse while editing. Only in that one case do I foresee a need to work in scratch space.
Basically you say the same as I said. The program could edit one of its parts which is not now in use, and can’t edit part there the pointer may be during the editing process, because it will crash all editing process halfway.
You said a different sub-agent. That sounds to me like a much larger structure than the current deepest function.
A function does not need to have most of the characteristics which go with ‘agency’, like modeling the world and having preferences. It just needs to execute machine instructions. If you just meant ‘right in front of the execution pointer’, then ok.
Not all programs are compiled from source code. AGI architectures are often written in LISP or Prolog, which are interpreted. They typically have their key knowledge structures, such as their goals and some of their algorithms, encoded in data structures. It’s unclear whether they would need to rewrite any code to recursively self-improve. It probably depends on particulars of the logic used. Hence this post.
I’m going to delete the footnote your initial comment referred to, because it’s a distraction.
It would also interesting to note that the program can’t run and optimise itself simultaneously. Probably it need to copy its source code, edit it, than terminate itself and start the new code. Or edit only subagent which is not in use in current moment.
Even if it was Neumann architecture, it should be able to modify any function not in its call chain freely, and would only have to include special handling code that edits itself out for when it returns to a function in its call chain.
In other architectures, I can imagine anything changing anything short of the architecture and the code the execution pointer will traverse while editing. Only in that one case do I foresee a need to work in scratch space.
Basically you say the same as I said. The program could edit one of its parts which is not now in use, and can’t edit part there the pointer may be during the editing process, because it will crash all editing process halfway.
You said a different sub-agent. That sounds to me like a much larger structure than the current deepest function.
A function does not need to have most of the characteristics which go with ‘agency’, like modeling the world and having preferences. It just needs to execute machine instructions. If you just meant ‘right in front of the execution pointer’, then ok.
Not all programs are compiled from source code. AGI architectures are often written in LISP or Prolog, which are interpreted. They typically have their key knowledge structures, such as their goals and some of their algorithms, encoded in data structures. It’s unclear whether they would need to rewrite any code to recursively self-improve. It probably depends on particulars of the logic used. Hence this post.
I’m going to delete the footnote your initial comment referred to, because it’s a distraction.
I think, the hot updating is to consider as well.