In 2009 Microsoft’s Lucas Bolognese announced a commitment to co-evolution for C# and Visual Basic. While the two languages are free to continue putting their own spin on features, neither is supposed to be given a new capability that the other doesn’t have in some fashion. In .NET 4, functional programming features added to Visual Basic and dynamic features for C# went a long way towards honoring this promise. However, a combination of lingering concerns and new insults has brought that promise into question.
At the center of the current controversy is the lack of VB support for Windows Phone 7. We have been watching this story develop for months, looking for any solid commitment from Microsoft on if or when VB would be available on their new platform. With the Windows market saturated with free/shareware, Windows Phone is an important platform for independent software vendors who want to offer mass-market applications without leaving the .NET ecosystem. So it’s no wonder that fans of VB have been up in arms.
With all their resources thrown into just getting the platform ready before they lose any more market share, it is no wonder that Microsoft choose to focus their flagship language alone. While the CLR was specifically designed for both C# and VB (and strangely, Java), C# is the de facto language for core functionality and thus needs to be done first. Still, with a promise made to the larger, albeit less vocal, Visual Basic users must be honored at some point or the whole platform could lose credibility.
Now that a CTP of Visual Basic for Windows Phone 7 has been released, tensions should be relaxed a bit. Microsoft is stressing that this is an “early access” preview and is nowhere near ready for production use. And while Silverlight templates are offered, there still isn’t support for XNA. This has been a sore spot for years, as there is still no way to use Visual Basic on the XBox 360. We thought there was going to be a solution when VB 9 added the ability to build applications without the VB runtime and thus the op-codes not supported by the XBox, but nothing ever came of it.
While currently not covered by the language co-evolution promise, F# is also slowly getting support for Windows Phone 7. Released about a month ago, the August CTP of F# includes a WP7 version of the F# runtime, FSharp.Core.dll. The necessary projects templates for F# Silverlight apps if offered via Windows Gallery. As with VB, templates for F# XNA apps are not currently being offered.
The next most popular language we are seeing requested in the forums isn’t IronPython, though many people do want it. Nor is it the effectively abandoned JScript.NET or IronRuby languages. Instead we are seeing people asking for that odd hybrid known as C++/CLI. Apparently there are a lot of developers who are looking to port legacy C++ applications to the Windows Phone and see C++/CLI as their best route. While the user interface will certainly have to be rewritten, there is a belief that the rest of their codebases could be reused. (It should be noted that C++/CLI is standardized under ECMA-372 and therefore could be offered by a third party if the hardware can support it.)