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.
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.
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:
- Blending of OO and FP.
- Works in backend, frontend (ScalaJS), or compile to native.
- Multi-discipline applications, e.g. web apps, data science, scientific computing, etc.
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:
- Alternative languages: Scala, Kotlin, Clojure, etc.
I had seriously contemplated switching to F# before Scala, and attended a full-day workshop for it, however the dealbreaker for me was the poor tooling support (this was around 2011). After switching to Scala, there was very little reason for me to come back to the .NET ecosystem.
Honestly I just don't like the Java runtime. I'm probably biased, but years of hating Java are the only reason I still haven't learned Clojure. The biggest issue I remember having was with the build system. Sure there are plenty of capable make-like programs, but I want to understand how to run the compiler and linker myself, and I seem to remember butting my head against classpath last time I tried to get into Java, and simply giving up. Am I just crazy?
The last few times I worked with Java, I had the same issues but that was several years ago as a very novice programmer, so I can't tell if my information is outdated and/or whether my inexperience was what led to my difficulties.
I think the JVM is a really good runtime, and somehow its poor reputation came from Java applet security holes and the verbosity of the Java language.
And no, I don't think you are crazy. I had a really bad experience trying out Spring for the first time (with ant task, etc.). I was pulling my hair out and it turned me off Java for a few years before discovering Play Framework v1 (the original Java version).
How long ago was your experience with the build system? These days you can bootstrap a new project with Gradle, Leiningen, or SBT pretty easily.
11 comments
[ 3.0 ms ] story [ 36.3 ms ] threadI 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:
- Blending of OO and FP.
- Works in backend, frontend (ScalaJS), or compile to native.
- Multi-discipline applications, e.g. web apps, data science, scientific computing, etc.
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:
- Alternative languages: Scala, Kotlin, Clojure, etc.
- Build system: Maven, Gradle, SBT, etc.
- GC: HotSpot, Zulu / Zing, Shenandoah, etc.
I had seriously contemplated switching to F# before Scala, and attended a full-day workshop for it, however the dealbreaker for me was the poor tooling support (this was around 2011). After switching to Scala, there was very little reason for me to come back to the .NET ecosystem.
And no, I don't think you are crazy. I had a really bad experience trying out Spring for the first time (with ant task, etc.). I was pulling my hair out and it turned me off Java for a few years before discovering Play Framework v1 (the original Java version).
How long ago was your experience with the build system? These days you can bootstrap a new project with Gradle, Leiningen, or SBT pretty easily.