BTW, in case you didn't already know this:
Microsoft Surface RT has Windows RT (an edition of Windows 8), and
Microsoft Surface Pro has Windows 8 Pro (What you would use for programming.
That should sum up what I think of the Microsoft Surface. You'd be better off just programming for Windows 7 and below... (Windows XP). If you want to go mobile, in my experience Android isn't really C/C++ friendly as you can't compile native code without having some Java front end. For iOS you need a Mac computer and you need to pay $100 annual fee to be able to get your program onto your device. There are other means but that's the "official" way of doing it for Apple. I guess each has their benefits though one can hope they will make the process less painful for the Android.
xerzi: The question was about using Surface to program, not as a target platform.
IMO, anything with a touchscreen as the main input device is just no good for programming, except to make emergency changes (e.g. you're about to make a presentation and you just found a show-stopper that needs to be fixed right now). The problem is both of interface and of computing power; compiling on a mobile CPU is no fun.
The line, I think, is at the netbook form factor, with some being below and some being above it. But for hacking sessions longer than a one or two hours, you really need a full-fledged keyboard.
xerzi: even Windows 8 is fine for programming, I have windows 8, and I use MSVC++ and have no problem with it at all. The whole metro thing isn't all that cool, but I don't use it hardly at all, I just use the desktop and the file explorer, both work almost just like windows 7 or xp, just without the start button
You can get a keyboard cover for the Surface:
Type Cover: feels like an actual keyboard
Touch Cover: a touch keyboard
Both of these fold over and protect the screen (although I think it about an extra $100).