4 ms·
Love the analogy. 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
by jasonjei 11y ago
Love the analogy.
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."
- rubber_duck 11y agoProgrammimg is soo based on trends and not on technical merits : 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.
- jorgecastillo 11y ago>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.
- jasonjei 11y agoExactly. OpenJDK and Oracle JDK for the most part are interoperable. In fact, the open-source version of the JRE is the reference standard. You'd be able to run a web application almost out of the box with Java. It wouldn't be so possible with Mono and .NET.
- rubber_duck 11y agoMicrosoft opensourced a cross platform official implementation of .NET called CoreCLR - and altough slightly young you can do what you just said and they support it trough Azure on linux and offer OSX builds. 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.
- rubber_duck 11y agoSee I don't have a problem with this argument if you really made the evaluation - that is if you really can't find the stuff you need. 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"
- JulianMorrison 11y agoI don't think developers should take the blame for not using a language which has from day one been a deliberate trap intended, by its very usefulness on Windows, to tempt people away from Java into creating programs which can't survive outside Windows. It began as an attempt to nobble Java with incompatibilities (Microsoft J++), and when that got sued off the market, it returned as a "different language" (C#) that looked nearly the same, trying to play on all the same strengths - except the ability to escape from Microsoft's OS. Nor has that ever ended. Microsoft has no interest in helping Mono reach parity with its own version. 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.
- rubber_duck 11y agoSee this is exactly what I'm talking about ! 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 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 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 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.
- JulianMorrison 11y ago
- continuational 11y agoI think the main reason why Dart was poorly received, was that it is as complicated as a statically typed language, and as unsafe as a dynamically typed one. The unsoundness is not just superficial; every assignment is a potential run time type error waiting to happen. In practice, there's really no type safety at all, and it isn't used in the optimizer, so why bother?
- rubber_duck 11y agoBecause the tooling is top notch while the language is more flexible/expressive than say C#/Java. 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.
- discreteevent 11y agoFirstly you can run dart in checked mode which will catch all type errors. Secondly static type checks will catch most errors. Even if there were no type checking at all the types are still hugely useful for documentation, navigation and tooling. Gradual typing can be more productive than pure static typing in that you can play fast and loose when you want to prototype something and then tighten up later when you have arrived at a definition of the solution. Most of your arguments could also be applied to typescript (which doesn't even have the option of runtime tour checking)
- laumars 11y ago> Yet most people won't even touch .NET because it's not hip. .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.
- jen20 11y agoMost people won't touch .NET because the only deployment option outside of Windows is Mono, which depending on your use cases (for server software) ranges from "barely works" at best to "not even compiling your code using mcs" at worst. 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.
- rubber_duck 11y agoASP.NET MVC 6 is RC and pretty close to stable and will support cross platform CoreCLR out of the box - Microaoft will probably start offering Linux packages with it on Azure when it's released. 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.
- jorgecastillo 11y ago>as Mono does exist 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.
- jasonjei 11y agoThat's exactly the point I was trying to raise--without an integrated framework (like JRE), it's hard to consider Mono and .NET as a cross-platform toolkit. In fact, .NET and Mono have entirely different APIs to do UI, while Java is more/less integrated with respect to different JREs (including OpenJDK, Oracle, IBM, etc). People have tried really hard to bring C# on to other platforms even when it starts feeling forced.
- ido 11y agoc# is the main language used with the Unity game engine, which is currently the most poplar game engine around.