There was a time, some fifteen years ago, when the choice of the programming language was a delicate decision. It stopped being a problem when .NET arrived. Because .NET languages compile to the Common Language Runtime, .NET compatible languages became more or less indistinguishable other than syntactically, and developers could happily mix Visual Basic with C# and even JScript.
In Windows 8, things are different.
A Windows 8 application runs on top of a new runtime environment—called “Windows Runtime” or WinRT for short. WinRT is a modernized and redesigned version of the .NET Common Language Runtime. You can write a Windows 8 application using C#, Visual Basic, or C++ for the logic and XAML for the layout. In doing so, you can take advantage of patterns that are made-to-measure for XAML, such as the Model-View-View-Model pattern (MVVM). In this regard, developing for Windows 8 is not that much different from developing for Silverlight or Windows Phone.
It’s Windows 8. It’s Not Web.
It’s a Self-Contained App with Its Own Characteristics.
The Windows 8 application has its own lifecycle and artifacts, including live tiles, the app bar, and charms. In addition, a Windows 8 application must fulfill a number of visual requirements, such as dealing with different view states (full screen, snapped, portrait, landscape).
Because the final result is an app and not a website, your code is not subject to the usual constraints of cross-domain calls that sometimes limit web client solutions. Your Windows 8 code—much like Windows Phone code—can call into any known HTTP endpoints without limitations.
Your Code Is Sandboxed.
Windows 8 Is Mostly about Touch
While a well-done touch-enabled application is easy to recognize, defining what’s required to enable touch effectively in an application is not a trivial task. In its simplest form, a finger is the equivalent of a mouse cursor, and swipe gestures replace the need for scrollbars. But you need to consider more than these basic touch and swipe gestures—in particular, gestures such as pinch-and-zoom—but the true measure of an effective touch-enabled user interface is in the ability to use both fingers and mouse with equal ease.
This is highly problematic if you are in a full web scenario, but it is considerably simpler in Windows 8 because of WinJS. WinJS comes with a family of UI widgets designed to be used effectively with either mouse or finger. As just two examples, buttons render large enough to be touched as well as clicked, and ListView controls are automatically scrollable both vertically and horizontally with both mouse and fingers. These two examples certainly don’t exhaust the list of touch-related features that WinJS provides, but should serve as a starting point.