Why I like lots of languages, and Go is pretty neat too
blog.dhconnelly.com
blog.dhconnelly.com
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 $PATHThe particular problem you have is you need mercurial installed on your system to use "go get" with mercurial repositories.
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!"
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 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.
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.
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.
Someone who absolutely loves parentheses and capital letters would probably favor LISP 1.5 over Clojure.
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.
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.
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/