Not to leave course of the original comment re:ObjC, but I think to a certain extent you don't see C# really being used outside the Microsoft ecosystem, as Mono does exist. An integrated framework is probably the programming language equivalent of having an "army and navy."
Dart is a great language - it's way more feature complete than typescript, it comes bundeled with official package manager, build system and a dev server (huge value compared to the js ecosystem schicoprenia) and it's designed by people who actually know their shit and have decades of expirience in both language design and VM implementation/compilers (isn't constrained by JS design decisions)
Dart started marketing it self as a JS.next, IMO unrealistic goal, but has dropped that agenda for like 2 years now (?). It still dosn't prevent people from making uninformed comments about it being a failed google js.next language.
It's really an amazing ammount of working tools and code in that project, waay better than angular 2 js/typescript for example but people won't even evaluate it because of reputation.
The same is true for .NET, Microsoft took JVM and Java and then took it to the next level - stuff that just got in to Java (Lambdas) or will be getting in years (Value types) have been a part of .NET for a decade now - and in recent years Microsoft made a 360 on cross platform and OSS with Core.CLR - this is not even mentioning F# being a MS sponsored and supported tool with the tooling support that implies, and just the best in class tooling with VS in general.
Yet most people won't even touch .NET because it's not hip.
To be fair .NET can't replace the Java ecosystem now and will not replace the Java ecosystem in the following years. It's just not the same thing. Yes C# is way better than Java, but there is so much more going on for Java. For starters Java is truly multi platform and the ecosystem is way richer. So no "people won't even touch .NET because it's not hip", people won't touch .NET because even though it's really good it's not that good, at least not when you take into consideration the whole ecosystem.
Also Mono took better parts of CoreCLR and made their implementation better.
Also Microsoft acquired the company behind mono/Xamarin and given their recent trend will just fold that work in to their OSS offerings (at least partially)
So please get your facts straight before commenting on the issue because that's sort of the problen I'm getting at in my post.
But I don't ever hear that, at best I see that argument based on assumptions (without checking), and more often it's just "ewwww Microsoft"
You can use it, but your programs will be stuck on Windows, and your time and effort and dedicated mental resources will be joined at the hip to Windows, in a way that doesn't apply to almost any other language.
I can't blame you for not being up to date with developments on .NET platform or in the Microsoft world - but please o please refrain from making comments about the issue you are not informed about and obviously haven't looked in to for the last couple of years.
Microsoft has their own cross platform open source .NET implementation under MIT license supported officially on Linux and OSX. https://github.com/dotnet/coreclr
Not only that but they are opensourcing and porting huge parts of their stack like build system, web framework, etc. and are supporting it officially on Azure cloud. https://github.com/aspnet/Mvc
They are doing pure OSS from scratch projects such as LLILC - a static compiler for CoreCLR based on LLVM : https://github.com/dotnet/llilc
Further more even before that Microsoft has started opensourcing large parts of their implementation at the request from Mono team and Mono has taken those + CoreCLR and made their implementation better - showing that they actually wanted to help Mono team implement feature parity.
And finally Microsoft recently acquired the Mono team (Xamarin) and will probably fold that in to their OSS offerings.
So please stop the FUD - it's not helping anything - I realize you have an opinion but before voicing it please check if it matches the facts - otherwise you're just creating noise in the discussion.
So again please cut the FUD and try to get informed before discussing thease things - you could literraly find the stuff I'm talking about in a google search or two
Async/await future/observables are built in to std lib, dom API is wrapped up in to them and fully typed, etc.
It's not an academically revolutionary language - it's just a really solid practical language, with many modern ideas implemented from start, good tools and should be immediately familiar to C#/Java/TS developers.
It has tradeoffs but IMO it fixes so many annoyances in TS/JS.
Most of your arguments could also be applied to typescript (which doesn't even have the option of runtime tour checking)
.NET isn't that well supported outside of Windows though. At least not to the same degree Java is. And a lot of that is down to Microsoft. .NET was pretty awful when it was first released. Granted it's been solid for a great number of years now, but originally it was just MS lashing out at Sun because Sun Microsystems took MS to court over Microsoft's own (partly incompatible) version of Java (massively paraphrasing history here!!!). But that was a long time ago and .NET has diverged and morphed into so much more since. However for a long time it never felt like Microsoft was not giving any love to .NET outside of Windows. Yes, I appreciate Mono does exist, but there's a lot of proprietary stuff in .NET that, until recently, MS refused to port. So even once .NET really became an attractive technology to develop against, it's cross platform support was still stunted by Microsoft's own need to dominate.
It's also worth noting that .NET is still hugely popular - or at least in England. But those organisations running .NET tend to buy into the entire Microsoft stack (.NET, IIS, MS SQL Server, etc) - which really just goes to reinforce Microsoft's justification for making Mono a second class citizen.
However with Microsoft's recent headlines (SQL Server being ported to Linux, greater collaboration with Mono, etc), there's a real potential that .NET will become a lot more relevant outside of Windows too. Unfortunately for Microsoft, there's now also more competition in the Linux / UNIX ecosystem than there's ever been.
Unless you start with Mono and port to .NET, you may as well forget it, and even though the runtime has the _potential_ to be nicer because of proper generics and value types and many other things, outside of Windows this is just not the case right now. Core CLR (or whatever it is called today) may fix this in future, but if you need to ship now or in the next year it is a poor bet.
But even if you need something right now and CoreCLR doesn't cut it Mono compatibility story got a lot better because they could just take stuff from CoreCLR and other OSS drops from Microsoft recently - so I would say cross platform developmebt with .NET is much less painfull than it was even 2 years ago.
Even more JetBrains is working on a C# IDE so you won't be stuck with MonoDevelop/VS code on non widows platforms.
I'm thinking most of this will be out during BUILD.
Last few posts here make me sound like a .NET advocate :D For the last year I've been doing C++/Python/Dart/JavaScript.
I also used Clojure/JVM before - I'm not one of those "full stack .NET" developers - I just had great expiriences developing on the .NET platform, been keeping an eye on the ecosystem and I hate when people dismiss it on false assumptions - there is some top of the line stuff in that platform that would make my life as a developer better on a daily basis.
Sure but truth be told, Mono is not as good as the official .NET Framework, even more so when it comes to doing GUI applications. I don't think most people would choose Mono to do a serious cross platform application, when Qt and Java are so much better for this.
People have tried really hard to bring C# on to other platforms even when it starts feeling forced.
Ask Singing in the Rain and West Side Story :)