Google's Go programming language - four months on
Go, Google's programming language, has now been with us for four months. Ridiculed at first, then named Programming Language of the Year 2009 by TIOBE for its rapid climb up its language index, Go has continued on its way with rather less fanfare. But that is definitely not symptomatic of a lack of progress – on the contrary, the current state of activity shows that Go is edging ever closer to maturity.
The development team behind the language has established a one to two week release cycle. They have now released a total of eleven updates and changes have been made to the language, compilers, packages, tools and documentation. Having started out with Robert Griesemer, Ken Thompson and Rob Pike, there are now more than 50 people contributing to the Go project, around half of them Google employees and the other half independent contributors. Go is similar to C and Pascal. It includes class-like 'packages' with private variables and methods, but no inheritance and consequently no type hierarchy. Go also offers interfaces, a concept widely-used in object-oriented languages, meaning that it is possible to write the type of polymorphic functions needed to, for example, sort arbitrary data.
The language itself has become increasingly stable and consistent. Semicolons have been almost completely removed. Dealing with a variable number of arguments has been made easier, as has the use of slices. Complex numbers have also found their way into Go. The code generated by the compilers is in some cases now twice as fast as it was in November. As well as Linux and Mac OS X, it now also supports FreeBSD and work is ongoing on a port to Windows. It is also worth noting that the compiler for ARM processors has been tested with Android, Google's own operating system for mobile platforms. In future, Go could play the same kind of role for Android as Objective-C has for iPhone development.
The size of the supplied packages has grown by more than 40,000 lines of code. Many of the packages are directly or indirectly concerned with the web. As well as protocols such as HTTP and Web Sockets, Go also supports other web technologies. The way it handles UTF-8 and UTF-16 has been beefed up and it now supports encoding and cryptography and offers ease of use for JSON (JavaScript Object Notation) and XML. For cluster development, it is now possible to establish channels for communicating between Go routines over a network. Last but not least, development work has started on Google's protocol buffers for Go.
As well as compilers and linkers, Go is supplied with a range of additional tools. Although there are still some shortcomings in terms of debuggers, the programming team has done some major development in some important areas and added new tools. Gofmt
now formats non-Go source code in the standard Go format. It can also be used to automatically modify source code following changes to code standards – this is achieved by passing rules with simple patterns to the tool.
Godoc
, a documentation tool, has been made more flexible and, where deployed as a server, allows search queries via RPC (remote procedure call). There is also a new tool, goinstall
, for installing packages in the user's environment. Available libraries can be found on a dedicated web page.
The changes described, the setting up of a wiki and now a blog, the increasing number of projects and the Go-related traffic on the mailing list and Twitter show that the language has become much more than just a research project. (Frank Müller)
See also:
- GCC to support Google's Go, a report from The H.
- TIOBE language index: Google's Go is the biggest climber, a report from The H.
- Google's Go - A new open source language, a report from The H.
(Frank Müller / crve)