I've been using Go for the AI challenge, and it's been an awesome experience. I feel like I'm programming in Python (well, almost), but then I head to the forums and I see all these Python programmers discussing how to tweak their programs so that they don't time out. Mine runs in a few milliseconds with no particular effort.
Two is very young for a language. Scala is 8 years old and starting to gain a larger following. Having said that, does anyone on HN have a good story about using Go in production? Scala can be snuck in with Java. Go is going to be a little more difficult to get in the back door.
Go is possibly easier to get into production than something based on a hefty VM, because it compiles down into one relatively small executable (except for any dynamically linked libraries being used through cgo). If you've compiled a binary executable for the target platform all you have to do is put the executable on the production machine and run. No additional runtimes, no extra libraries or vm extensions. Everything you need is right there in that executable.
I find this to be a big advantage for using Go over something like Python or Java. You still need any dynamically linked DLLs, but all the Go code itself and the runtime is statically compiled and linked into the executable produced by gc.
All this is completely ignoring the fact that the language itself has a really nice syntax, and some excellent concurrency support. Nothing it does is particularly new, but I think Go is greater than the sum of its parts.
There are a surprising number of organizations using Go in production for such an extremely young and fast evolving language, and they all seem quite happy with it, including Canonical, Heroku, the Open Knowledge Foundation and others
Android and Native Client are two big areas that would help to give Go traction. If Google really cared about Go's adoption they would certainly talk about integration with these.
I have answered your statement about App Engine in another post.
As for Android, it would be a colossal undertaking to implement native support for writing Android apps in Go. How can you say it's "half-hearted" to choose not to do such a massive project? Engineering time is not an infinite resource.
Unfortunately it is Google's policy not to comment on internal infrastructure, otherwise I could comment more on our internal usage of Go. But think logically: why would Google continue to invest the time of some of its best engineers (myself excluded) in something that wasn't of benefit to Google?
I would have to disagree. They seem to be putting a lot of support behind it.
"AppEngine doesn't support Go"
Go itself is still pretty experimental. Changes are still made and with preparation for Go 1 they are making many backwards incompatible changes. They plan to remove the experimental tag on AppEngine the same time Go 1 is released. Until go itself becomes stable, they can hardly call the AppEngine version stable.
"no, without windows Go SDK it is not supported"
Considering that the compiler they use for go (gc) is not supported on windows, that is not much of a surprise.
"Android doesn't support native full featured Go apps, although in theory it seems like a perfect match."
This does not seem like a very good match at all. First, android GUI is programmed in java, it makes very little sense to try and make some sort of bridge between go and the java gui. Also, go at this stage is much better for servers than client facing applications. You know what would be an awesome fit? Go on AppEngine...
"Given that lack of support, I'm not even sure it is as widely used inside Google, or the story about inside usage is just a marketing."
So far you have given evidence that Go is not being supported for people who use Windows and for programming phones. That means Google does not use it in house? The fact that AppEngine supports Go is an indication of the opposite. They probably wanted Go on AppEngine so they could use it themselves.
I know that Go support for appengine is marked as experimental, but being linux/mac only for half a year, without any roadmap for window support is exactly what I call half hearted.
And full windows support for Go wouldn't be that hard. Many open source projects have windows support thanks to mingw/msys. Having Go and Go appengine fully supported on Windows wouldn't take more than 1 full time engineer. If that is too much to ask for Google, than Go is not even half-hearted supported.
For android, I know that it would be a bad choice to bridge it to Java UI framework. I was thinking of having native Go SDK for Android that will have its own UI and other API, which doesn't have to be similar to Java. Gooogle has already separate appengine SDKs for Python, Java and Go. I know that it would be a lot of work to do the same for Android, but that will at least show that Google is really pushing behind Go.
- Go (gc) runs on Windows just fine. Go under Windows is now well-supported. We'll do a better job of communicating this once we (the Go team) are able to provide Google-built Windows binaries (currently they're provided by the community). This will come with Go 1 early next year.
- Go for App Engine is near feature parity with the Java and Python runtimes. It will come out of experimental early next year.
- The Go App Engine SDK will be available for Windows early next year.
I'm a bit insulted that you call our (very strenuous) efforts half-hearted, but I guess you can't please everyone.
It has a small memory footprint which would be great on a mobile device. Also, the entire dev cycle would be much improved. The Java/Dalvik cycle with the emulator is slow.
But I'm not sure a new memcached server in Go is coming, I think he is more interested in his 'copious' spare time to hack on Camlistore: http://camlistore.org which is a really cool but a bit hard to describe project with lots of Go code.
Thanks, Go!