I had been working in the Windows / .NET ecosystem for almost a decade prior to my current role. I always thought C# was a nice language to work in, CLR is a really capable runtime, and Visual Studio is one of the best IDE out there. But my observations is that C# in .NET core seemed to appeal only to existing C# / .NET devs.<p>I am excited for the new functional features coming in C# 7, but to be honest, these days it would not be my first choice of language when starting a new project. That choice falls to Scala due to its versatility:<p>- Blending of OO and FP.<p>- Works in backend, frontend (ScalaJS), or compile to native.<p>- Multi-discipline applications, e.g. web apps, data science, scientific computing, etc.<p>One of the biggest benefit as well, is that it leverages the JVM ecosystem. Big, mature community and choice is abundant. This is actually one of the things that really struck me when first working in it (JVM). It seems like you always have at least three choice for anything, that to most extent works well with each other:<p>- Alternative languages: Scala, Kotlin, Clojure, etc.<p>- Build system: Maven, Gradle, SBT, etc.<p>- GC: HotSpot, Zulu / Zing, Shenandoah, etc.
I find C# to be pretty easy to pick up. (I'm wrapping up a project now with C# even though I've had very little experience in it before.) Since .NET has a wide range of applications and it's now cross-platform, I can see how it could become more important as time goes on.