One Runtime to Bind Them All: on the illusion of universal language support by .NET's Common Language Runtime.
The Common Language Runtime is being sold as a libertarian technology
that levels the playing field for minority languages. The CLR would
offer to all languages a neutral typesystem, a state-of-the-art
back-end compiler, runtime and set of enterprise-class
frameworks. VisualStudio.NET makes this complete with a first-rate IDE
that can be extended to support any language. It would almost zero the
barrier to entry for new languages.
The reality looks much darker instead. The CLR is not truly
language-neutral, and it will ostensibly favor languages that look a
lot like C#. Those not in this group will be severely bastardized,
producing dialects which are really "C# with another syntax"; look at
ISE's Eiffel# (or even Microsoft's own VB.NET and J#) for great
examples. Programmers' choice will be limited to superficial features:
whether to delimit their blocks with curly braces, Begin/End or
parentheses. It's also worth notice that the CTS/CTS do not allow use
of the full set of CLR features; for example, unsigned integers are
supported by the CLR but not considered language-neutral, simply
because many languages share Java's abomination for the
signed/unsigned duality (this includes Microsoft's own VB) and there's
no good solution for this issue.
[via CamWorld]