While I understand that HN has quite a population of .NET platform devs these days, traditionally this sort of noisy comments would be quickly rendered transparent (this one even claims to justify itself relative to a "language shootout"....only it's just a page talking about Go best practices, so it is off the mark). And the "Internet Geek Points™" thing is just nonsensical, and has become another defensive .NET talking point (e.g. "We're not trend chasers...now let me tell you how we also incorporate all trends").
I would have ignored it, but the above "language partisan" comment, having utterly nothing of value to add to the comments, or this story, and being completely out of context, has been floating on the top, betraying a pretty profound twist in the saga of HN.
Voting based on insightfulness or relevance simply cannot work when only a small minority can ever be expected to stick to it. We are being conditioned on picking a side and then boosting that side no matter what.
Voting up a comment that is in disagreement with your own opinion makes it look like you are losing the debate if being upvoted is generally associated with being right. So most people won't do it.
I believe the only way to prevent this in a community is to force people to use only words to express opinions. In my view, voting has no place in debates. And yes it means that we're not going to get our debates filtered and ranked according to insightfulness. But at least we're not getting any false signals based on perverse incentives either.
And yet, I just upvoted your comment because it seemed much easier than typing a reply to say that your comment was of interest to me and I enjoyed reading it. But now I've said that as well.
I like having the flexibility to do both, but I recognize the compelling arguments you've made about the problems with having voting available everywhere. On HN in particular, I feel the downvote capability should be further constrained than it is presently (I think it opens at 500 karma presently).
Ideally upvote would only be used for well-stated well-reasoned arguments with a plausible basis, regardless of the actual position, but I sometimes find myself upvoting a comment because I agree with it's conclusion. I think the agree-upvote is lamentable, but unavoidable in general.
Some UI changes might be able to fix the disagree-downvote (i.e. change to 'flag'), but I feel that the agree-upvote is too much a part of human nature to have an easy fix.
People invest time in their languages so it's easy to subtly inject emotions into comments that come off snarky and unproductive. Then other supporters of the language just defensively click the up arrow.
There was a lot of this in the WASM articles where they were saying it will kill off Javascript.
Many of us are happy in our niche, and learning new things is often a PITA. We're happy with what we do and how we do it, with the tools and things that we're used to. And that's okay. The truth is that the language evolution is something that we can mostly just ignore, and if eventually something is truly dominant for a use case, we can easily adopt it with no real handicap over people who ground with it from the ugly beginnings (and many of those advantages will percolate to other platforms anyways. node.js is just layers and layers of compromises and problems, but it had a profound impact on other platforms, and truly changed the web serving game).
And that's okay. But traditionally if someone posts resources for a particular language, it is bad form to engage in language wars, gloating, holier than thou (which the whole scarequote "maybe it isn't `trendy'" sorts of posts really are), etc, in the discussions. They're boring, we've had them literally thousands of times, and they are a distraction from discussing the actual contents of the post.
I've noticed this particularly afflicts Go discussions. Python, Rust, D, Swift...all can be discussed rationally and productively. But if Go appears, it seems to be just threatening enough that it draws out people concerned about things they don't know.
I totally agree with that. Apart from Swift which is by fiat, Go is the only language in top 15 or so which is used for serious work by developers who are not PL enthusiasts/theorists. This is putting serious, though I think unfair, demands on Go developers to justify their choice. So users of languages as diverse Haskell, Elixir, Java, Rust, Scala and many more keep beating Go with their favorite feature of preferred language. Somehow Rust specially stands out as its users/developers seems 100 times more interested in Go related discussions than vice versa. It is similar to politics saying: "You may not be interested in politics but it doesn't means politics is not interested in you"
I have written Go intensively and less intensively over the course of last four years. Not surprisingly, most of the criticism are true.
Although it's described as a systems language, it glosses over many low level details. The 'atomic' package says 'These functions require great care to be used correctly.' In attempting to find out what care is required, I ultimately discovered that the authors couldn't agree on how to express how to define its operation.
When used for applications and running into shortcomings, the response is that it's not meant for that. The takeaway is that Go hits a spot between low-level systems programming and applications.
First, a quick rant. You talk about "great tooling," and by this (I fear) you mean Visual Studio? Good libraries, by this you mean things like System.Foo.Bar.BazQux()? A "decent core language," by that you mean a pretty blatant knock-off of Java (which is an overly-bloated language in its own right)? And by "can do OOP" you mean must do, since the language forces you to embrace the paradigm? "Functional?" Without real first-class functions: without closures?
Generics? Fair point. Golang is lacking in that regard, at least for now.
But let me address the key misconception in your comment. You mention "sexiness," which in your mind is some sort of pointless quality. Here's what you're missing: biologically, we interpret sexiness as an indication of fertility. Good tools and languages aren't good because they're sexy, they're sexy because they're good. The ability to perceive, expect and demand this sexiness from tools is nothing more than a veiled desire to work in the most effective possible way. That's why people love Unix and hate Windows. That's why they leave languages like Java, C#, and C++ for Python and Go; and some (who I admire) use Haskell. It's not about elitism, the elitism is merely a by-product: the fundamental issue here is greediness, and the strength of one's desire to be as efficient as possible.
With regard to sexiness, as an old Quebecois logging foreman once told me, "Sometimes you want the supermodel wife, and sometimes you want the one who can carry the canoe." If you can get both, great, but I got a lot of canoes to carry.
> Honestly comments like these further discredit the Windows-development-community in my view.
I'm just an asshole with an opinion on the internet, and I seem to have misplaced my official Windows-development-community membership card...
Programming language flamewars are bad for this site. They're tornados of tedium that pick up entire threads and deposit them miles away in an intellectual desert. Please let's keep them off HN.
And C# is sexy, it's the best object oriented language out there. So don't worry. C# doesn't need yet another guide for web apps, there are thousands of books and tutorials about the subject already. You don't need to try selling C# to anyone. People who need it already use it.
In the next 12 months with the release of .NET Core, even the Windows requirement will go away. It should be at the top of the list for just about any project these days.
As another poster already commented; > You don't need to try selling C# to anyone. People who need it already use it
"Need" is a funny way of framing your counter. Of course any one who "needs" it, need meaning they can't use something else, would be using it. However there are many who would very much LIKE to use it but can't because the Core stuff is not quite ready for them; I NEED for it to work on OSX and linux but as of the latest dotnet deb package I can't use the AWSSDK with it.
Why not? I'm not selling anything. I just listed some reasons why C# is a great language with a great framework that can be more productive than most other environments.
By the way, it's probably one of the most commonly used languages ever when looking at the entire amount of software that's written in the world. Basically the entire Fortune 500 runs software written with .NET/C#.
"one-day" is today.
edit/ I'm not letting you off this easily. Mono never really worked and never really had Microsoft's support. Where's the ecosystem?
Yes, Mono had issues as I said but it did/does work if you can work around it. Granted the windows licenses are cheaper than the dev effort to fix any potential issues so it's not the best situation.
But .NET Core can be used today and it works fine with the framework rapidly being developed. Several major libraries are also in or have completed the migration and we're just waiting on some other dependencies but we do have smaller apps running today.
Ecosystem for the code is the same (and as vast) as it's ever been, that's the strength of the CLR/framework. Mono/.net on linux does have a community but it's growing quickly now with Core.
There's a time to play with new shiny objects, and there's a time when you have to get real work done.
If anyone here hates on you because you can get shit done with your preferred language...they're just jealous of your productivity.
I've done C# development for many years. C#, while elegant, is far from being a productive language, mostly because of its ecosystem and community. Making a simple API web server using proprietary Microsoft libraries is way harder than it needs to be. Documentation is also piss-poor on most of these tools, and many developers just resort to reading opinionated online web blogs which give all kinds of terrible advice. You can use open-source libraries like Nancy instead, but they're usually error-prone and updates have been known to break production deployments.
Visual Studio still crashes all the time and compilation on bigger projects is usually slow and painful. I've had to work on full fledged projects with infamous Entity Framework data-access layers and these things are a nightmare to work with. I've seen entire projects generated using T4 text templates...
As feature-rich as the language may be, the way developers use it lead to huge problems. Now that Microsoft is introducing ASP.NET Core the fragmentation in the community is only getting worse. Couple this with the fact that .NET is used in all sorts of dysfunctional development teams, and you've got a recipe for disaster every time.
C# is not a productive language.
Is it super sexy, no. Does it win me Internet Geek Points™, no. It's pretty much still Windows-only, but fine, that's the world I live in. The foot-guns are relatively small-caliber, and I've learned enough to avoid pointing most of them. I can do OOP, I can do functional (maybe not super pure ivory-tower monad/ADT/pattern-matching sorcery, but whatever - still have F# on my todo-list...), I can write straight procedural code if I really wanted to. I've even got a REPL and can use it as a scripting language.
Plus, I have generics :-)