Windows strength traditionally has been it's ala cart approach for developers. Depending on the requirements and comfort, devs chose their implementation platform.
Looking at the spectrum, you have
- native code infused with Win32, GDI, Direct X and/or MFC/ATL,
- unstrict .net (managed C++ mixed with native, unsafe C#)
- pure .net (along with WPF, Silverlight, etc)
- Web based HTML + Client script
- Functional languages like F#, etc.
If you look at some of the richer apps, they tend to fall in the first two categories. Although MS has tried to push the third (.net) heavily, eventually it boils down to the fact that at some point, regardless of the perceived excessive resources, we will need tight code; code that talks to the hardware as close as possible. It's also the reason, many apps tend to have asm blocks for some high impact code.
The current revolution is not that of tablets, but it's a revolution of moving towards highly portable, extremely power efficient and highly reliable devices. The iPad is successful not just because of the app store and user experience, but also because of it's unmatched battery life combined with it's instant ON reliability. To keep up with those requirements,
- the dev platform of choice needs to be auditable (cert process) to keep misbehaving apps out of the system
- the dev platform needs to have performance metrics that match if not rival the most low level form of development. i.e. the language compilers/runtime should be effective and smart enough to produce code that matches the performance metrics of written assembly. The argument that current devices have excessive resources be it CPU cycles or memory is moot; devs will find a way to use all of it.
On the first point, Win 8 tablets are going to fall flat given that support for all legacy apps. Any misbehaving app can drain the battery or hold up my experience on the device.
On the second point, I do think .net still has a long way to go before it's performance metrics can match native code. I'm not saying that it will never catch up. People felt the same way about C++, but today we have C++ compilers that produce very tight code. That in combination with good dev practices to not abuse the language, make it the choice for performance conscious development. As of now, there is a significant performance penalty .net apps pay in comparison to native apps. WP7 is a great example. While the advertised dev platforms are .net with Silverlight / XNA, it is possible for serious dev partners to write native apps. The fact that such a provision exists should be telling that .net is not the most effective use of the hardware. Dont believe me...?? Ever wonder why the native phone apps lists scroll buttery smooth in comparison to the 3rd party apps jerky lists?
At the end of the day, IMO, if MS wants to rival the iPad successfully..
- Go vertical (do the hardware + software) so that they can clearly define and control the power and instant ON experience
- Take a cert approach for all apps (including legacy apps). That way existing apps can rework their code to be certified. App devs benefit from being able to release their existing apps for the new platform with little work and MS benefits from having legacy apps that are well behaved.
- Create a killer common UI toolkit that under the skin is built on tight native code.
- Support all 4 dev platforms with certification processes and thin layer interfaces that expose the above mentioned toolkit
- purely native
- semi managed with the option to drop down to native
- web tech based