|Go Turns Seven With Lots Of Attention|
|Written by Sue Gee|
|Tuesday, 15 November 2016|
Go, the free and open source language created at Google, first appeared on November 10, 2009. So it is now seven years old.
Go was originally an in-house project at Google initiated by Robert Griesemer, Rob Pike and Ken Thompson. When it was first announced an experimental language that:
combines the development speed of working in a dynamic language like Python with the performance and safety of a compiled language like C or C++
it caused a considerable stir and within two months became the TIOBE language of the year.
As you can see from its TIOBE Index it has had a very recent resurgence in popularity and since last November has gone from 48th place to 13th, so that currently it is at its highest position, the low point having been 122 in May 2015.
The previous high for Go was in November 2013 when it reached the age of 4 and had gained a degree of maturity and also an open source cross platform development environment, LiteIDE.
So does Go deserve its current popularity?
Although initially sceptical that we needed another language, I Programmer's Mike James quickly became a convert and the following points are taken from his 3-part series, A Programmer's Guide To Go With LiteIDE:
Go is an easy-to-use but surprisingly powerful language. You could call it a modern version of C. It has a clean and simple structure that is said to be statically typed. but it behaves like a dynamically typed language. It also compiles to native code, but is as easy to work with as an interpreted language.
Go takes a very different approach to objects than the class based object-oriented languages that most programmers are familiar with. You don't define a class and then use it to instantiate an object and there is no type hierarchy. There also is no inheritance, no function overloading and... If this all sound as if Go is going to turn out to be a primitive low level language think again. Its approach is best described as low level yes but it also quite sophisticated.
Go is renowned for its easy-to-use approach to concurrency - it is part of the language ... its goroutines and channels work together to orchestrate concurrency and parallelism.
Since it's 4th birthday Go has continued to make improvements with each subsequent release. Version 1.3, released in June 2014 saw better performance, improved tools, and support for running Go in new environments. Android support was added in December 2014 in Version 1.4. For Go 1.5, the only release in 2015, the compiler and runtime were written entirely in Go and an improved garbage collector was introduced, both contributing to improved speed of compilation, something that was the main rationale for Go in the first place. In a 2010 interview Rob Pike explained:
"The starting point was long compile times—for some of our big software at Google, build times can be unreasonably long, even with our large distributed compilation clusters. The dependency management (or lack thereof) in C and C++ results in far too much code going through the compiler.
You might say that Go was conceived while waiting for a big compilation."
The post Seven years of Go on the Go blog marks its latest anniversary and reports what has happened over the past year:
Today marks seven years since we open-sourced our preliminary sketch of Go. With the help of the open source community, including more than a thousand individual contributors to the Go source repositories, Go has matured into a language used all over the world.
The most significant user-facing changes to Go over the past year are the addition of built-in support for HTTP/2 in Go 1.6 and the integration of the context package into the standard library in Go 1.7. But we’ve been making many less visible improvements. Go 1.7 changed the x86-64 compiler to use a new SSA-based back end, improving the performance of most Go programs by 10–20%. For Go 1.8, planned for release next February, we have changed the compilers for the other architectures to use the new back end too. We’ve also added new ports, to Android on 32-bit x86, Linux on 64-bit MIPS, and Linux on IBM z Systems. And we’ve developed new garbage-collection techniques that reduce typical “stop the world” pauses to under 100 microseconds. (Contrast that with Go 1.5’s big news of 10 milliseconds or less.)
So should you be thinking of using Go for your next project?
If is large scale speed is something that matters to you, very possibly. Projects built on Go include Docker so you'd be in good company.
or email your comment to: firstname.lastname@example.org
|Last Updated ( Tuesday, 15 November 2016 )|