Definition
The halting problem is the task of deciding, for an arbitrary program together with an arbitrary input, whether the program will eventually stop or instead run forever. Turing proved that this task is uncomputable: no single algorithm can answer it correctly in every case.
This is not a claim about a missing clever trick. It is a proof that the problem is impossible in principle — there can be no general halting-decider, whatever resources you allow it.
Why it matters
How it works
Suppose, for contradiction, an algorithm H decides halting for any program-and-input pair. Build a new program D that takes a program as input, runs H to ask whether that program halts when fed its own code, and then does the opposite: if H says it halts, D loops forever; if H says it loops, D halts.
Now ask what D does when given its own code. If D halts, then by its construction it should have looped; if D loops, then it should have halted. Either way there is a contradiction, so the assumed decider H cannot exist. Priest highlights the same diagonal self-reference that drives Godel incompleteness — a procedure made to talk about itself collapses into paradox.