11 ms·
Let's stop bashing C#
- frogfuzion 10y agoUntil all programming languages coalesce into one super language (ECMAScript 20 in the year 2050), programmers will bash languages and programmers will praise languages. Until that fateful day we must all accept criticism of our favourite language even though we are so smart and know it's the best language.
- hacker_9 10y agoEven then they will war on, because the task of converting all libraries to another language is such an immense undertaking. Really we need an AI to do the transpiling job, then assign performance and maintainability scores, so we can objectively argue the clear winners.
- VodkaHaze 10y agoI agree. If you are going to bash C#, call it by its proper name, Java++ That said its still a fine language. Not a fan of the dogmatic OO design concept in Java and C#, but it's perfectly good at what it does.
- jlawer 10y agoThere 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 itself complicates matters as for some people it takes a lot to be convinced that "new Microsoft" isn't just old Microsoft in sheeps clothing, and its all a ploy to get people onto their platform so they can lock you in. I have started to be convinced that microsoft has actually turned a leaf and is actually working to build a community and genuinely will support other platforms, but I am always going to be a little cautious... call it post traumatic stress from the early 2000s. Finally I don't see a reasons to rush to build in C#. It seems a perfectly decent language, but without being experienced in the language is there a problem domain (outside rich client windows apps) where the language is significantly better then other choices? I don't think C# should be bashed, but I also think it still needs to prove itself to the non windows platform and open source developers.
- hacker_9 10y agoIntegrated 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 itself to anyone is quite an arrogant stance to be honest.
- jlawer 10y agoIf I am going to have to support an application written in it to clients, then damn straight the language needs to prove that it will be worth the investment. Many of the features you mentioned are not available for the .net core version. The .net core version is not a standard install on client servers (it is not shipping with RHEL/CENTOS) and is still very recent. Having supported dozens of Java apps through the early versions, the last thing I want to do is spend my time discovering esoteric runtime / os library version conflicts. So yes, the language needs to prove itself that as a platform for delivering Linux / Mac server apps that it is as boring and reliable as the rest of the stack.
- mikekchar 10y agoIt's been about 10 years since I used C#, but even in it's nascent form I enjoyed programming in it. Also dev studio for C# is the only IDE that I've ever enjoyed using (for C++, not so much ;-) ). 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.
- FrankyHollywood 10y agoEven if C# would be the most technical superior language ever made with every feature you could think of, a lot of developers still don't like it because: - C# smells corporate, being used in many large scale business application. - C# is developed by Microsoft, a billion dollar company itself - The .NET platform is only partial open source So facts don't matter much, it's about smell :)
- hacker_9 10y agoActually the main bashing point was C# is Windows only, and of course Windows isn't hipster. Anyway with .Net Core all of that goes away, and for Windows only users (90% of the market) it doesn't make a difference. Also why is it bad the language is developed by a billion dollar company? It means the language tooling is second to none, as well as having fully document libraries which can do everything, and are kept up to date.
- adgasf 10y agoIs that true anymore? I was under the impression that .NET is fully open source: https://dotnetfoundation.org/ https://dotnetfoundation.org/ Besides that though, C# is much nicer than Java and fills a similar niche.
- Matthias247 10y agoThat 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.
- deleted 10y ago[deleted]
- radicalbyte 10y ago..and you don't want to go anywhere near that stuff unless you must write win ui software. 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).
- iomind 10y agoThe link is broken. yeah, let's stop bashing.
- zapu 10y agoWorks fine for me.
- nawtacawp 10y agoIf the author wants credibility about bashing C# perhaps they should not generalize other languages within their argument. Can C# not stand on its own merits? As someone who has been using Python for nesrly two decades --How is the author defining 'hipster' languages?
- masklinn 10y agoApparently "hipster languages" are languages of which the author heard after C#, and "mature languages" are languages of which the author heard before C# (note that the list of "mature languages" is exactly identical to the list of "I have a background working with <languages>"). Makes no sense either way. But as far as I can tell little of TFA does, just some bloke claiming victimhood for their pet language.
- sametmax 10y agoWhat's more, Python is usually quite appreciated in the .Net community. It's a first class citizen on Azure, it used to have a .Net port (IronPython) and one of the current trending github project for C# is one allowing Python interoperability (https://github.com/trending/c%23 https://github.com/trending/c%23) It's like a grandpa getting angry alone in front of his mirror.
- denfromufa 10y agoI would say it is in both directions ;)
- draw_down 10y agoRight, it's "bashing" when people say things about C# the author doesn't like, but slagging off other languages as "hipster" apparently doesn't count as bashing.
- patatino 10y agoI 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.
- sametmax 10y ago+1. I mostly heard good thing about C#. It's usually quoted as one of the things MS did right. The biggest rejection comes from the strong windows orientation and the restrictive licenses. Now that the situation is improving for both, you will see the language gain traction.
- dpwm 10y agoDespite the strong windows orientation, there was an era when shiny new GTK desktop apps (f-spot for photos, banshee for music) were written in C# using the Gtk# bindings.
- WorldMaker 10y agoI was a big fan of F-Spot, Banshee, and some of the others. The antagonism on some of the mailing lists against these Mono apps was part of my disappointment in some of the Linux community of that era. (Ubuntu moved some of these into the default distribution, got a lot of vocal minority flack from it, and removed them.)
- dagurp 10y agoI agree. My feeling is that people are generally very positive about C#. It encouraged me to start learning it.
- rubber_duck 10y agoThere's a small ammount of trolls that spam "M$" kind of arguments but they are largely ignored from what I've seen. On the flip side there's a lot of people who over-represent C# especially in comparison with Java. I mean the language is very nice, better than Java no doubt - but the platform and ecosystem is much less mature than JVM. Where is the .NET equivalent of ZooKeeper, Hadoop etc. .NET can use those like any other language but the fact of the matter is that Java was and is still the choice on those kinds of projects and the ecosystem is much bigger. Even when .NET gets something from those like Akka.NET, JGit it's usually a worse copy. And JVM ecosystem is much more distributed, there's plenty of stuff going around all over - Scala feels a lot more popular in the real world than F#, Clojure feels like a similarly niche thing but is entirely community driven, and the early results from Graal/Truffle were quite impressive, much better than Microsoft did with the DLR before they left it off to community.
- warcode 10y agoC# with the available libraries through the nuget package manager has been the best experience I have had in my career.
- vgy7ujm 10y agoJust use Bash instead of bashing C#.
- vgy7ujm 10y agoWow this lighthearted post gets downvotes. Not by Linux people I hope.
- NicoJuicy 10y agoWhy would c# be bashed? On the contrary, i'm detecting a lot of approval of Microsoft and dot net the latest "months"/"years". Microsoft is doing fine and their products also. Not mentioning the rize of Visual Code that is trending EVERY release :)
- al2o3cr 10y ago"Hey, the process for adding features for the language isn't any more opaque than Java!" Talk about damning with faint praise...
- throwawaydbfif 10y agoI 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 for simply didn't exist. Database clients, data processing, http2, image manipulation, etc... With Java I get everything I do from C# plus all the stuff they've been raving about working on in .NET core . Plus I get choice. There's 3 full featured IDE's, 20 or so servers, 6 or 7 JVM's
- nightski 10y agoThis 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.
- throwawaydbfif 10y agoOkay so my latest issue http2... In C# you have to be running the newest version of Windows to use it. You know how happy my boss was to hear that we needed new server licenses to use http2? Very. Use .NET core? Not ready yet for production yet but probably will be in a few years. 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.
- WorldMaker 10y ago.NET Core 1.x is perfectly suitable for building new production apps today.
- slowmovintarget 10y agoHaving used it in production for a more than a month now... No. No it's not. Mono and .Net Core RC1 were more stable for the same workloads.
- moomin 10y agoRob Ashton made the point years ago that the principal problem with C# was cultural, not technical. http://codeofrob.com/entries/why-you-cant-be-a-good-.net-developer.html http://codeofrob.com/entries/why-you-cant-be-a-good-.net-dev... Of course, he did it in his classically abrasive style, so not that many people championed the article.
- major505 10y agoC3 is awsome... dosen't matter if not anyone can see. But what really helps c# being awsome is VS. One of the most complete IDE in market. I use VS since 6.0 and still founding new features that is surprises me.
- cryptarch 10y ago.NET Core isn't packaged for Debian, Fedora and CentOS, and for Ubuntu you have to add a separate PPA. That makes it an instant no-go for me. I'm not a software packager and I'm not becoming one to try new and unstable C# tooling. Visual Studio Community was a pretty terrible experience and I don't intend to spend more of my time on unreliable Microsoft products.
- enibundo 10y agoWhat do you code in normally?
- cryptarch 10y agoA GNU/Linux distro + vim usually, with some Docker and shell scripts/make for the build process. Very transparent and everything can be versioned in Git. Kinda the opposite of IDE-centric development, but the available Xamarin tooling didn't support that way of working.
- rikkus 10y agoWhile there aren't necessarily native packages pre-built and ready to pull down with the installers, you don't need to be a 'software packager' to install .NET Core and I don't know what the problem is with 'add[ing] a separate PPA' Instructions for Debian[1], Fedora[2], Centos[3] and Ubuntu[4]. These all seem like pretty simple copy+paste instructions. [1] https://www.microsoft.com/net/core#linuxdebian https://www.microsoft.com/net/core#linuxdebian [2] https://www.microsoft.com/net/core#linuxfedora https://www.microsoft.com/net/core#linuxfedora [3] https://www.microsoft.com/net/core#linuxcentos https://www.microsoft.com/net/core#linuxcentos [4] https://www.microsoft.com/net/core#linuxubuntu https://www.microsoft.com/net/core#linuxubuntu
- cryptarch 10y agoI don't want 3rd party repositories to manage. To do it properly I have to (in the case of Debian) trust some MS team's signing keys (yuck), add the repo and update my apt-pinning rules (I don't want apt accidentally installing MS versions of tools) and integrate this in my dev OS build automation. That vs. adding a single line in my list of selected packages. The price to adoption is high and it's just not worth it to me, especially seeing how immature the tooling and overall ecosystem is.
- kailuowang 10y agoStop defending the language of your choice as well. Each popular language has its own set of suitable use cases. Ignore the attacks on the language you are using, instead, try the other languages to see what they are good at.
- zargath 10y agoI have loved .net as a framework and c# as a language, but the bashing is just as well part of the community itself. What about the c# developers hating vb.net or java? What about .net experts bashing jvm, php, node ? What about windows users bashing *nix for GUI? ahh the list is long, from both sides. Frameworks and Languages are fine, but what have you actually done with your stack?
- milge 10y agoI've written C# for the last 10 or so years now. I was a lot heavier in C# the first 5 years until my career changed paths. So I've gotten to watch C# "from a distance" for the last 5 years now and I'm optimistic about C#'s future. C# has an image problem. Of the programmers I've talked to, the polyglots usually see the strengths in C#.
- StevePerkins 10y agoThis sounds like one of those karma-fishing Reddit posts that start off with, "I know I'm going to get downvoted for this, but...", but then go on to state a popular opinion and receive thousands of upvotes for it. No matter which programming language is mentioned here, there will ALWAYS be a few people commenting, "I like 'X' better!" (where 'X' is usually an emerging language that they tinker with in hobby projects and haven't used professionally yet). That caveat aside, C# has generally been one of HN's darlings in recent years. People who crap on Java turn around and praise C# in the next breath, because: (1) There are some syntactical niceties that make C# feel "lighter", (2) MS has developed a more "open" and even "cool" reputation over the past few years, at least in comparison to Oracle, and (3) In many cases, it's again people who have started tinkering with it in personal projects, and haven't yet hit the inevitable pain points of using any language for real professional work in a team setting. C# certainly isn't Haskell, but it checks off enough functional checkboxes to have some cred, while still being approachable and familiar enough for non-academic mortals out in industry. Xamarin and Unity aren't perfect, but they give C# a solid foothold in mobile and gaming (which, along with web dev, are the holy trinity of domains that drive hype among young devs. I really haven't heard much negative chatter. There will always be the people holding on to MS's propriety brand image from the 90's, who always want to comment on it from their Apple devices today. But on the Internet hype spectrum of "cool" (Rust, Go, Elixir) to "uncool" (Java, PHP)... I'd say C# is at least 10% off the middle, in the direction of "cool". It checks the checkboxs of: * "mildly interesting", * "low learning curve", * "ease of actually finding an employer who uses it", and * "not likely to fade away because people don't migrate to version 3, or because Mozilla can't find another sponsor after Yahoo, or because yet another Ruby-successor comes along next week and sucks up all the hype, or whatever". Really, the only people who criticize it a lot are the people in Microsoft shops who actually use it for a living today (!), but isn't that pattern usually true for everything?
- jeffrand 10y agoI've spent the last 4 months writing a C# web service on .NET Core and deploy on Linux. We chose it because it was the right tool for the job. We're consuming a verbose WCF web service and there were some unique benefits to doing it in a .NET language. I'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.
- denfromufa 10y ago.NET is highly backwards compatible, so why does "10+ year of answers to the same questions" matter to you?
- TerminalJunkie 10y agoI just prefer to use languages that I'm more proficient with. And, the cost of MSVS etc. is expensive, as the article mentions.
- draw_down 10y agoPart dispelling of myths, part "well I actually like curly braces, so there." Please enjoy your curly braces, nobody is taking them away anytime soon.
- segmondy 10y agoc# > java JVM > CLR my opinion. I'll pick java everyday over c# due to the jvm. unless I'm building windows only app or an app for the app phone.
- bsg75 10y agoC# is no worse than Java.
- bsg75 10y agoMaybe even a bit better.
- mikestew 10y agoAnd while we're at it, let's stop beating our spouses! Seriously, that's one of the bigger straw man posts I've read in a while. Sure, I'm confident that somewhere on the big, wide Internet claims such as those listed by the author can be found. And some folks seem entirely convinced that the Earth is flat. You want "bashing"? C#'s got nothing on, say, php. C#, AFAICT from circles I pay attention to, is loved far more than it's hated. But, as someone else in this comment section pointed out, it's a hell of a way to generate clicks.
- SomeHacker44 10y agoJust the opposite. I've wished for more than a decade that Java would be more like C#. Even more since Oracle took over the stewardship of Java. With .NET Core and Microsoft's new CEO's vision, I am excited for the future of C# (and F#) and very happy to put Java behind me. The CLR is a lot nicer than the JVM too. Now if only the ClojureCLR could get the support that ClojureJVM had, I'd be done with the JVM entirely.
- Adutude 10y agoI used C# to write an Excel toolbar. The big problem I had with it is that there were features they had only implemented in Visual Basic/C++. It appeared that C# was incomplete in it's implementation of MS API's
- hermitdev 10y agoI've done the same. The problem isn't C#'s access to the APIs, the problem is the APIs are incomplete, especially as MS moved to the SDI interface since Office 2010. There are somethings you just can't do in an Add-In that are obviously possible due to built-in features. Things like have a text-box in a toolbar show the proper text in inactive windows.
- iLemming 10y agoTo be honest I kinda hate Anders Hejlsberg. If it wasn't him I wouldn't have gotten myself into Turbo Pascal and later Delphi and later into C#. I would've probably looked into C and Lisps. I spent years thinking Windows is the best OS and VS is the best IDE. I wish there was someone 20 years ago to stop me from falling into that trap. Well, I broke out of my bubble and now I feel free. No matter how nice it may look - dotnet is a mental prison.
- joelbondurant 10y agoInstall some C# apps on Linux, observe C# bash itself.
- c0l0nelpanic 10y agoI am a crusty old developer who has written many a C# program over the years. I am certainly not hip, cool or trendy, but my friends and I have become financially independent thanks to C#. Thanks Micro$oft. Love you!
- Anardo 10y agoI like C#, I wrote it for 2 years, but stopped because Microsoft makes IE. Microsoft can die as a company, and I would smile watching them die.