The 'halting' part confused me initially. It always came along with Turing machine explanations...
But, the paradox extands beyond 'halting.'
I think.
You could just as well say, "There can be no program that can determine, in all cases, if a program prints, 'HELLO WORLD'"
Right?
The function(x) would be true if x produces "HELLO WORD" and false otherwise, where 'x' is the program itself. Then... if (f(x)){print "Goodbye World")... etc., etc.