7 ms·
It really is striking to me that it is so popular to dislike Go on HN. A lot of people seem to have to voice their dislike for it instead of just not using the
by aaronarduino 9y ago
It really is striking to me that it is so popular to dislike Go on HN. A lot of people seem to have to voice their dislike for it instead of just not using the language.
- bartread 9y agoI think it's because there's a relatively large contingent on HN who dislike Google in general and therefore, by extension, anything they build/support. EDIT: Why the downvoting? Sure, there are valid issues with golang, but there are also a small but vocal minority on HN who enjoy being rude to Google because they don't like Google, which is what my comment relates to. I certainly don't have any axe to grind with the author, the article, or the commenter to whom I'm responding. It was just a perspective on why, in general, golang might get more of a slating than it perhaps deserves, and I acknowledge that amongst that there will obviously be some people who have many valid reasons not to like golang. Sheesh.
- kmicklas 9y agoNah I worked at Google and even there most engineers didn't like Go.
- stouset 9y agoOr maybe it’s because we’ve tried golang repeatedly, been frustrated the entire way, and are desperately hoping that someone will help us understand what people actually see in the language. I work and live in SF. Of people I talk to in real life who’ve used golang for non-Google, non-toy projects, sentiment is at least 4-to-1 against it, and in my anecdata that ratio generally increases as people use it for longer. The one consistent praise I’ve heard that seems genuine (and that I don’t entirely disagree with) is that it’s easy for a new team member to jump on board and be productive. Which sounds great, but if this is what you’re optimizing for at (in my opinion) the expense of nearly everything else, then it seems like a self-fulfilling prophecy of high turnover.
- matt_m 9y agoSure, I think I can explain some of what people might see in it. Obviously its strengths/weaknesses will depend on what language you compare it to, the article mentioned Java so I'll use that. 1) Value types - in Java if you want an array of objects of a non-primitive type, each one will be individually heap allocated (with some extra per-object overhead) and stored as an array of pointers (may change in Java 10). Go allows objects to be linear in memory with no overhead. 2) Slices everywhere - in Go slices are the default list representation. This allows any API that takes a list of objects to be passed a range of a bigger list, without copying/allocating. 3) Low-latency garbage collector - I believe Go has one of the lowest latency garbage collectors in common use (sub-1ms pauses). I realize Java has several options, but I think Go's is lower latency than all but some commercial/exotic ones like Zing. This is not saying the GC is better all around, just on latency. It's also relatively easy to minimize allocations in Go due to value types. 4) Low-overhead concurrency - lightweight tasks with no blocking/non-blocking dichotomy in APIs. But threads can scale up a lot, so this might not be a big benefit depending on the application. 5) Interior pointers - you can lay out structures linearly, and still use interior pointers. Also, you can use them as interfaces without allocating any 'boxed' objects. There's probably more, but these are the things that come to mind right now. Looking back on this list, all of them are performance related. So if an application isn't performance sensitive in any of these ways I guess it would be understandable that someone might not see much in it, compared to a language with a higher learning curve but a lot of conveniences like Kotlin. Things like capitalization don't seem that big an issue though... maybe because Go is a simple language the tooling is already pretty good, and you can easily rename to upper/lower case in an IDE like GoLand. For people unfamiliar with Go and want to see something more than hello world, I think an interesting project to look at is https://github.com/fogleman/pt https://github.com/fogleman/pt. It's not enormous but not trivial either and makes use of interfaces, goroutines etc. The author's other projects are great too.
- eropple 9y agoI think that's an uncharitable explanation. I'm very happy using the Google services I do and I pay them for my personal domain/email (have for the last decade or so). I think Kubernetes is a great idea and I run it in production. But it would be difficult to find a job that would pay me enough to deal with the frustration generated by having to deal with Golang.
- bartread 9y agoI'm not sure what the downvoting is for. There are verifiably a bunch of people on HN, granted probably a vocal minority, who slag Google off for a variety of reasons (plenty valid, no doubt). The author of the article doesn't mention Google, but that's not what my comment was about: it was a (very mild) observation that there are some people, and I'm sure by no means the majority nor anywhere close, who will neg on Google and their tech, because they don't like Google.
- deleted 9y ago[deleted]
- tonyjstark 9y agoI would agree, but then, the author names reasons to dislike Go (even if we all heard them before), does not say anything about Google and is not even exceptionally vulgar about it. So after reading about golang over and over, it seems it is going the MongoDB way. A lot of excitement at the start because it's easy and fast to put something out but as soon as maintenance mode needs to kick in, people realize it is not the silver bullet and maybe not even a ok solution. But isn't that a problem of the whole industry? First a hype gets build up and a lot of people jump on the band wagon. Then the real world kicks in and some complain overly loud and others chime in with "I told you so". Finally a lot of people change the tech stack silently because nobody likes to talk about their failures too much. I can't say if it is the same with golang, I did not use it at all yet, but some design decisions are at least doubtful.
- stouset 9y agoPeople are downvoting you for claiming that the dislike of Go is primarily due to anti-Google bias as opposed to actual technical concerns about the language, which preemptively discounts the opinions of these people without having to address any of the points they raise.
- z0r 9y agoit's important to voice these concerns to minimize the chance that one will end up having to use these tools in future jobs Go and its history shares a lot of similarities with Java, but it hasn't had its 5.0 moment yet
- thawkins 9y agoAnd dont even bother mentioning golang aps that use mongodb, immeadiate hue and cry, definatly a haters stack.
- CodeMage 9y agoMaybe I'm not following HN closely enough, but judging from this post, it seems that people are pointing out what they dislike about Go, instead of just heaping abuse on it. In my view, that's a positive and productive thing, for several reasons: 1) The discussion gives insight to people who have never used Go. The usual way of getting that kind of knowledge is to shoot yourself in the foot and learn from it. 2) The back-and-forth can provide useful advice on how to work around certain problems in Go. 3) Language designers can always use these discussions to guide and inform their decisions. "Hmmmm, haven't thought of that, better make sure my language doesn't do this; that other thing is an acceptable tradeoff, though."
- andyfleming 9y agoGreat points! Additionally, I think it's important to point out the flaws or, maybe better-put "trade-offs" of technologies, especially when they are very popular. I think it's important to temper the hype and share collective engineering wisdom.
- deleted 9y ago[deleted]
- aaronarduino 9y agoI agree with both you and the parent comment. It's just off-putting to have titles like "Why I Don't Like Golang" and articles that give no other value except for pointing to the perceived negatives. I think more constructive articles and titles would be like "What I Wish I Could Change About Golang" and would include background on how long the author has been writing Go and in what context.
- andyfleming 9y agoI agree. Using less antagonistic language and providing more context would both be great.
- zkomp 9y agoWell yes! You might not have that option to not use it (too late). Just like this guy you (or your colleges) might actually have been fooled by curiosity and hype to write some code and put it in production, and when you realize how bad it actually is (this was only a personal top 10). At least you should try to fight back against the hype and try to warn people. Still think the general sentiment is quite go positive overall, go definitely needs more critique.
- randomdata 9y agoStrange. I've always found HN to be fairly Go positive, and what criticisms you do see tend to be constructive, coming for those who seem to use and are invested in the language. I sometimes visit other technology-focused forums where anything about Go quickly devolves into "No generics, no good" from people who have clearly never even tried the language, so perhaps everything looks positive compared to that.
- nomel 9y agoOr you could look at it as valid criticism is what inspires change and awareness of shortcomings in the world of programming. Even if I don’t us a language, I very much enjoy these sorts of “after x years review” since I definitely won’t be getting x years in each. They force me think in terms of doing things with a computer easily/language design, which is the point of all of this. This perspective help me see the shortcomings in whatever language I’m using and helps me remember to not get stuck in it.
- camus2 9y ago> It really is striking to me that it is so popular to dislike Go on HN. A lot of people seem to have to voice their dislike for it instead of just not using the language. It's normal. After the initial hype 3/4 years ago, developers are taking a harder look at that language and with experience its flaws have become more obvious. Go type system definitely has problems that aren't addressed by its designers, IMHO limiting its adoption. > A lot of people seem to have to voice their dislike for it instead of just not using the language. One can use a language daily while still remaining critical of it. People who don't use Go don't care about Go. Only people using Go will complain about its shortcomings. A lot of Go issues have actually been addressed in previous languages such as Ada. Ada tasks for instance are close to go-routines and they use the same "select" system to deal with concurrent messages. However, Ada tasks unlike go-routines are "objects" that can be referenced as variable, they also can scheduled by the developer. There is not a single language out there free of criticism, Go isn't different. So it shouldn't really be striking at all.
- petre 9y ago> Go type system definitely has problems that aren't addressed by its designers Wouldn't that break the promise of backwards compatibility that they made with major versions? They could probably do that in Go 2. Personally, I think D is a more mature language, design wise, although it's a bit lacking in terms of libraries compared to Go and the tooling is, also lacking compared to Rust.
- deleted 9y ago[deleted]
- deleted 9y ago[deleted]
- 5ourpu55 9y agoWhat's your point here exactly? A lot of people HAVE to voice their dislike of articles criticizing Go instead of just not reading the article. See what I added to the conversation there?
- crdoconnor 9y agoI've always thought it was a little unfair the amount of exposure and hype technologies like go or mongo get simply because a household brand or a big marketing budget is behind them. There are better technologies out there which languish because they don't have that benefit. I think pouring cold water on excessive hype is, on balance, probably a good thing.