Go, Google's experimental programming language, is coming to the company's App Engine cloud-computing service--and a bit closer to reality in the process.
Google hopes to use Go to tackle modern programming challenges such as getting useful work out of chips with multiple processor cores. Getting new languages to catch on is difficult, though--it took Sun Microsystems years with Java, and its Fortress never really caught on widely.
But incorporating Go into App Engine could help make it more relevant, or at least easier to test out, by reducing the hassles involved in trying it. App Engine is a service for running software on Google's infrastructure--a higher-level foundation than the nuts and bolts Amazon Web Services provides, but a lower level than full-fledged applications such as Google Docs.
The company announced the Go move last week at the Google I/O show and released a new Go software development kit (SDK) to let programmers try it out. So far, though, the SDK is as far as the average person can get, because Google hasn't publicly released the service.
"You don't even need to have Go installed beforehand because the SDK is fully self-contained. Just download the SDK, unzip it, and start coding," said Go team members David Symonds, Nigel Tao, and Andrew Gerrand on the Go blog. "We will soon enable deployment of Go apps into the App Engine hosting infrastructure...Once full deployment is enabled, it'll be easy to push your app to Google's cloud."
App Engine started with the ability to run software written in Python, a popular language within Google. Second came Java, which is widely used to run server software. Go, while not the fixture of mainstream computing the first two languages are, has attracted a very active programming community. The language is an open-source software project.
Go on App Engine can handle the full go language and, when programs run, they can tap into most of the standard suite of libraries of pre-built tools that come with Go. In addition, Go is adapted for several App Engine features designed to let applications run at large scale, such as the Datastore interface for storing information in a database.
However, some elements of Go are missing for now--including one part of the Go sales pitch, the ability to spread jobs more easily across multiple threads that run in parallel.
"Although goroutines and channels are present, when a Go app runs on App Engine only one thread is run in a given instance," the Go team members said. "That is, all goroutines run in a single operating system thread, so there is no CPU parallelism available for a given client request. We expect this restriction will be lifted at some point."
Even in its preliminary form, Go should appeal to some coders, said
"It's...an interesting new option for App Engine because Go apps will be compiled to native code, making Go a good choice for more CPU-intensive tasks," said Google's Scott Knaster in a Google Code blog post. "Plus, the garbage collection and concurrency features of the language, combined with excellent libraries, make it a great fit for Web apps."