The halting problem asks whether there can be a general procedure that determines, for any given program and any given input, whether that program will eventually stop or instead run forever. Alan Turing proved in his 1936 work that no such procedure exists.
The proof uses a diagonal argument, similar in spirit to Cantor’s method. One assumes for contradiction that a machine exists which can decide, given any Turing machine and its input, whether that machine halts. By feeding a suitably constructed machine a description of itself, this assumption leads to a logical contradiction, so the assumed deciding machine cannot exist.
This makes the halting problem the classic example of an undecidable problem: a precisely stated question for which no algorithm can give the correct yes-or-no answer in every case. It is not that the answer is hard to compute; it is that no general computation can settle it for all inputs.
The result was historically important because it showed that not every well-defined mathematical problem is computable. This refuted the expectation, associated with David Hilbert, that all of mathematics could in principle be decided by a mechanical procedure.