So I learned recently about transfinite cardinals, and that there are more real numbers than natural numbers. But this is bothering me, because I also learned about computable numbers, which are the numbers whose digits can be enumerated by a turing machine. (computer) Like pi. But any number that can be represented at all is computable. It seems to not be computable, a number must possess infinite digits, and they must be truly random so that any computer program that produce them would have to be as long as the number (infinite computer programs are not allowed so therefore its not computable)

But the computable numbers are countable, (by Godel numbering of Turing machines, so aleph null) the reals are not. So why do mathematicians need all these unrepresentable real numbers? What breaks if we get rid of them?

The idea is that you dont want the number line to be filled with holes (like the rationals) and to fill in all those holes (so you can talk meaningfully and rigorously about calculus for example) you need to introduce the reals. A lot of maths gets done by just knowing that a number with a certain property exists - actually computing that number is left (if it is at all possible) to the comp. sci guys

Now not all these numbers are meaningless - im sure you have learnt about omega for example and if i recall correctly omega is a definable number but not a computable number.

As is often the case with technical subjects we are presented with an unfortunate choice: an explanation that is accurate but incomprehensible, or comprehensible but wrong.

You know, I have kind of a weird perspective, because I went strait from college algebra to discrete math, and skipped calculus. I am taking it next quarter, and something tells me it will clear some things up regarding the reals.

But yeah, Chaitin's constant Omega is an odd one too. I keep hearing about how its uncomputable, and then reading about people computing it to the such and such digit, like the entry here on wolframs math world:

You cant compute any string of digits though - thats the problem as then you could solve the halting problem. But the starting digits are easy enough to do as you just enumerate all programmes of that length and off you go checking which ones halt

As is often the case with technical subjects we are presented with an unfortunate choice: an explanation that is accurate but incomprehensible, or comprehensible but wrong.

But my understanding is you can't ever say for sure if a program will halt, so how do you get the number for a given program?

Is it a constantly updating probability? Like they say 'as a program goes on, the probability of it halting approaches zero' and then get the master number from crunching those? That would make sense to me.

edit: It seems you can't even get starting numbers well because a very short program could go on millions of years then halt:

And if they make an educated guess that some programs won't halt, then this guess could all prove wrong when a million years later a million programs halt at once, bringing the first number in the constant up a notch. which would be totally bad for computable numbers.

Therefore its not computable.

But I don't see how they can give some number for it, being as that number itself is subject to change.

Well, some programs (like your example) can be proven to be halting without actually running the program. Also, some programs can be proven to be non-halting while the program is running. For example, if it visits the exact same state twice (at least, for a deterministic program). Some rough calculations say that to get 64 decimal digits, you'd need about 213 binary digits, so you'd have to check all the programs up to 213 digits long.
I don't know how it was actually done, but what I'd do is let a computer run all the programs for a limited amount of time, watching for infinite loops, then try and work out whether the remaining programs halt or not myself.