I would think there was much debate internally in MS pre-.Net as to what direction to take with all their development languages and .Net seems like a compromise because neither camp could agree on one common new language, ie a common .Net base but still separate languages for now. It's like everyone's saying "we don't agree about anything, but that library is nice, we can use that."
I'm sure I've expounded on this before
but I'll add a summary of my feelings:
.NET *is* one base language. Its market appeal is widened by providing 4 syntaxes encompassing a huge range of understanding amongst programmers. Provision of the syntaxes is largely a commercial ingenuity for microsoft, and whether or not people ever realise the fact that they are all the same thing under the hood, they still buy it. It's not that ignorance is required for this particular deal to work, but more that it doesnt matter whether the coders are ignorant or not.
Microsoft agreed about everything, because of .NET's grounding. As a retaliatory sting to the commercial snubbing they received on the Java thing, it made sense to take the unified concept of write-here,run-anywhere (java) and work it over to become write-anywhere,run-here. If anything the move achieved a greater market attraction than java did. The brilliance is furthered by people trying to port the CLR to other platforms (the MONO project: technically very possible; it is a form of VM, like java's VM) which diminishes java's stronghold of being multi-platform. Also, .NET could technically be expanded to other syntaxes. Providing a Ruby compiler capable of translating ruby code into MSIL is possible. Wehter Ruby.NET is commercially viable to attract any interest, i dont know.. If it were, MS probably would have done it, but there will always be someone who will think about something for the love of it, rather than the money..
http://www.google.co.uk/search?q="ruby.net"
One of the results asked "is microsoft freaking out about this?" - probably not. It gets people onto their platform, and theyve got the development dollars to provide new whizzbangs into their syntaxes that might draw a Ruby programmer over to the dark side (of giving dollars to MS) after successfully bringing them into the world of MS. Its a win/win for MS - they get people onto their platforms, using a language that is baseline Microsoft owned and they didnt have to do any development to achieve the extra customer base. .NET hoovers up!
@anyone, mostly in response to vis' comments:
The future of all .NET syntaxes is largely fixed in the base to which they facade; they cannot wander apart significantly but then, they dont need to. If the base CLR provided a low-level way to do everything, then any higher level construct can be represented. As Mr McIlhinney noted to me recently, the Using block is a simplification of a try/finally/dispose succession - a higher level construct that already has base line ingredients working. It can be provided in VB because the precompiler can handle it specific to VB and turn it into a base representation. If it were never provided in C# it still wouldnt be enough to say the two are different languages; they are just different syntaxes with preprogrammed shortcuts
I agree with vis, when he says the VB is more like the pet project; it was *vital* to provide it to capture the market share of programmers who are using VB and need an upgrade route they think they can understand (thinking you can do something is the first step to doing it). Features will be added to make the place more woolly and cossetting, maybe at the expense of performance, maybe not. It will remain proprietary for a few reasons, one of which is the pampering to the people with the money (customers) that any corp needs to do to keep bringing it in. Alienate your customers and you fail. The other reason is that VB is pretty much a monument to microsoft in the world of programming - there are other vendors of basic, but nothing like MS. The proprietaryness of it is a testament to MS' achievements in an increasingly standardising, genericising, every-man-is-doing-it arena. To put an overly-blunt perspective on it, it's a deserved ego trip and becomes self-perpetuationg as a result.
In some ways, this is the achilles heel; the non-ECMA-like issue that vis mentioned, just isnt going to get there in VB. As a syntax, it's still inconsistent and unclean, but it has to be for the users to get along with it. VBN may well become the future of .net programming - i'll clarify that by saying I think it may well become the majority language, harking back to that comment I made about it being a testament.. and if it does, it may well be through a trade on the ignorance (that doesnt currently happen) - universities may choose to teach the concepts of OO via VBN. For many the concepts will be lost and the understanding of a proprietary, unlike-any-other, language may be all that they are left with. They may never look beyond to see that it is actually .NET that they know.
I wonder whether VB will ever shake off its "basic" association (i.e. it's a noddy language) and be regarded as a professional language. It deserves to be, because it is from the same stable (just wears different clothes) as its professional brother C#, but even I (as a prorgrammer of both and mainly this year in a VBN professional context) still feel that C#'s cleaner, more consistent interface lends it the professional edge. Microsoft's insistence of throwing in extra simplifying features like Using, and molly-coddles like Option Strict=off isnt going to help to this end. Youre right that VB is going to expand; it always will. How much of this will be towards the professional remains to be seen. Traditionally, people are resistant to change, so I wonder what would happen if MS announced:
"Right, you lot.. In VB 2009 we've decided that you all need to sharpen up your habits and be less lazy and sloppy about your coding, so we've turned Option Strict on by default and you cant turn it off"
People would cry..