

On learning Go [the programming language] - enneff
http://nf.id.au/on-learning-go

======
ghshephard
I wonder if I'm the only Go Player who is annoyed by Google naming their
language after one of the worlds most popular board games.

~~~
xtho
They have had their chance to rename it to issue9
(<http://code.google.com/p/go/issues/detail?id=9>). Unfortunately they didn't.
They probably never googled for "go" when they chose the name.

~~~
killerswan
Better results are had with "golang".

------
hswolff
Do you imagine Go ever being able to create Android applications?

~~~
kjksf
"Ever" is a difficult time frame to bet against.

There are good reasons it won't happen anytime soon.

First, there are 2 kinds of Android programming: * majority of programs are
written to Dalvik VM using either official Java SDK or with clever cross-
compilers (I believe C# can be used with mono-based compiler) * for
performance sensitive programs (i.e. games) code can be compiled to native ARM
assembly. There's official NDK from Google based on gcc. However, those
programs have very limited access to the system, pretty much enough to write
games but you can't access majority of the OS libraries, since those are
written in Java and compiled to Dalivk VM.

Go already has an ARM compiler so it wouldn't be hard to make it generate
native ARM code compatible with Android, like NDK's gcc does.

Go, however, has a feature (concurrency based on goroutines/channels) that is
fundamental to the language and just doesn't mesh well with traditional
runtimes, which are provide good support for threads. Making
goroutines/channels work on Java/.NET runtimes is either impossible or would
have terrible performance.

Again, it's not inconceivable to e.g. modify Dalvik VM to also support
goroutines but that's not easy and no-one is even talking about that being a
possibility. Go is still a very young implementation, it'll take a year or two
before the basics are worked out and then esoteric use cases like supporting
Android will invade implementor's minds.

~~~
daeken
For the record, MonoDroid (Mono for Android) doesn't run on Dalvik, but rather
runs on its own and has a bridge to the Dalvik VM.

------
lawfulfalafel
I have been thinking of learning a new language, would anyone recommend go
over haskell (simply for the sake of learning, real world applicability
aside)?

~~~
supersillyus
Why not learn both? Pick a small but non-trivial application, and write it in
both languages.

I am pretty familiar with and a fan of both languages. I started with Haskell,
and found it to be really exciting. Go is very different, but after I got over
my initial incredulity at it for not being Haskell or at least an ML variant,
I learned to like it quite a bit. I think changed my thinking about
programming at least as much as Haskell, perhaps more.

I wanted to end this post by trying to answer your question, but I don't think
I can. It's like asking, "Should I teach myself the piano or the guitar?". The
real learning comes from what you make, not what you make it with.

