Earlier quoted context omitted.
Is that true anymore? I was under the impression that .NET is fully open source: https://dotnetfoundation.org/ Besides that though, C# is much nicer than Java and fills a similar niche.
That covers the new .NET core parts, not the classic .NET. The classic .NET framework contains lots of components (e.g. WinForms, but also others) which are mainly wrappers around Windows/COM components. Therefore they can't be fully open source. Nevertheless the .NET core and open sourcing effort is great from my POV.
Let's stop bashing C#
51–60 of 99 posts
Re: Let's stop bashing C#
#52Earlier quoted context omitted.
Is that true anymore? I was under the impression that .NET is fully open source: https://dotnetfoundation.org/ Besides that though, C# is much nicer than Java and fills a similar niche.
That covers the new .NET core parts, not the classic .NET. The classic .NET framework contains lots of components (e.g. WinForms, but also others) which are mainly wrappers around Windows/COM components. Therefore they can't be fully open source. Nevertheless the .NET core and open sourcing effort is great from my POV.
It's my preferred language, especially now it is getting functional constructs. It's basically a more advanced, concise and flexible version of Java. Only with value types (fast algorithms).
As others have said the ecosystem is different, it's better for games (Unity) but horrible for NLP (Lucene.net is a museaum piece and NHibernate isn't great).
I write just as much TypeScript/JavaScript nowadays and keep my Java/Python up to date. I really want to add a functional language to replace Python (the 2/3 divide is tiring) but don't have the time (thanks to having two young kids and a wife who also works full time).
Re: Let's stop bashing C#
#53There is no reason to bash C#, but there is still reasons to be on the fence about it. The runtimes and libraries for non windows platforms are still behind, and are quite new. Additionally while there has been efforts to grow the community and get outside involvement, it is still obvious that Microsoft is the big player, and without their involvement the community might shrink to a fraction of its size. Microsoft it…
Integrated Development Environment, Built in package manager, massive maintained ecosystem of libraries, fastest compiler in production (after lisp languages), compiler as a service, full runtime reflection and emit capabilities, three GUI libraries + Designers built into the IDE, A full blown MVC web backend toolset. There is more, but is this not enough? The language isn't perfect, but the idea that it has to prove…
But the OP did specify for non-Window OSes and for Open Source. And I don't think they meant that the language itself had to prove itself, I think they meant that it needs to prove that it can inspire programmers in those other cultures. That's quite a reasonable statement IMHO.
MS stumbled out of the gate with this. They made a reference implementation, but used their crazy shared source license for it. The Mono/Gnome guys had a huge love affair with MS (to the point of trying to make their own implementations of Com objects and the registry (!)). MS was vague about their feeling about Mono for far too long. Even now, my understanding is that Mono is very careful not to tread on any toes when re-implementing things that are in .Net. And I'm probably one of the few people who used the open source .Net library (whose name I forget now... Mobile.Net... or something) and was constantly cursing that MS made it difficult for code to run on both that platform and a full blown windows .Net platform.
If you want to write proprietary code on Windows? Absolutely C# and .Net all the way (or, these days F# is looking very nice). But open source on a Posix box? Not touching it with a ten foot pole. I've got lots of better options.
Re: Let's stop bashing C#
#54I've been primarily using python for the last couple of years so it's been a really interesting experience. Here are some of my thoughts:
- The language itself is really mature and actually really easy to be productive in. We're using ASP.NET MVC and getting to know the right way to do things took a while though.
- It's hard to use C# without Visual Studio on Windows. I've tried Rider from JetBrains which is decent but takes SO much memory and is pretty slow to develop in. I've been using VSCode recently which is a great general editor but lacks a number of great VS features. Visual Studio for Mac doesn't work with how our app is structured for some reason (VS on Windows in a VM works fine though). I've had to fire up bootcamp a few times to use VS on Windows.
- I thought static typing was going to make it harder to do things, but I think in terms of preventing some common bugs its great. It's no silver bullet though.
- I'm developing on a mac and deploying on Linux. There's no great way to filter for .NET Core packages on NuGet (the M$ package manager). We've run into some issues trying to use versions of packages that aren't yet .NET Core compatible
- There are a number of commonly used Linux environment tools we cant use, like New Relic for APM, because they don't have support for the platform version yet
- The ORM (Entity Framework) we're using is nowhere near as good as something like SQLAlchemy when it comes to migrations. It's laughably bad.
- The testing framework is pretty good, but without real Visual Studio we're missing some great features like code coverage analysis
- Paying for a license to use a library we needed feels REALLY weird
- Overall our web service is really fast. Asynchronous programming in C# is very easy and very powerful and we've been able to make a lot of performance gains by using it judiciously.
- Its honestly hard to find answers googling around sometimes because there are so many version of .NET and 10+ year of answers to the same questions. The same can be said for a number of languages.
- Our build and deployment already handles a few other statically typed languages to making it work with .NET wasn't a big deal for us, but I can see how that could be hard
I'd be happy to answer any questions that people might have.
Re: Let's stop bashing C#
#55I use C# daily at work and my dislike can be summed up by one word: Microsoft. They may have changed course but open source software has for 10+ years largely avoided the platform. This means C# is Java with nicer syntax but 10% the libraries and terrible cross platform support. There's been countless times at work when I needed a certain library and I already knew what the Java equivalent was, but what I was looking…
This really sounds like a lack of knowledge of the .NET ecosystem. Every area you mentioned has extensive library coverage. In addition there are several C# IDEs available, including from JetBrains who creates IntelliJ! Roslyn makes fancy features such as auto complete available to text editors as well such as VS Code or Atom.
In Java I can run Jetty or Netty on whatever and use http2. Old Os or whatever doesn't matter because the protocol isn't tied to the OS network stack.
Re: Let's stop bashing C#
#56I use C# daily at work and my dislike can be summed up by one word: Microsoft. They may have changed course but open source software has for 10+ years largely avoided the platform. This means C# is Java with nicer syntax but 10% the libraries and terrible cross platform support. There's been countless times at work when I needed a certain library and I already knew what the Java equivalent was, but what I was looking…
This really sounds like a lack of knowledge of the .NET ecosystem. Every area you mentioned has extensive library coverage. In addition there are several C# IDEs available, including from JetBrains who creates IntelliJ! Roslyn makes fancy features such as auto complete available to text editors as well such as VS Code or Atom.
Re: Let's stop bashing C#
#57Earlier quoted context omitted.
Yes this 100%. Community ecosystem is a joke on C# compared to Java. Take for example lucene. I just used version 3.03 in a C# project because the port hasn't been updated in years. Version 6.x is the current one. We also needed to use Redis in C# and the client is unstable. Nothing we can do about it besides catch the exceptions and randomly reconnect when it happens. Are we losing some data? Probably. Even if the o…
I had the same with Lucene a few years ago. It's really frustrating to realize that there is a ton of open source stuff out there but you can't use it because you are on C#. Or you get something outdated or buggy. I really wish MS did something to make Java/C# work together.
All the guys that live in MS world swear they're not missing out on anything. But these are the same guys that lived in the enterprise version of North Korea until a few years ago.
Re: Let's stop bashing C#
#58Re: Let's stop bashing C#
#59Earlier quoted context omitted.
I had the same with Lucene a few years ago. It's really frustrating to realize that there is a ton of open source stuff out there but you can't use it because you are on C#. Or you get something outdated or buggy. I really wish MS did something to make Java/C# work together.
It gets worse the more familiar you are with open source, because you know how bad you're missing out. All the guys that live in MS world swear they're not missing out on anything. But these are the same guys that lived in the enterprise version of North Korea until a few years ago.
I like that phrase. Unfortunately it describes my life :-(
Re: Let's stop bashing C#
#60I never heard anyone bashing about C# and I'm writing C# code for 10 years now. There are just plenty of people favouring other languages which is fine. If you're looking for people bashing about it you'll sure find some.. same goes with basically everything.