You say that the program is meant to be executed. But then you say it is meant to be “halted or left or transcended”. If you do those things then you are not executing the program any more. You might be doing something _better_ than executing it, but in any case you are doing something _different_.
It seems like you are saying (1) that a human being can execute the program but then halt/leave/transcend it, and (2) that a computer cannot. But this is only true if you (1) allow “execute” to be used in a metaphorical sense when talking about what the human being does but (2) don’t allow it to be so used when talking about what the computer does.
It is perfectly possible for a computer to “execute” code in a way that allows it to stop when (for instance) it notices certain kinds of lack of progress. I gave a simple example elsewhere in this thread. So it isn’t at all true that humans can execute code while retaining some ability to stop doing so but computers can’t; computers can do that too.
Computers can’t (at present) execute code while understanding what English-language comments in the code say and acting accordingly because computers don’t yet understand English very well. It could turn out that this is because for some reason understanding human language is impossible for merely-computational systems, but I see no reason to think so and you haven’t offered any.
Of course if you take your code, turn it into an executable program, and make that the program the computer is executing then it will loop for ever. A human being won’t do that because you don’t have any way to make a program the program the human is executing. (Fortunately, perhaps.) This isn’t a difference between what humans can do and what computers can do, it’s a difference between how you use the term “execute” when talking about humans and when talking about computers.
Your “much better demonstration” still does not demonstrate anything, at least not in the sense of conveying anything useful to my mind.
I am not sure exactly what you mean by “state”, but a machine-language program consisting of a single instruction saying “branch to the same address this instruction is at” doesn’t loop “between two states” in any useful sense. When executing this loop, the computer’s program counter always has the same value, all its registers keep the same value, and the contents of memory do not change.
You say that the program is meant to be executed. But then you say it is meant to be “halted or left or transcended”. If you do those things then you are not executing the program any more. You might be doing something _better_ than executing it, but in any case you are doing something _different_.
It seems like you are saying (1) that a human being can execute the program but then halt/leave/transcend it, and (2) that a computer cannot. But this is only true if you (1) allow “execute” to be used in a metaphorical sense when talking about what the human being does but (2) don’t allow it to be so used when talking about what the computer does.
It is perfectly possible for a computer to “execute” code in a way that allows it to stop when (for instance) it notices certain kinds of lack of progress. I gave a simple example elsewhere in this thread. So it isn’t at all true that humans can execute code while retaining some ability to stop doing so but computers can’t; computers can do that too.
Computers can’t (at present) execute code while understanding what English-language comments in the code say and acting accordingly because computers don’t yet understand English very well. It could turn out that this is because for some reason understanding human language is impossible for merely-computational systems, but I see no reason to think so and you haven’t offered any.
Of course if you take your code, turn it into an executable program, and make that the program the computer is executing then it will loop for ever. A human being won’t do that because you don’t have any way to make a program the program the human is executing. (Fortunately, perhaps.) This isn’t a difference between what humans can do and what computers can do, it’s a difference between how you use the term “execute” when talking about humans and when talking about computers.
Your “much better demonstration” still does not demonstrate anything, at least not in the sense of conveying anything useful to my mind.
I am not sure exactly what you mean by “state”, but a machine-language program consisting of a single instruction saying “branch to the same address this instruction is at” doesn’t loop “between two states” in any useful sense. When executing this loop, the computer’s program counter always has the same value, all its registers keep the same value, and the contents of memory do not change.