A bit off-topic, but I noticed an interesting statement on the page linked to by superbonzo (here):
Oh, I hope they fix that IntelliSense, or at least make it "as good" as it is for C# in VS2010.
@superbonzo: Obviously they will introduce new APIs that make sense for the tiled interface. The issue here is a distinction between a mobile and a desktop OS. In case of iOS they made it pretty clear that that is a mobile operating system that behaves in a totally different way than a desktop OS (which, unfortunately now is slowly pushed into a mobile realm as well, but is still not as "mobile-looking" as Windows RT/8.)
In a mobile OS limited multitasking, time and resources allotment, battery savings, etc. is quite appropriate. Also UI for a mobile OS is a totally different beast due to the screen size limitations. But most of the above make no sense to be introduced to a desktop OS. For instance, a full screen app with giant buttons looks ridiculous on my 30-inch display.
So, if Windows RT is designed as a mobile OS (something to run only on phones and small tablets) then, yes, all that tiled interface API limitations make perfect sense. But, what I'm afraid will happen, is that users on Windows RT will begin to expect full desktop app performance due to its identical look to the Windows 8 Pro or Enterprise, which in turn will flood developers' tech support lines with questions like this, "Why can't I run your program on my new Windows 8?" Note that for an end-user there will be no distinction between Windows RT or Windows 8. Both will look the same for them.
So obviously, since those OS's are totally different beasts on the inside, we, developers, won't be able implement most of the features that any C++ developer is familiar with -- stuff like "real" multithreading, services, IPC, etc. And if all you're doing is a picture viewer, then you're in good shape. Anything more complex will make it incompatible with Windows RT... and that is not what people would expect from Windows. So that is what's disturbing to me...
But I'm deviating from the original subject now... So concerning VS 2012, it sounds like there're some improvements.
Last edited by ahmd; November 6th, 2012 at 02:16 PM.
Yes, I agree about the Metro stuff. I watched some Channel9 demos about the "new" way MS want us to code their apps and I "got scared." All this talk of "can't run in the background", "only one app active", "time allotments for apps", "app can be terminated at any time" -- this is exactly what Apple does with their iOS. How do I know? Because I am an iOS developer. Why do I still program under Windows? Because Windows was one of those platforms where developers weren't restricted by the OS and it gave way more options to "improvise" in our code. So what now? We've got another clone...
The "scary" part is that it's not just MFC that is not supported under the new Windows RT platform, it is Win32 in general. Have you watched the video from that link I posted above. Somewhere in the middle where he runs the compatibility tool (that displays all illegal APIs under Win RT) he starts reading them from the list and the first one he mentions is LoadLibrary. Can you imagine writing a C++ piece of code without that API? Also GDI is gone, COM is strictly limited, etc.
I'm not sure how much of a future that Windows RT platform has, but if it takes off most of the Win32 APIs as we know them now will be a thing of the past.
There is nothing scary here. If you code for metro, you are effectively coding for a tablet and not a PC. And users have different expectations of tablets than for desktop apps.
* People accept that a desktop takes some time to boot and load a feature heavy OS. They expect a tablet to be responsive the second you turn it on.
* Tablets run wireless, so need to run on batteries, this means conservative approach to CPU usage AND to which cpu's a tablet manufacturer will use. (Intel Core i5/i7 aren't particularly battery friendly). Tablet apps need to be 'lightweight' because of this.
* metro is the new buzzword. But rest assured, the desktop in windows isn't getting dumped anywhere soon.
As a software developer, you make choices, if you decide to go win32, then yes, it will over time become harder to convince your users that is the right choice for them, they may very well expect a metro interface.
By choosing Win32, you are restricting yourself to intel windows, and not the new windows 9 arm based machines. (which don't have Win32 or a desktop).
It should be possible to make an Win32 based back end, and connect to that from a metro front and control your win32 backend from the Metro front (haven't tried). A big thing/anoyance here from a sales P.O.V. is that you'll HAVE to sell your metro front on the windows store, while the Win32 will have to be sold/installed "the usual way". This may be confusing for your users.
Metro and desktop are different beasts that just happen to run side by side on the same PC. Some apps won't make much sense in the one environment and other apps won't make much sense in the other.
There's clearly a trade-off between desktop and mobile hardware. Intel's Core i5 and i7 might be inefficient for a mobile device but on the other hand ARM CPUs with their RISC architecture would not do well in a desktop world. Plus there's not even a solid 64-bit standard for ARM yet.
In my view I don't see any reason why we all should move to a mobile architecture? Even though I do enjoy using my iPad for recreational means, I still do most of my "serious" computer use on a desktop with a large display, don't you? (Although it is not Windows.)
As for Windows 9 ditching Win32, then it would probably be the time when Windows joins RIMM's BlackBerry ...
Regarding the MFC I think you should be happy if you can still use them in VS 2012. MFC is definitely legacy now and to get MS to even mention them you'll have to torture a representative. The longer you stick to MFC the stronger you'll feel MS coercing you to move on to .NET and even better, Metro.
I've been hearing about MFC being legacy for years now. I'm thinking that that rap is more urban legend and MSFT wishful thinking than anything else. The other day I downloaded and installed Samsung's Kies program, which allows Samsung's SmartPhone to connect to the PC. Guess what one of the files that was downloaded was? MFC90u.dll
Sure, MSFT would just love everyone to program windows in C# with the WPF framework. Just ain't gonna happen.
Last edited by spiritualfields; December 7th, 2012 at 12:32 AM.
Like I already said. MFC isn't going anywhere soon. if you have MFC programs, rest assured that MS will continue to pprovide the platform AND will be making improvements to it (in recent versions we got quite a bit of new classes as well as bug fixes).
OTOH. don't expect microsoft to blow a huge amount of advertisement budget on MFC. Not gonna happen. They're also not goign to be promoting it much. They're in the bussiness of selling NEW stuff (and supporting the old quietly). And I mean "selling" both in the literal way of making money, as well as 'pitching' new technologies to users/developers to move to something new because they have a stake in that technology and competitors might not (as much).
@OReubens: What's funny (or I guess, not so funny for developers) is that MS seems to come up with a new programming technique with every release of Windows. For instance, I don't even hear about dot-net anymore. It's all about those Metro-style apps. But they even botched that up... we can't call it Metro anymore because of a German trademark infringement. It's a "new tiled interface"
And yes. .NET is "old news" as well these days. Again, it will be supported for many many more years to come, but they can't really promote this as "new" anymore. Maybe if some radical change happens, it'll be news again, but for the most part, they'll just assume everyone knows what .net is, that it's there on the machine and you can use it.