by jorgecastillo on 4/8/16, 1:41 PM with 236 comments
by sievebrain on 4/8/16, 2:19 PM
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.
by Lewisham on 4/8/16, 3:23 PM
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 ;)
by gizmo on 4/8/16, 2:34 PM
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.
by pjc50 on 4/8/16, 2:27 PM
True for football teams, political parties, games consoles, superhero franchises, religions, food choices, colour schemes, preferred spelling variants, ...
by Kutta on 4/8/16, 3:09 PM
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.
by tomp on 4/8/16, 2:38 PM
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.
by xg15 on 4/8/16, 3:42 PM
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.
by woodcut on 4/8/16, 3:23 PM
If someone creates a ML variant with a day-to-day experience as clarified as Go then I will gladly jump on board.
by EugeneOZ on 4/8/16, 2:59 PM
* 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.
by jd3 on 4/8/16, 2:22 PM
And as usual, http://9front.org/who/uriel/
by anonyfox on 4/8/16, 3:03 PM
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.)
by kazinator on 4/8/16, 2:36 PM
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.
by rdtsc on 4/8/16, 2:47 PM
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.
by jganetsk on 4/8/16, 4:00 PM
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.
by dudul on 4/8/16, 2:31 PM
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 :)
by alexandrerond on 4/8/16, 3:41 PM
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.
by Touche on 4/8/16, 3:29 PM
> 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.
by spriggan3 on 4/8/16, 3:36 PM
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.
by fixermark on 4/8/16, 3:27 PM
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-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.
by pythonist on 4/8/16, 2:17 PM
by LeoNatan25 on 4/8/16, 3:01 PM
by jfaucett on 4/8/16, 3:15 PM
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?
by jrobn on 4/8/16, 3:21 PM
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.
by tylermac1 on 4/8/16, 2:16 PM
by xlm1717 on 4/8/16, 2:21 PM
Well, at least the author saves me the time reading the rest of the article.
by JulianMorrison on 4/8/16, 2:29 PM
by CyanLite2 on 4/8/16, 3:48 PM
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.
by k__ on 4/8/16, 3:37 PM
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.
by innocentoldguy on 4/8/16, 2:51 PM
by f0code on 4/8/16, 2:53 PM
"People shouldn't like things I dislike." --waaaah
by beyondns on 4/9/16, 1:37 PM
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-...
by agounaris on 4/8/16, 3:04 PM
by xigency on 4/8/16, 5:33 PM
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 (Best case: 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.
by jokoon on 4/8/16, 2:46 PM
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.
by Gonzih on 4/8/16, 2:51 PM
by mwsherman on 4/8/16, 3:16 PM
by sargas on 4/8/16, 7:40 PM
by amelius on 4/8/16, 2:16 PM
Especially in titles, where there is little context.
by nobullet on 4/9/16, 6:04 PM
by innocentoldguy on 4/8/16, 3:08 PM
by dismal2 on 4/8/16, 3:48 PM
by pacala on 4/8/16, 2:22 PM
by zxcvcxz on 4/8/16, 2:34 PM
by gepoch on 4/8/16, 2:29 PM
by GreaterFool on 4/8/16, 2:54 PM