Hacker News new | ask | show | jobs
by jqm 4403 days ago
Why exactly would I want this? What benefits does it provide? How is developing in a proprietary ecosystem...even if they do release it "for Linux" any better than developing in something like Python or Ruby?

Serious question. If there are real benefits I would love to know about them.

4 comments

I really don't understand why this is being downvoted into oblivion. It's a valid question.

One answer is simply that C# is an awesome language. It is roughly as expressive as Ruby and Python, yet it is usually faster and it has much more powerful tooling (MonoDevelop, Visual Studio), partly enabled by its static typing (which is mostly up to taste, I suspect).

Also, .NET is very batteries-included and the open source ecosystem is decent (decent, not good).

As an example, I currently run a team that develops a C# backend. We dev on Macs, Linuxes and Windowses, we deploy to Docker containers on Linux hosts, we use Postgres for data and the open source ServiceStack for API bindings. When e.g. one of our Mac devs does a deploy, not a single byte of Microsoft code is touched.

I'm not saying you should do this too. But it's a valid option, and you can perfectly well do C# without depending on Microsoft tooling or paying them anything. Of course the future is still very much determined by MS, so we're betting that MS doesn't kill Mono-for-Linux once they buy Xamarin. But that's not very different from Oracle and Java, really. MS made stronger and fairer community promises, if that's something.

It's too bad you were downvoted, this is a good question.

First, I'd question why you'd still think of it as a proprietary ecosystem. It's an open source (Apache 2), cross platform framework. It's not even directly released by Microsoft, it's released under MS Open Tech, which is a foundation just focused on open source development. And it's not just "throw it over the wall open source", it's an open source project that's set up for and encouraging contributions.

Even the compiler it runs on is open source, also under Apache 2 (http://roslyn.codeplex.com/license).

As for the "why" bit, here are some reasons:

- If you're developing on Windows, Visual Studio is a pretty good web editor. That includes Visual Express for Web (free) with the Web Essentials extension (also free, works on Express). You can develop on Windows (inc. a VM) and deploy anywhere.

- C# really is a pretty nice language. It's static and compiled, but has support for some dynamic features. Linq is really useful. Generics work well. The language spec is under an open standard. Everyone has their own preferences on languages, but it's pretty nice.

- As a web framework running compiled assemblies, it can run pretty fast.

- If you're interoperating with .NET and/or Mono, of course this is pretty useful.

- C# and .NET are actually really good for cross-platform development (e.g. Xamarin hits ios, android, wp, maybe even tizen soon). For example, C# runs better on my Mac than Ruby does on my Windows machines.

- If you find that ASP.NET MVC 6 (the version vNext will run, including MVC / Web API / SignalR) works for you but you don't like Windows, you could dev on Mac / *nix and publish to Azure / Mono / whatever.

Languages, libraries, performance, ...
So, the question is unanswered but someone took the time to express their displeasure that it was asked...

Very telling. And I think I now have my answer.