Heads up - where is the best place to send feedback for little gotchas like this:
mbar:src shephard$ sudo go get code.google.com/p/go-tour/gotour
Password:
# cd .; hg clone -U https://code.google.com/p/go-tour
/usr/local/go/src/pkg/code.google.com/p/go-tour
package code.google.com/p/go-tour/gotour: exec: "hg":
executable file not found in $PATH
Welcome to today's installment of "Go Post!" This time, we will be visiting the rebuttal to both "Go is amazing!" and "Why I will never use Go." What insights will our daring author bring? Find out now!
It's fine we have articles, but I do think there's a tendency (here, as elsewhere) towards the less-subtle ones that take strong, easy to understand positions, of the "Go is great!" or "Go is crap!" variety.
I think I first noticed that tendency in general, though there are doubtless lots of earlier examples, when Clay Shirky's Cognitive Surplus and Nicholas Carr's The Shallows were simultaneous best-sellers. On the question of how modern technology/networking impacts cognition, it seems the two positions that sell a lot are: "it's awesome for cognition!" and "it's horrible for cognition!"
I apologize if you feel my post was "Go is great!" I wrote seven double-spaced pages, and six of them were about the strengths of non-Go languages. I expected my TL;DR that I added at the top of the post would have made that point.
I think the "Go is great!" post was two days ago. It was a bit fluffy, but written by an enthusiastic 14 year old learning a new technology, and came from a well-meaning place. All good things.
So naturally there was an enormous overreaction and an article entirely devoted to telling everyone that someone didn't want to learn something shot to the top of HN yesterday. Because people who did want to learn it had to be told that other people weren't just going to stand around and let them engage in learning without telling everyone that they wouldn't be learning that if they were you.
And so, finally, today, we get the counter-counter-reaction, in which your perfectly reasonable "Go is fine and other things are fine too" post gets voted to the top as HN once again reaches an equilibrium with the idea that different people can like different things.
I'm the author of the 'Why I don't want to use Go' post you're talking about.
I think you definitely should learn Go! I spent a few days using it when it first came out, and there are a lot of neat ideas that are worth learning about. I just can't think of a problem that would make me want to use it in production.
FWIW, the HN title was (incorrectly) 'Why I don't want to Learn Go'. I used that title for an unpublished first draft, but s/learn/use/ before making it public. Posterous seems to still be using the old (unpublished) title as the URL (http://arantaday.com/why-i-dont-want-to-learn-go), which is probably where the submitter got the wrong idea from.
I'm completely sympathetic to anyone that feels a particular tool for which there are many alternatives isn't their cup of tea. It's fine not to want to use things.
I'm way less sympathetic to a reluctance to even bother learning about something, but a mis-titled HN submission is hardly your fault.
Oh, no, this post wasn't one of them; sorry for the confusion. The "Go is great!" versus "Go is bad!" dueling posts were a day or two ago. They weren't even 100% bad either, it's just that I'm noticing that pattern of clean, uncomplicated, opposite positions pop up a lot, and I find it enticing sometimes myself. But "Why I like lots of languages, and Go is pretty neat too" is a pretty moderate position. :)
I apologize if you feel my post was "Go is great!"
You shouldn't apologize for the feelings of others. DHowett started us in the wrong direction here with his snark (nothing else, just snark), and now none of the responses in the subthread demonstrate reading comprehension.
Oh, well. It was an interesting perspective. I'd be interested in hearing from you again, after a few months of using Go as the primary language for your exploratory programming. I've been keeping a running list of things that trip me up as I plod along. So far it's mostly that initially I didn't fully grok how interfaces and types and functions work together, so I ended up working around the type system instead of enjoying it. That's slowly changing. It would be fun to compare notes.
Of course this article is a reaction to all the polarized good vs bad discussion that is going on.
Perhaps people should just think of Go as one of those languages to learn in order to broaden their programming experience, not whether it's going to be the new rockstar programming trend. It's almost as if the HN community is trying to vote for the web stack that is sanctioned after rails then node.js!
Go's differences to other languages are enough for it to qualify as a language to learn as one of the many languages to try out.
Do languages eventually get better over time? If that's true, I would be expecting some fossil languages to become less attractive over time as living languages like python and ruby become "better" for your given needs.
Current Lisps are so dissimilar to the first Lisps that they're hardly the same language anymore. Really, the Lisps form a family of languages. If you can argue that Clojure is just a "better" Lisp, you could just as easily argue that Go (or C#, or Java, or whathaveyou) is just a "better" Algol.
Well, now you have to define better. What makes one programming language better than another? For some people, a better is a more elegant mathematical model. For others, better is popularity. Still others favor raw performance, portability, or ease of learning.
Someone who absolutely loves parentheses and capital letters would probably favor LISP 1.5 over Clojure.
I don't think there's any general law for whether they do or don't.
On one hand, I can definitely look at C# right now and see how it is a vast improvement upon C# 1.0. I'll even go as far as to say I would probably refuse to write code in C# if it had not become what it is today.
On the other, I think you can only really change a language up to a certain degree before creating an inconsistent mess. If trends in the future dictate the need for a shift in paradigms, the extent to which existing languages can accommodate this shift is probably limited. I mean, you can often incorporate features that are based on the new approach to thinking about a problem, but once you start changing the core semantics of the language you're probably going to be better off with something completely new.
Well the thing with languages are that they are always better, under some circumstances, than some other language (maelstrom and brainfuck excepted, they are no good under any circumstances) which are in turn better than others, under other circumstances. Nobody would choose ruby to write a kernel or do embedded programming. You can find better languages than C to write a web service in.
While languages don't get better over time they do change which means that there are more of them, which means it is more likely that you will find some that suit you.
Java, SOAP, and XML are still cool and new? OK, as much as I like to rail against the whole hipster crowd that has taken over programming ... That is a bridge too far even for me. Sorry.
I think the language features are neat but who wants to be beholden to google and no one else. We're not even sure how much they use Go, just leave it to them I say.
Go is an entirely open source project with more than 200 contributors from outside Google. If you use Go you are not beholden to anyone. Go is free.
As for Go's use at Google, Go already powers some of our core infrastructure. For example, the YouTube team recently published one of their core services as an open source project: http://code.google.com/p/vitess/
In addition to being free as enneff points out, the implementation is small enough that a group of outsiders can reasonably pick up the language and carry it forward without the benefit of Google's institutional knowledge.