A worry for Microsoft programmers is what the future holds for their languages. Will Microsoft lose interest or simply decide that three frontline languages is too much for any company? Now we have some idea of that the thinking is about the future of C#, F# and VB.
Mads Torgersen, a long standing and well known Microsofty, has posted a blog that attempts to clarify the roles that Microsoft's languages play. He points out that his comments are definitive but they are a guide as to how the languages are thought about and how decisions are made.
C# is the flagship language of .NET so much so that many wonder why Microsoft keeps its fairly similar sister language VB .NET going. Lots of people refer to VB .NET as C# in disguise and it has to be admitted that the to languages are very similar so much so that converting from on to the other, both projects and programmers, isn't very difficult. Even so VB has a reputation for being an easier language and so it tends to attract beginners possibly with help from some confusion that is might be like VBA or the original VB 6. It isn't much.
So how does Microsoft see C#:
We will keep growing C# to meet the evolving needs of developers and remain a state of the art programming language. We will innovate aggressively, while being very careful to stay within the spirit of the language. Given the diversity of the developer base, we will prefer language and performance improvements that benefit all or most developers, avoiding over-focusing on a given segment. We will continue to empower the broader ecosystem and grow its role in C#’s future, while maintaining strong stewardship of design decisions to ensure continued coherence.
I'm sure I am not alone in thinking fondly of the days when C# was a simple elegant language. I think it is still elegant and the best of the classical object-oriented languages, best summed up as C#>Java>C++, but it has grown to be a bit of a rat-bag collection of things from other languages. For me the most important part of the statement is: maintaining strong stewardship of design decisions to ensure continued coherence. Although you could argue that this battle is already lost.
Much more difficult is VB .NET. What is its role in the ecosystem:
We will keep Visual Basic straightforward and approachable. We will do everything necessary to keep it a first class citizen of the .NET ecosystem: When API shapes evolve as a result of new C# features, for instance, consuming those APIs should feel natural in VB. We will keep a focus on the cross-language tooling experience, recognizing that many VB developers also use C#. We will focus innovation on the core scenarios and domains where VB is popular.
So VB is to follow where C# leads, but trying to remain looking like VB. The history is that VB .NET was the replacement for VB 6 and presumably VBA which Microsoft would kill off at a later date. The stupid part it that VBA is still going and nothing like VB .NET, which makes it difficult for a novice programmer to graduate to a full programming language and environment. Currently Microsoft doesn't have an entry level language for non-expert programmers, having recently killed off LightSwitch.
Finally we have F#, a language aimed at being an object-oriented functional programming language for the rest of us.
We will enable and encourage strong community participation in F# by continuing to build the necessary infrastructure and tooling to complement community contributions. We will make F# the best-tooled functional language on the market, by improving the language and tooling experience, removing road blocks for contributions, and addressing pain points to narrow the experience gap with C# and VB. As new language features appear in C#, we will ensure that they also interoperate well with F#. F# will continue to target platforms that are important to its community.
So basically it too follows C#'s lead.
So Microsoft has three disparate languages to maintain. Is this too much to ask?
Back in the days when IBM had Fortran, Cobol and Algol to look after the solution was PL/1 which did what all three could do. Shame it didn't prove popular. Perhaps Microsoft could make a success of such a merger this time.
Finally it is worth noting that there is no mention of C++ for .NET. The lack of love for .NET in the C++ camp is arguably largely responsible for the rise of the crazy reinvention of the Windows API in the form of the COM based WinRT now being sold to us as Universal Windows Apps. There wasn't anything wrong with .NET that needed fixing.
A comment from Mads Torgersen in response to a user remark about VB .NET is worth quoting:
VB is not going away. We continue to invest in it. It has a thriving ecosystem of hundreds of thousands of developers. Having more languages does make the world more complicated, but it also makes it richer and more beautiful. Let’s respect and embrace that people have different preferences, and make different choices!
Remember the VB 6 programmers who are still smarting from the loss of their language?