When a computer runs a program with its input data
We hope it will work properly and not encounter any problems
But it may trundle along and take a long time
After a while we might start to wonder if this program plus data is going to finish nicely
Or are we completely wasting our time by running this program plus data combination, and waiting for it to complete?
Luckily in this case the wait was worthwhile as a program completes nicely and gives us an answer
and if we examine the program and its input data, we can see what was going on and
since it completes nicely, this is an example of a good program plus data combination
Now let's consider the same program but with slightly different input data
Again it trundles along and takes a long time
Will it run nicely?
Or will it encounter a problem such as a logic error?
In this case it hits a divide by zero logic error and
the computer program ends badly
And since it completes badly, this is an example of a bad program plus data combination
Now let's consider a different program that inputs just one number
Again, it trundles along and takes a long time
Will this be a good program?
Or will it encounter a problem such as a logic error or an endless loop?
In this case it goes into an endless loop and
the computer will never give us the answer we're waiting for, and
since it hits a problem this is an example of a bad program plus data combination
We might wonder if it's possible to create an 'is it good' program
that could predict if any given program plus its data will run without a problem
But could a sneaky program somehow avoid being categorized correctly
First let's assume that our 'is a good' program can be created
Then we'll try to devise a sneaky program that will contradict its classification
The program will examine the 'is it good' logic and try to behave differently to its own classification.
But this trying to contradict the is it good logic could itself be described as a logic error.
So the sneaky program will be classified as bad
and it doesn't matter what the program actually does because it still contains this logic problem that makes it bad, and
so the sneaky program can't avoid being classified correctly
By asking is it good we are not asking the halting problem question. We have a different question that takes into account logic errors
But the halting problem question is 'will it halt' and this doesn't allow for logic errors
And so our question can't be defeated by a sneaky program. But the halting problem question CAN be defeated by a sneaky program
And so the problem with the halting problem is that the halting problem question doesn't allow for the detection of logic problems
In other words the question 'will it halt' is a bad question.
And If we change it to a better question, then the proof of uncomputability no longer works
An important note to end on is that 'endless loop' is a far better expression than 'infinite loop'
A process can legitimately be called endless if it has no internal way to end and it has to be ended by some external
intervention, but it can't legitimately be called 'not finite'
So strictly speaking. There is no such thing as an infinite loop
This video was brought to you by Extreme Finitism dot com