CCH

.NET Needs More Languages

2015-10-13

It's well known Java's JVM and .NET's CLR are the principle rival VMs in the enterprise world but the JVM also has a decent adoption by startups too. There are SMEs using .NET but due to the licensing costs - primarly due to the fact that if you use .NET you're constrained by Windows - companies with limited budgets have usually looked elsewhere.

But with Microsoft open sourcing the .NET platform will this change? I'm not sure because the problem isn't just with .NET behing tied to Windows but the lack of alternatives to the traditional C# and Visual Basic language offerings. If you check Wikipedia you'll see a list of languages that run on the CLR that at first glance seems as impressive as those that are powered by the JVM. But closer inspection reveals they're all half maintained or abandoned with only F# the really viable alternative. The JVM by contrast has several well maintained languages being used to power some of the world's biggest websites. Here's just a few I found with a very quick google: theguardian.com (behind the dailymail.co.uk the second most visited new website in the world) is powered by Scala, Clojure and Groovy are both being used by Netflix and even JRuby is used to run parts of the BBC website. And all of these languages come with their own frameworks and eco systems ensuring their vibrancy and relevance.

For me it's a bit of a chicken and egg scenario. It's now well over a year since Microsoft's announcement but the landscape doesn't seem to have changed and this is because although .NET is now multi platform what is the incentive for developer's to switch? Until .NET has the sort of choice offered by the JVM I don't see this changing and this won't happen until developer's and companies make some efforts to address this. Microsoft made some attempts to do something in the past with its Iron languages but they never took off - if they were to sponsor these projects again I think they would see much wider interest (FWIW I did have a look myself with an interest in doing something with the Iron languages but my Ruby and Python knowledge simply isn't at the required level for this sort of project).

All this is said without malice. I've mainly worked with the .NET stack for the past decade and have enjoyed my time doing so but things change and with mutli device programming and micro services there isn't even the need for the sort of large scale monolithic application development that .NET was created for. Put simply .NET needs more languages.