12 ms·
Why Go gets criticized so much
- amelius 11y agoOfftopic: Can we please use "GoLang" for the language, so we can use "Go" unambiguously for the game? Especially in titles, where there is little context.
- hasenj 11y agoFor the game we should use "Go/Baduk" or something like that.
- tromp 11y ago"game of Go" seems simple enough...
- systems 11y agoi would argue that for most people here Go = GoLang i had never heard of the go game, before the ai go thing
- dyarosla 11y agoI don't know what the basis for your argument would be. Go the game and GoLang are both fairly talked about topics in Computer Science, most programmers do not program in GoLang (according to Github), and the AI match was a big deal for Computer Science in general. I would not be so quick to say that for MOST people here Go = GoLang, and agree with the parent comment.
- V-2 11y agoJust because most programmers don't actually program in Go themselves, it doesn't mean they don't know what it is. I haven't written a single line in Go, and yet it's immediately obvious to me what the title refererred to.
- dyarosla 11y agoYou have multiple people here telling you that their first reaction was not Go as in Lang. The obviousness to you and others does not prove the title is unambiguous to most. Here, we're trying to propose a solution that aims to eliminates ambiguity for the majority.
- V-2 11y agoI believe we are still in majority. Nothing has proven otherwise
- dyarosla 11y agoThe majority in what I said is = [people who treat Go as GoLang first AND Go as the game Go first] = the set of all people reading hacker news minus those who don't know either Go. Writing GoLang removes ambiguity for this majority. My first comment on this subthread has shown that neither you nor any other poster has proven that Go = Go first for most. Nothing you or any other parent comment including my own has proven either of Go = GoLang first OR Go = Go the game first for the majority of people.
- V-2 11y agoIt depends on the context, too. If I read a headline saying something like "Go is awesome for your brain", I'd be 95% sure it refers to Go the board game. When the headline reads "Why everyone hates Go", I'm pretty sure it can't be about the game. I don't think I'm being an exceptional individual - humans in general are very good at taking hints from context.
- coldpie 11y agoI do find the name extremely unfortunate. It's impossible to search for, as "go" is an extremely common word (bad for search engines) and substring (bad for ctrl-F find). I tried searching for shared web hosts that provide Go support and just gave up. Kind of hilarious to see a first-party Google language be impossible to search for.
- V-2 11y agoA great many programming languages aren't particularly searchable, especially when searching engines weren't up to todays standards yet. Things have improved, but I remember the dark days when looking for anything C# would shower you with C-related links.
- sesutton 11y agoUsing "golang" instead of "Go" nearly always gives the correct results in my experience.
- coldpie 11y agoThat's true-ish, although it seems unlikely that most marketing departments who would be putting together a web server page would use "golang" over "Go". Edit: This would be solved if the language was called "golang," which is precisely the original poster's point.
- rdtsc 11y agoAnd the was another existing programming language called "Go" and Google being well Google just stomped on that and moved on calling theirs the same thing. It is a nice benefit of being a billion dollar company. https://en.wikipedia.org/wiki/Go!_%28programming_language%29 https://en.wikipedia.org/wiki/Go!_%28programming_language%29
- StevePerkins 11y agoThat's like calling for people to specify "Microsoft Windows", to avoid confusion with glass-enclosed wall openings. I know there was a bit of news recently about a game engine defeating a top-level human player. Beyond that, however, the notion that "Go" references on Hacker News should default to the board game rather than the programming language is absurd.
- mikeash 11y agoArticles about windows-the-opening are pretty rare here, so "Windows" isn't ambiguous. Articles about Go-the-game are common, so "Go" is.
- Grue3 11y agoIt's not even the first programming language named Go. [1] [1] https://en.wikipedia.org/wiki/Go!_%28programming_language%29 https://en.wikipedia.org/wiki/Go!_%28programming_language%29
- tylermac1 11y agoNote: This is from Oct '14
- pythonist 11y agoGood points, and also correct answer. Identity is hard to question. But when you try Go without prejudice, it's just fun (and productive) afterwards.
- isido 11y agoWith golang, it is incredibly easy to get productive fast. It's like modernized, safe C with good standard library and trivial deployment. Those are pretty good selling points for getting stuff actually done. Using Haskell for similar stuff is more tedious, even if a actual coding is more fun. I can see (and sometimes feel myself) the cognitive dissonance here.
- sievebrain 11y agoI think the issue here is that you're comparing Go to C and Haskell. C is decades old. Haskell was designed to help you write correct programs, rather than simplicity of use or productivity (or that's how I'd characterise it). If you compared Go to C# or Java 8 or Scala, it'd probably look a lot worse. Deployment isn't so difficult that Go has any advantage in my experience: install a JVM on the server, ensure your build system is producing a fat jar, run it. Done. With Capsule you can even make self-executable JARs that have a little shell script attached. Then you can run the program like any other UNIX app. chmod +x and ./execute it. Fully self contained, and can even update itself automatically.
- jjuel 11y agoI use C# at work, and I use Go at home. I really do like C#, but there is a reason I am using Go at home. I find I am more productive, and can develop better code faster with Go even though I am very new with Go.
- sievebrain 11y agoI'm curious which parts of Go you find more productive than C#. Visual Studio slows you down?
- sievebrain 11y agoI don't hate Go. I do strongly dislike posts with clickbaity titles that have an admission the title is wrong in the very first sentence. The rest of the article is little better. It can be summed up in one line: People who dislike Go are upset because they incorporated their favourite programming language into their identity, and the success of Go challenges their own choices. Although I don't hate Go, I also don't like Go much, but it's not because it challenges my identity. I am not a Haskell or Scala programmer. I've used a whole bunch of languages in recent years, none of which are especially clever. I dislike Go because I agree with the criticisms of it and I'm afraid I might end up having to maintain code written in it one day. That wouldn't be much fun. Fortunately, so far I've been able to avoid maintaining PHP or COBOL so hopefully my luck will hold and I'll be able to dodge Go too.
- deleted 11y ago[deleted]
- lostcolony 11y agoIf that's an accurate summary (I am not commenting on that fact), it's a completely clickbaity summary. Because it applies equally to why everyone hates every even semi-popular language (other than their one true love, if it's considered sufficiently popular).
- bryanlarsen 11y agoFor a one line summary, it's pretty accurate, but it's also a great illustration of why basing opinions on one line summaries is often a bad idea. The difference between Go and pretty much every other semi-popular language is that Go is very much defined by what it isn't rather than by what it is. In that way, its success is an implicit criticism of other languages much more than the success of any other language would be.
- stcredzero 11y agoWhat's worse, is that it's a criticism backed up by empirical data. But programmers are unique and lucky, in that they get to be illogical and dogmatic while getting to appear rational and technological.
- xlm1717 11y ago>Obviously, not everyone hates Go. Well, at least the author saves me the time reading the rest of the article.
- pacala 11y agoML is also simple, pragmatic and from the '70s.
- jd3 11y ago``Go is not meant to innovate programming theory. It’s meant to innovate programming practice." – Samuel Tesla http://go-lang.cat-v.org/ http://go-lang.cat-v.org/ And as usual, http://9front.org/who/uriel/ http://9front.org/who/uriel/
- mkesper 11y agoAnd as usual, http://9front.org/who/uriel/ http://9front.org/who/uriel/ Can you give some background?
- jd3 11y agospiritual leader of cat-v. good taster. http://uriel.cat-v.org/profile http://uriel.cat-v.org/profile http://plan9.bell-labs.com/wiki/plan9//uriel/index.html http://plan9.bell-labs.com/wiki/plan9//uriel/index.html https://en.wikipedia.org/wiki/User:Lost.goblin https://en.wikipedia.org/wiki/User:Lost.goblin https://www.reddit.com/user/uriel https://www.reddit.com/user/uriel https://news.ycombinator.com/item?id=4654125 https://news.ycombinator.com/item?id=4654125 https://www.facebook.com/archangel.uriel https://www.facebook.com/archangel.uriel http://www.mozdev.org/pipermail/eu/2003-July/000001.html http://www.mozdev.org/pipermail/eu/2003-July/000001.html https://www.reddit.com/r/catv https://www.reddit.com/r/catv http://www.advogato.org/person/uriel/ http://www.advogato.org/person/uriel/
- copperx 11y agoI've never known anyone who's favorite movie was Three colors: blue. Maybe I've found my spiritual doppelganger.
- selimthegrim 11y agohttps://cowlark.com/2009-11-15-go/ https://cowlark.com/2009-11-15-go/
- pjc50 11y agoPeople who dislike X are upset because they incorporated their favourite Y into their identity, and the success of X challenges their own choices. True for football teams, political parties, games consoles, superhero franchises, religions, food choices, colour schemes, preferred spelling variants, ...
- jhall1468 11y agoSometimes, sure. But none of those are our jobs (except if you are a football player, politician, etc). Computer programming languages are our jobs. It's okay to have preferences. I (a full time front-end webdev), think Python is probably the best language out there. But it doesn't define me, because that's just silly.
- luchadorvader 11y agoI agree that a language doesn't define you but what I wonder if a person's favorite language has some correlation to certain personality traits. I would be lieing if I didn't say I get more enjoyment from some languages where other people don't. Perl vs Python for example, pythons core values are to try and make it only one way to achieve something, whereas Perl tries to give you multiple ways to achieve something. I would guess that Perl may appeal more to artistic people and Python would appeal to more engineering type of people. This isn't a claim, more just something I think would be interesting to investigate.
- EugeneOZ 11y agoOk, I write every day in Rust and JavaScript (and not just jumping monkey in JS, but a lot of code). They are almost orthogonal languages. Will it fit your theory? :)
- luchadorvader 11y agoAre they both your favorite languages? Also there will always be exceptions.
- gepoch 11y agoVery sorry to make an aesthetic complaint, and Raleway is a fine font for certain applications, but blogs that use low contrast fine raleway for the body text just kinda make me want to read something else.
- gepoch 11y agoVery sorry to make an aesthetic complaint, and Raleway is a fine font for certain applications, but blogs that use low contrast fine raleway for the body text just kinda make me want to read something else.
- JulianMorrison 11y agoWhy would anyone think Go and Rust are bitter rivals? They're great tools for different things, with a broad margin of overlap.
- falcolas 11y agoUltimately, they share a space - compiled, memory safe, and aimed at server-side development. The way they differ is mostly in how they approach memory safety, which gives them different performance characteristics.
- JulianMorrison 11y agoGo is about making every distraction from the thing you want to do go away. There's only one way to do it, built in and good enough. Batteries are included. Compiling is painless. Deploying is painless. Just add algorithm. Rust (which I understand less) seems to be about making a program that does exactly and only what you said, including deterministic memory. The safety is less about a general intent to be safe, and more about guaranteeing invariants that are needed by deterministic memory deallocation. Its natural hunting ground is real time - any program that has to finish things by deadlines.
- heinrich5991 11y agoRust isn't solely aimed at server space: E.g. we have servo, a browser engine.
- copperx 11y ago"aimed at" and "used for" are never disjoint sets.
- dudul 11y agoCouldn't this argument be made about all languages? People into dynamically typed languages would have statically typed languages for the same "don't touch my identity!" reason. I personally don't "hate" go. To be honest, I have barely read 20 lines of go ever. But I do not like the idea of a language specifically designed to limit my possibilities. I want to keep seeing "programming" as an art and a creative activity. Not as a factory-like process where there is only one way to do thing, all developers are inter-changeable, etc. I get why it's interesting for big corpos like Google. I just don't have to like it :)
- blueprint 11y agoNature works in the same way that it limits us to the fact that an effect can only be obtained by its commensurate cause. Anything is possible through that law as long as the appropriate cause can be formed.
- gizmo 11y agoI think there is a better explanation for why people dislike Go. All programming languages currently used for the web have gigantic downsides. They're slow. They have terrible package management. They have poor standard libraries. They have no static typing. They have no visual debuggers. They have no good IDE support. They don't integrate well with frontend code. Some programming languages are more flawed than others, and no programming language fails on every front, but they're all pretty objectively terrible. Then Google announces Go. A cross-platform systems programming languages for high quality web services. That sounds great! I can't wait to see what Google came up with. So when people saw Go disappointment set in. It has some great properties, but the language is not expressive. So Go web frameworks (like Revel) generate Go code at compile time to get the dynamic parts working. Just like we did in the 70s to work around C's shortcomings. Want a container for a specific type? Code generation! It's so clumsy. The lack of exceptions makes writing correct code really tedious. A web service is not a device driver where every edge case has to be carefully considered. Bailing out with an exception is fine. Go disagrees. I think the disappointment in what Go could have been explains the vocal dislike. There are only a few companies in the world that can create a new programming language and ensure it becomes popular. Don't get me wrong. Go isn't a bad language. It's just not the language that will push the web forward, and Google was in a unique position to create a programming language that would.
- fooster 11y ago> A web service is not a device driver where every edge case has to be carefully considered. Bailing out with an exception is fine. Go disagrees. If all you want is a bail out mechanism then panic.
- sievebrain 11y ago"All" languages used for the web have those downsides? This is part of why Go culture scares me a bit. You seem to be overlooking the huge amounts of software written in .NET and on the JVM, none of which suffers from the problems you just outlined: there are great IDEs, decent type systems, good interactive debuggers, strong standard libraries, reasonable package management etc. This mental blind spot towards the tools and practices that a massive part of the software industry has been using for years is really odd.
- zxcvcxz 11y agoI like Go but I hate my self for it.
- yvsong 11y agoHating oneself is the highest form of love. -- Bill Maher on gay Republican politicians.
- kazinator 11y ago> Go is the only recent language that takes the aforementioned 40 years of programming language research and tosses it out the window [ ... ] no pattern matching, there’s no borrowing, there’s no pure functional programming, there’s no immutable variables, there’s no option types, there’s no exceptions, there’s no classes, there’s no generics. Some of this stuff is quite a bit older than 40 years. That only brings us back to 1976. Exceptions are around mid 1960's or so (PL/I, Lisp). Functional programming, Lisp again, 1958. (Java-like) OOP Classes? At least as far back as Simula-67. Simula-67 is where C++ gets "virtual" from.
- tomp 11y agoIt's so easy to dismiss legitimate criticism of any issue as "hate" and "people are emotional" and "their identity is threatened". At the end of the day, there is legitimate criticism of Go, just as there are legitimate advantages of using Go. As an additional fact, Go's core developers (and some users) have repetedly been dismissive of this criticism.
- chillingeffect 11y agoYes, this article tries to make it sound like issues with Go are solely due to identity, but that's not the case. If I like to use soap and analgesics, is that part of my identity or just common sense application of technology?
- lpr22 11y agoThere are studies that suggest using analgesics may negatively affect your judgement, so there's that.
- deleted 11y ago[deleted]
- kidmenot 11y agoI never understood religious wars about programming languages and tools in general, and probably never will. People built something with it that works/makes someone money/enables a given service? Then, as far as I am concerned, that given tool has proven itself good enough. Everything else is a circle jerk carried forward mostly by a bunch of masturbating monkeys who are better at talking instead of doing. This is true for most any discipline, of course. Photography is another prime example. Arguing on forums instead of going out and producing pictures. I'm getting kind of sick.
- jokoon 11y agoThere are many good things in go, but some very weird stuff too. Good things are multiple return values, lack of semicolon, optional braces for if and for, insanely fast compile time. Bad things are forced curly brace style, complicated function declaration syntax, variable declaration which is too different from C in my opinion (type after the variable name). I'd honestly prefer a language which is even closer to C or C++ in its syntax, with native maps, sets, queues, tuples, etc (pythonic stuff) without necessarily having templates or inheritance. I put a lot of value in syntactic sugar over overblown abstract stuff. Using plain struct with data oriented programming will be more than enough in most of the cases. We are still waiting for C++ modules, which obviously might be lagging because C++ has an ISO standard and a lot of existing code which involves backward compatibility, but I think we need a new language that could be faster to compile, just like go is.
- hibikir 11y agoTypes after variable names are here to stay though: they are in no way something new, and make a hundred times more sense when there is type inference: If writing down the type is optional, then it should go last. Given that some level of type inference seems to be the future of strongly typed languages, I expect variable ahead of type to become more and more popular among language designers.
- rdtsc 11y agoIt is a bit more nuanced. Go's dislike is a function of how vigorous the hype for it was vs. how much it actually delivers + a few other things. In general I see it as this function: def dislike(hype, results, community, usage): ... Note the usage, if technology is not used, it won't be disliked. So dislike is a good sign sometimes. Community attitude matters, how are creators and developers treating others, how are well are docs presented, but also how mature and behaved are the advocates of the technology. That is something creators can't necessarily control. Other hyped technology is/was node.js. I've heard people say crazy things about, it is the best technology, everyone should drop everything and join the winning team etc etc, async programming is the future and if you are still using threads you are stuck in the past and so on. So it was hyped quite a bit. And then it would have been ok, if it actually delivered, if packages weren't broken and half-assed, if servers under load actually didn't crash and so on. If people who used it where a bit more mature, if there wasn't drama at every step and so on. So it ended up disliked quite a bit. PostgreSQL is hyped, people are saying this is the end and all database and so on. But it is not disliked, and the reason is it actually delivers results. It handles JSON blobs, it does other things right, it doesn't catch on fire, doesn't throw your data to /dev/null. So it not disliked. As for Go, I haven't used Go, so I don't have much of a comment, but noticed an interesting nuance with how some technologies just happen to be disliked while others, even if hyped are ok.
- Gonzih 11y agoI did not like go until I tried it out on small pet project. Now I know how to enjoy it.
- akhilcacharya 11y agoSame. I hated the idea of it before I started to use it and started to use some of the tooling (like goimports, gocode, etc) with the go-plus package on Atom. I think tooling really makes the difference in this case.
- innocentoldguy 11y agoWhile I agree with the premise of the article, I don't think this is why I don't use Go. I don't hate Go, but I also don't think it brings anything new or elegant to the party. Languages like Rust and Elixir are exciting to me. Go just feels like a rerun of everything I've done before.
- f0code 11y agoI've been using Go for several months and love it. "People shouldn't like things I dislike." --waaaah
- GreaterFool 11y agoI would burn Go with fire and salt the earth because it's the bloody compiler will refuse to compile my valid code if I have unused imports or variables. It makes programming in Go a terrible experience and that's why I won't touch it.
- Jabbles 11y agoYou'll love goimports then. https://godoc.org/golang.org/x/tools/cmd/goimports https://godoc.org/golang.org/x/tools/cmd/goimports Hook it to your editor's save command and never worry about imports again. On the other hand, stop leaving unused variables around...
- artursapek 11y agoI hate debugging someone else's code that has unused variables in it as much as this guy seems to hate the go compiler.
- GreaterFool 11y agoAny normal compiler usually allows overriding these options. I normally write Haskell and it has it all: unused variables, unused imports, name shadowing, non-exhaustive pattern matching, everything. But these things are warnings in my dev build and errors in the release build. That's a sane way to do it.
- Jabbles 11y agoExcept some people wouldn't enable -Werror, and the quality of Go code would suffer on average. Plus, now your compiler has options.
- artursapek 11y agoYeah. I'm a fan of mandates when it comes to things like compiler options. Everyone should just suck it up and work with the same constraints. Warnings are just errors without balls.
- EugeneOZ 11y agoArticle didn't convince me to think following arguments are wrong: * Go is a language stuck in the 70’s. * Go ignores 40 years of programming language research. I tried to use Go and was shocked how they can use it without package manager, without generics, with so brittle concept of channels, with executable comments in code and with so authoritative model of taking decisions about language evolution. So I still think criticism of Go is valid and authors are still deaf to it.
- RodgerTheGreat 11y agoI feel like the designers of Go tried to address criticism of C without considering any language designed after C. As a result there are improvements to some of the most egregious shortcomings of C (undefined behavior, a lack of basic reusable building-block data structures like lists and maps, crude build systems), but the subtler issues with C are still there. You still need to delicately route together error signals from every procedure which could fail. You still have a very limited ability to create new, reusable data structures. Common patterns are copied and pasted around your codebase because you have limited tools for abstraction and reuse. Go proponents claim it's simple. I'm more inclined to call it simplistic.
- ufo 11y agoWhat are executable comments?
- EugeneOZ 11y agohttps://news.ycombinator.com/item?id=9522973 https://news.ycombinator.com/item?id=9522973
- LeoNatan25 11y agoHate is a very strong word. I don't see a point in "hating". Strong dislike, however, I can see, and I think my reasons for not liking Go are "Go ignores 40 years of programming language research", "Go is a language for blue collar (mediocre) developers" and "that other people were falling for it." I guess I have a similar dislike for every technology which is primarily meant to make the life of the developer, rather than push the end product's quality. I guess I have a dislike for this culture, that has been brewing in recent years, in general. But is that my "identity"? I don't know. All I do when I see these types of technologies, is roll my eyes, and move on; it means I have to be more picky in my job picky when looking for jobs. People are taking this way too seriously.
- AnimalMuppet 11y ago> I guess I have a similar dislike for every technology which is primarily meant to make the life of the developer, rather than push the end product's quality. I would suggest that this is short-sighted. After all, the end product is created by the developer. Making the developer's life easier and end product quality are not contradictory goals.
- anonyfox 11y agoGo itself is a cool tool. Crosscompiling stuff, a great standard library, nice toolkits like gorilla and marshalling from/to structs/json/xml comes in handy for small everyday tasks and the primitive imperative style combined with easy-to-use goroutines and quite good performance ... together its a very great tool. But I just can't stand the "the go way!" people who defend every fault the language itself has with this mantra. I use go sparingly for small scripts and little services, but would never ever use it for big projects. Yes, for programming rookies in a team its very easy to get started to make valuable contributions, but I for myself just want a more adult language with rich expressiveness and actual static typing (interface{} vs. generics sigh). I understand Go as a "compiled PHP" with all the pros/cons one would associate, and accept that it aims to be a "C as it should be". I do not hate Go in any way, I use it when appropriate. (PS: I recently realized for myself that Rust will be the ultimate game changer, just give it a few months/years to grow mindshare organically. It's everything but a beginner language, though.)
- brndn 11y agoWhat is an "adult language"?
- agounaris 11y agoI like functional languages but I strongly dislike their communities. Mainly because they treat everything like a nail... Golang on the other hand focuses on solving real problems not inventing things like metaisomorphic multipolymorphism etc...as always technology is fair! Go check out the "real life" projects in go and the adaptation they enjoy.
- innocentoldguy 11y agoThe main problem with Go, and this is a deal breaker for me, is that it forces opening curly braces onto the same line, instead of putting them on a line by themselves. This is clearly wrong, and flies in the face of curly good taste.
- RodgerTheGreat 11y agoIf it's clearly wrong, can you articulate a reason? There is at least one (mild) argument in favor of opening a curly brace on the same line: code takes up less vertical space, allowing a programmer to view more of their program on a given screen at once.
- kazinator 11y agoI use both styles in the same code: if (simple_condition) { } else { } for (long and stuffed; expressions; here) { } if ((complicated || multi_line) && condition) { } void function() { } In an if, all the "else if" and "else" clauses have to follow the same style. If any is braced, they all have to be. By the way, is grandparent kidding about Go enforcing this? The only language I can think of which enforces curly brace placement is Awk. (And only in its pattern-action pairs): BEGIN { function() { if (foo) { } } } /regex/ { # can't move this curly to next line action }
- kazinator 11y agoRATIONALE: why the two styles? Why if (simple_condition) { code; } but: if ((complicated || multi_line) && condition) { code; } ? Simple: it's because in both cases, the "code" follows a previous line from whose first non-whitespace character it indents by the indentation level: if (... [INDENT]code { [INDENT]code This is just wacky: while (blah blah blah) { code } "code" isn't "indenting off of" anything. It is not related to the indentation of "blah" in any way, but appears to be "deindenting" from it! So, rather than dogmatically doing one thing or another, it's better to consider all the alternatives, their relative advantages and disadvantages, and integrate them into an elegant whole.
- Kutta 11y agoPoor post. One of the worst thing you can do in a debate is to psychoanalyze your opponents, ascribe their stances to some sort of personality trait, and ignore the object level. More mundanely, it's just ad hominem, "haters gonna hate". What little object-level substance is to this post is laughable. Basically: since Go doesn't have modern language features but it's evidently popular and works, all the people who like modern features are upset since it turns out the modern features aren't needed, after all. Half irrelevant, half assertion out of blue air.
- lcfcjs 11y agoGo sucks if you've ever actually programmed in it. Try it, just try the hello world example, seriously.
- deleted 11y ago[deleted]
- jfaucett 11y agoThe gap between the premises and conclusion of this argument seems broad to me... Here's the summary: (leaving out some smaller arguments i.e. scala/rust vs Go language philosophy) 1. Go challenges peoples identity. 2. Challenging peoples identity makes them respond emotionaly not logicaly. 3. Other people are being deceived into liking Go. 4. People become more vocal as they attempt to sway the deceived from their erroneous path. 5. (conclusion): Therefore, everyone criticizes Go so much. Notice all the premises could be true, but they would not strongly imply the "so much" part i.e. "a lot". It would just mean some people would respond more vocally/emotionaly, certainly not everyone. Anyway, I think there's still some missing premise(s) which would explain why there is "a lot of" criticism for Go, if that is the case - I have no idea as I'm not involved with Go at all. Anyone care to fill those in for me?
- jb613 11y agoOne premise that I think the author is wrong about is #3 (people being deceived into liking Go). My experience is that a number of folks liking Go is due to past experiences and recognizing Go's completely different approach resolves at least some of those deficiencies or the problems those practices eventually led to. But, I think the main point of the article is that Go's complete 180 on many things challenges the beliefs of some and hence their identity. We see it every time a discussion on Go pops up.
- mwsherman 11y agoAttributing a person’s preferences to identity is just ad hominem. That doesn’t even imply it’s wrong or mean-spirited; it just means that it’s “preferable” to talk about a person’s motives. Very Kahneman.
- jrobn 11y agoOne of Go's selling points is always it's a pragmatic language. But after using it for awhile and implementing a few web apps and APIs in it. I've crossed it off my list for web app or API development. It's great at making standalone CLI tools, however. I've since moved to using Elixir (erlang) for web app stuff (even some scripts) and I am much happier. I'm not in love with Elixirs syntax, but it's nice and includes meta programming. Elixir is a much more pragmatic language in my opinion. Once you use things like pattern matching (what could be more pragmatic) you can't go back. Raw performance is nothing to write home about but in my use cases elixir does a great job of hitting the sweet spot.
- spinlock 11y agoWhat's the performance of Elixir been like for you? We're looking into it because of the actor concuttrncy model which we think will be much more performant than our current ruby or clojure solutions.
- jrobn 11y agoIt's great at IO. Period. Get a request, pipeline it, transform it, call out to a database, get some data back, fire off emails, talk to third party APIs.... All of those can be structured as processes. All of those can be independently fault tolerant. All of those can be inspected while they are running...in production. Seriously, for HA APIs or web apps it feels like a no brainer. I just wouldn't us it for things that are CPU bound, like image processing for example. Try implementing something that is a bottleneck in your system in elixir and then throw some data at it and see how it performs. Elixir + Phoenix is a real treat for web app devs.
- spinlock 11y agoFantastic. Thanks for the response. Our use case is talking to an API, doing a little bit of processing then writing to a database. It's all IO with barely any processing (just a few string substitutions to "normalize" the API responses).
- ngrilly 11y ago
- woodcut 11y agoI've been working in Go now for over a year and its honestly made my day-to-day life as a software engineer enjoyable. What gets me down about working in this industry is toiling away on products only to never see them released or being frustrated by absurd compile times, poorly tested components and abstract cathedral architectures. I worked on large C++ projects for around 7 years and i don't care for another flame war about curly brackets or which reimagining of a string is more ascetic. I also worked in Ocaml and some Erlang and yeah while great in principle they lacked the out-the-box tooling and standardisation of practice that I absolutely love about Go. If someone creates a ML variant with a day-to-day experience as clarified as Go then I will gladly jump on board.
- ZenoArrow 11y ago> "If someone creates a ML variant with a day-to-day experience as clarified as Go then I will gladly jump on board." What about F#? http://fsharp.org http://fsharp.org As a side benefit, it's appears to be the top paying tech worldwide ... http://stackoverflow.com/research/developer-survey-2016#technology-top-paying-tech http://stackoverflow.com/research/developer-survey-2016#tech... ... as well as one of the most highly regarded languages by those who use it ... http://stackoverflow.com/research/developer-survey-2016#technology-most-loved-dreaded-and-wanted http://stackoverflow.com/research/developer-survey-2016#tech... Even if you end up not liking it, I'd say it's worth a try.
- woodcut 11y agoI hadn't really given F# serious consideration, i know it's based off of OCaml but looking at it now i'm not particularly enamoured by the idea of managing threads, or doing async programming. Yes it does have an actor model but it looks limited to just a message box. I think Microsoft Orleans is the most interesting functional language based on .Net http://christophermeiklejohn.com/papers/2015/05/03/orleans.html http://christophermeiklejohn.com/papers/2015/05/03/orleans.h...
- glennsl 11y ago> If someone creates a ML variant with a day-to-day experience as clarified as Go then I will gladly jump on board. I think Kotlin and (eventually) Swift comes very close, but both have compatibility as a high priority, which complicates the languages a bit. But I'm hoping these languages will be able to serve as gateway drugs into the world of ML-style programming, and that we'll soon see a no-compromise ML-style focusing on the full experience.
- Lewisham 11y agoDisclaimer: I work at El Goog. I recently moved teams so that I could use Go exclusively. It's often been said that Go solves the problems Google developers have, and it's 110% true. It's much easier to get things working, and it's much easier to write things like Protocol Buffers. But the key for me is that Go isn't fun in the sense of "wow, I'm so smart that I managed to one line this thing", it's fun in the "wow I read this code and I can understand what's happening and hack on it to do something else." I've worked on teams with monolithic Java code, and it's nigh-on impossible to understand what's happening and where you are in the logic flow. I don't have that problem in Go. I even delve into the standard libraries to see how the original Go devs did something, and I both understand it and think it looks like code I would have written too. I never get that feeling from any other language, where I feel like the standard libs are written by hyper-intelligent aliens. When I exclaimed this internally, I got the sarky comment "It's almost as if the things Go leaves out makes it easier". And that's the core of it. Would I like generics? Sure; I do miss map(). But that's it. Go is opinionated. People that don't like Go don't share the opinion. That's OK. It's taken me a long time to realize there is no One True Language that can do everything (it was soon after steveklabnik said something along the lines of "I don't know why you'd want to write a web app in Rust"). Once you get there, you won't hate Go anymore, nor indeed any other language. Apart from C++. Screw that ;)
- mattress 11y agoTotally agree with your comment about monolithic code. I'm in a similar situation, at work I am primarily in a PHP pile of spaghetti, but in the past 2 months I've been lucky enough to develop micro services in Go. Once I got over the initial learning curve and started to get the nuances I really enjoy working in the language. So much so I've started looking around for a full time Go position.
- joeblau 11y ago> It's often been said that Go solves the problems Google developers have, and > it's 110% true. I'm wondering how much of what you're experiencing is "Good Go" vs "Bad Java"? I feel like you can take any project in any language and screw it up pretty badly. I'm an iOS developer and I've seen developers bring questionable practices that aren't consistent with the Objective-C ecosystem in and cause all sorts of confusion. I'm sure there are a few other languages that would give you the same positive experience if you tried them out.
- fixermark 11y ago"Go actively tries not to. There is no pattern matching, there’s no borrowing, there’s no pure functional programming, there’s no immutable variables, there’s no option types, there’s no exceptions, there’s no classes, there’s no generics…. there’s a lot Go doesn’t have." But one of the things it does have is users. It's almost like language popularity is strangely orthogonal to that laundry-list of ideas that the language theory community have invested a great deal of time in. I'd hypothesize that for someone who is excited about those ideas seeing use (and therefore somewhat justifying the time invested in pursuing and polishing them), a language like Go skyrocketing in popularity relative to its age (http://www.infoworld.com/article/2981872/application-development/java-reigns-go-language-spikes-in-popularity.html http://www.infoworld.com/article/2981872/application-develop...) --- a language that looks at decades of PhD thesis work and says "tl;dr we have work to do over here" --- must be downright infuriating.
- Touche 11y ago> Go is the only recent language that takes the aforementioned 40 years of programming language research and tosses it out the window. > The mere existence of Go says “your views on what makes a good programming language are wrong”. As someone that dislikes Go, that's not it. It's because Go doesn't "own" the fact that it thrown language research out the window. If Go advocates waved their imperative programming flag proudly I would just ignore the language completely.
- spriggan3 11y agoI don't hate Go. I think the language is half what it could have been if designed more carefully. I don't doubt Go designers skills, I just think they just stopped half way for various reasons. Which makes Go a bit frustrating. However, I hate the Go community, which doesn't hesitate to humiliate people trying to use language in unconventional ways (Martini...) and mock people that come with a valid criticism of the language (rigid type system, lack of dynamic linking, package management...). So good language despite its flaws, horrible community. Now is it useful? It'd be like asking if Python is useful despite its flaws, yet Python has a great community unlike Go.
- ngrilly 11y ago> humiliate people trying to use language in unconventional ways (Martini...) The author of Martini, Jeremy Saenz, didn't feel humiliated: https://codegangsta.io/blog/2014/05/19/my-thoughts-on-martini/ https://codegangsta.io/blog/2014/05/19/my-thoughts-on-martin... > lack of dynamic linking You can build and link shared libraries since Go 1.5: https://golang.org/doc/go1.5#link https://golang.org/doc/go1.5#link > package management The Go team is listening to the community about package management and is even willing to make changes: https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJwkfpx90cqG9AFL0JAYo/edit https://docs.google.com/document/d/1Bz5-UB7g2uPBdOx-rw5t9MxJ... I agree that Go is a conservative engineering project, which can explain some answers you read on Go mailing lists, but I think you mischaracterize the community. I would add that I'm tired of people repeating that the Go core team is stubborn and doesn't listen to critics about the lack of generics, even though they have provided substantiated answer on this topic: https://news.ycombinator.com/item?id=9622417 https://news.ycombinator.com/item?id=9622417 I'm wondering who is not listening to who?
- spriggan3 11y ago> You can build and link shared libraries since Go 1.5: That was not my point and you know it. you can't load shared library at runtime with Go. Like you can do in most languages out there. > The author of Martini, Jeremy Saenz, didn't feel humiliated: Yeah, he didn't feel humiliated so much he stopped writing about and programming in Go and interacting with the Go community all together because it's full of bullies. > The Go team is listening to the community about package management and is even willing to make changes: The Go team is listening to nothing. > I would add that I'm tired of people repeating that the Go core team is stubborn and doesn't listen to critics about the lack of generics, even though they have provided substantiated answer on this topic: That doesn't make them more open to changes, anybody can do an AMA for PR. Go community is blind to its own shortcomings and the language issues, you just proved my point yet again.
- k__ 11y agoI never used Go, but the main issues seemed to me that Google promised a C/C++ alternative and failed. Instead they made a Ruby/Node.js alternative. I mean, telling C/C++ devs GC is the hit and parametric polymorphism suck? What did they expect... Don't know if I'm right, but that's the gist I got from all the comments and news about Go.
- alexandrerond 11y agoSeems most people don't understand that Golang is filling a niche that was not covered by anyone: fast, type safe, portable, memory-managed, simple. Every language sucks at something. Switching from Ruby/Python to Golang feels like losing magic powers, yes, but some problems are better tackled without that magic and type safety comes as a plus. Ruby/Python/C/Java/Scala/Erlang/Elixir/JS/Haskell/Lisp/Clojure/Rust all have different niches. We should really get over it.
- xg15 11y agoI haven't used go so far and much of its criticism might be overblown - but to be honest, that article made me immediately dislike the author. The basic argument of the article is that "People who dislike Go are upset because they incorporated their favourite programming language into their identity, and the success of Go challenges their own choices". That can be summed up as "People who dislike Go do so because they have been hurt psychologically". Apart from being disrespectful to the community of other languages, this basically makes it impossible to give a counter-argument: Whatever kind of argument you bring, in the end you would simply add support to the author's theory because, in fact, you have been trying to criticise the language, so you must be hurt. I don't see how that contributes to a fruitful discussion.
- dismal2 11y agowhy everyone loves clickbait
- CyanLite2 11y agoGo is one of the fastest runtimes out there, on nearly every platform, produces one clean static binary, fixes the concurrency/async problem that makes other lanaguages so terrible to code in, and has one huge company backing it. But then they miss the boat on simple stuff like generics. Everyone hates Go because it solves the problems that most other languages suffer from. And if they (Google) make a few improvements it would probably the The Killer Language of Choice out there. But instead they suffer from the elite smugness and won't adapt.
- bitmapbrother 11y agoElite smugness? Hardly. Russ Cox has stated repeatedly that he's not against the implementation of generics in Go. Adding generics to a language is a very complex process and you have to be careful with the method you select because you're stuck with it forever. When they find a proper way to implement generics in Go then they'll do so, but they're not going to be pressured into creating a bad implementation. https://news.ycombinator.com/item?id=9622417 https://news.ycombinator.com/item?id=9622417
- ngrilly 11y agoAnd Erik Meijer wrote "Often I wonder if generics are actually worth their weight." https://twitter.com/headinthebox/status/705963164815327232 https://twitter.com/headinthebox/status/705963164815327232
- lcfcjs 11y agoI worked with C professionally for 2 years. It was horrible (besides performance), especially since I switched from PHP, Java and Javascript. Then I worked professionally in go. I thought it had the performance of C that I loved. But really, it's not as fast as C but it sucks just as bad. Now I'm completely Javascript, and I won't ever switch.
- jganetsk 11y agoI'm one of these ML-derived ideologues this article disparages. I hate Go precisely because of the reasons outlined in this article. In my perspective, OCaml and occupies mainly the same niche that Go does (same balance between high-level and low-level, same skepticism of the object oriented orthodoxy, etc). OCaml is a much better language than Go for so many reasons that I will not go into here. I'm also a Googler. Rather than inventing Go, if Google instead would have made OCaml its "Go", the world would be a better place than it is today. If the same tooling were built around OCaml, with some problems of its implementation fixed (multicore/parallelism, etc), there would be no complaints.
- xigency 11y agoI would say Go is a very unintuitive language. And not in an especially useful way. Honestly, it comes across as a language designed by someone only incidentally aware of programming. This isn't an argument, this is the first impression. At the risk of sounding stupid, and not really having a say in the argument for or against Go, I will say I tried to learn how to program Go on my own by trying to "guess" how to write a program. (A time waster, I had seen code but mainly glossed over it.) The program I tried to write was "Hello, World" and the way I tried to guess was using the Go website's sandbox. The result: https://play.golang.org/p/oc-cxnjJiI https://play.golang.org/p/oc-cxnjJiI (Best case: https://play.golang.org/p/NJpwhLUPA_ https://play.golang.org/p/NJpwhLUPA_) I'm sure the same thing would happen trying to learn C++ from a compiler's cryptic error messages, but C++ is not Go. One thing I dislike about Go is the culture or lack-there-of surrounding it. Especially in the canonical Hello World example, which chooses to use Japanese/Chinese language in an unnecessary way. A little presumptuous. Especially since it's used in a one-off sort of way with no explanation. I also think it's interesting that it's the survivor of the Go and Dart launches, when I never saw the purpose of Go when it was launched, compared to a special set of libraries for C.
- deleted 11y ago[deleted]
- sargas 11y agoIf you replace "Go" with "JavaScript" the whole blog would also apply. Except there are way more JS lovers than Go lovers out there. And these two groups almost seem to never overlap.
- beyondns 11y agoI like Go. I've little project https://github.com/beyondns/gotips https://github.com/beyondns/gotips The essence of Go in some little piece of code: select { case <-time.After(queryTimeLimit): cancel() <-done // wait fmt.Printf("time out") case err :=<- done: if err != nil { panic(err) } } // https://github.com/beyondns/gotips/blob/master/tips32.md#17---use-context-api https://github.com/beyondns/gotips/blob/master/tips32.md#17-...
- nobullet 11y agoI have a strong feeling that there is a marketing campaign going to promote Go. It is promoted so hard that it became annoying. :(