Google has released a brand-new programming language it hopes will solve some of the problems with existing languages such as Java and C++.
As a systems language, Go is intended to be used for developer applications like, for example, web servers. In fact, the golang.org website is being hosted by a Go program. But as Go developer Rob Pike says in recent Google Tech talk, “although Go is designed as a systems language, it has a much broader use than that.” Pike goes on to cite front-ends and other general purpose programming that Go can handle.
One of the most appealing parts of Go is its ability to handle multicore processors and, as Google’s FAQ explains, “provide fundamental support for concurrent execution and communication.”
Existing systems languages like C++ evolved long before today’s modern, and very fast, processors hit the market and make supporting multicore chips more difficult. While Google could have concentrated on writing libraries that can handle those tasks in C++, the developers behind Go say that “too many of the problems — lack of garbage collection, long dependency chains, nested include files, lack of concurrency awareness — are rooted in the design of the C and C++ languages themselves,” and decided it was time for something entirely new.
Like many of Google’s open source projects, Go began life as a 20 percent time project (the time Google gives its engineers to experiment) and evolved into something more serious. Go has been in development for over two years now, but Google is hoping that, by releasing Go under a BSD-style license, a community will develop and build Go into a viable choice for software development.
At the moment, Go is still very young and experimental. Even Google isn’t currently using Go in “large-scale production” applications. While the site that’s hosting the code is running a server built with Go as a proof of concept, the primary purpose of this release is to attract developers and help build a community around Go.
Despite its fledgling status, Go already supports many of the standard tools you’d expect from a systems language and even includes support for other Google tools like Protocol Buffers.
Also, it’s worth noting that Google’s Go is not to be confused with an existing language entitled Go! (note explanation point). Google Blogoscoped reports that Go!’s developer Francis McCabe would like Google to change the name of Go, but thus far Google has not responded to that request.
At the moment Go is only available for Linux and Mac OS. If you’d like to learn more, check out the video of Pike’s tech talk below (it’s long, but offers a pretty thorough overview of Go) or head to the new Go website.