Microsoft makes a lot of money from selling its development tools, documentation, etc... to its developer base. Microsoft simply runs the whole show. They are in full control, and call all the shots. And they understand perfectly well that if they keep the same technology platform in place, over time, they lose a good chunk of their revenue stream. That's why they have to obsolete their technology platforms, time and time again. They need revenue. It makes perfect sense. If you are a Microsoft Windows developer, one of your primary job functions is to generate revenue to Microsoft. Perhaps not from you, directly; maybe from your company. Whoever pays the bills for Visual Studio, MSDN, and all the other development tools. Maybe it's not you, personally, but it's going to be someone, that's for sure.
So your argument is that Microsoft intentionally periodically obsoletes languages in order to make money? Am I reading this correctly?
You do understand that:
- Pretty much every commercial MS developer already has an MSDN license, which (minimally) gives them access to the latest development languages, SDKs, and tools.
- Developing a new language that is at least as compelling as a current one is an expensive and non-trivial feat.
- Obsoleting a language costs Microsoft a ton of money in rewriting their own software to create new APIs and then use them.
- Each API and system rewrite introduces new bugs, costing Microsoft even more money identifying, patching, and being held accountable for.
- One of the oldest MS-supported development languages, C++, has not been obsoleted.
- One of the major issues with MS development is the legacy APIs that bias towards C++ functionality.
I think your theory has some holes. Now, Microsoft has definitely obsoleted languages - Visual Basic for one (and good riddance) - but they did that because the language had shortcomings. I'd detail them but we have a nice article that already does that. The .NET framework and language stack, C# in particular, is on the same general level as Java: it is a language that more or less suits the needs of every platform developer. Why the hell would they want to obsolete that?
No, languages aren't the issue with MS development, nor are they the theme of the article; frameworks are. A perfectly good language can be horrendous to use if it is unable to properly interact with its host environment to accomplish what it needs to accomplish. In this case (once again FTFA) C++ could interact worlds better with Windows than .NET could, and so .NET use suffered. This was an implementation failure on Microsoft's part. The article stipulates that Windows 8 intends to bring .NET back on-par with C++ as a development language, which (if true) means that it will be stronger than ever.
It's also worth mentioning that in terms of accumulated skills and experience, learning a new language is trivial compared to truly learning a new framework. How you interact with the system and cause it to give you the resources and services that you want in the manner in which you want them is the heart of all modern systems programming, regardless of language. If Microsoft emphasizes .NET in their APIs, then .NET will be a viable Windows development platform; if not, then who knows? None of that reflects on the language itself, but rather on its appeal over other languages.
Now, eventually every language will be obsoleted ... probably? I suppose we haven't been through that many generations of languages to know for sure, but that seems to be the case so far. There are various reasons languages die ... they suck, better ones come out, nobody likes them, no frameworks support them, or their target developer group gives up on it. .NET's main backer is currently and will likely always be Microsoft, and its most viable candidate platform will likely always be Windows. Supporting or not supporting .NET as a first-class Windows development language (through framework support) is a serious to its standing as a desirable developer language. However, the article makes the point that Microsoft's .NET framework capabilities are increasing substantially, not decreasing. This speaks positively for its future.
Disclaimer: I am a UNIX developer as well. That said, the article is well-written and I would bet on its speculation being correct. In that case, MS is making the right moves, and that includes their new frameworks and continued support for .NET.