Just when you thought there was no nook or crevice left that wasn’t already occupied by some area of Google’s all reaching tentacles, the search engine giant has found a new territory to expand into, with the launch of its own programming language, Go.
Google Go is an open-source development language, based on the C programming family – one of the most popular programming language trees in the world – and also incorporates elements of Python and the Pascal/Modula/Oberon family.
If you think the Pascal family were some people you saw on Supermarket Sweep recently, maybe this isn’t for you, but if you’re keen to find out more, Google have posted up a tutorial introduction to the basics of the Go programming language and outlined their main motivations for the project in their Go FAQ:
What is the purpose of the project?
No major systems language has emerged in over a decade, but over that time the computing landscape has changed tremendously. There are several trends:
- Computers are enormously quicker but software development is not faster.
- Dependency management is a big part of software development today but the “header files” of languages in the C tradition are antithetical to clean dependency analysis—and fast compilation.
- There is a growing rebellion against cumbersome type systems like those of Java and C++, pushing people towards dynamically typed languages such as Python and JavaScript.
- Some fundamental concepts such as garbage collection and parallel computation are not well supported by popular systems languages.
- The emergence of multicore computers has generated worry and confusion.
We believe it’s worth trying again with a new language, a concurrent, garbage-collected language with fast compilation. Regarding the points above:
- It is possible to compile a large Go program in a few seconds on a single computer.
- Go provides a model for software construction that makes dependency analysis easy and avoids much of the overhead of C-style include files and libraries.
- Go’s type system has no hierarchy, so no time is spent defining the relationships between types. Also, although Go has static types the language attempts to make types feel lighter weight than in typical OO languages.
- Go is fully garbage-collected and provides fundamental support for concurrent execution and communication.
- By its design, Go proposes an approach for the construction of system software on multicore machines.
Here’s a short promotional video:
If that has got you all excited, then hang on to your propeller hats, as we’ve got even more for you in the shape of an hour long video all about Google Go.
We’d love to sit and watch it all with you, but – would you believe it! – we’ve got some pressing business elsewhere…