By windows surface, I assume you mean Microsoft Surface. For programming do not get the Surface RT get the Surface Pro. The Surface RT doesn't run desktop applications besides MS Office (It only runs Windows Apps from the Windows Store). The Surface Pro can run all apps that Windows 7 runs (Include Code::Blocks and MSVS, which RT doesn't). I almost made the mistake of getting the RT. For me, I don't enjoy programming with a touch screen. Windows 8 is good for programming. You can use Javascript, HTML, and a few others for Windows Apps for the Windows Store. You can also program like you did in Windows 7, etc. using C++, C#, VB, etc..
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).