Go Programming Language Turns 3
Written by Sue Gee   
Wednesday, 14 November 2012

The Go open source project that originated at Google has reached its third anniversary, which is a good point at which to ask: Where did Go come from? Where is it now? Where is it going?

Go's third birthday on 10 November 2012 was marked with a post on the Go Programming Language Blog that reflected on how far it has come since it was announced in November 2009 as as 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++.

Go was originally an in-house project at Google initiated by Rob Pike, Robert Griesemer and Ken Thompson, co-creator with Dennis Ritchie of both Unix and the C programming language.

Go takes its basic syntax from C - blocks of code are surrounded with curly braces and its  flow of control structures include for, switch, and if. According to its FAQs it also has significant input from the Pascal/Modula/Oberon family by way of declarations and packages.

The FAQ's also explain the rationale for creating a new language:

Go was born out of frustration with existing languages and environments for systems programming. Programming had become too difficult and the choice of languages was partly to blame. One had to choose either efficient compilation, efficient execution, or ease of programming; all three were not available in the same mainstream language. Programmers who could were choosing ease over safety and efficiency by moving to dynamically typed languages such as Python and JavaScript rather than C++ or, to a lesser extent, Java.

Go is an attempt to combine the ease of programming of an interpreted, dynamically typed language with the efficiency and safety of a statically typed, compiled language. It also aims to be modern, with support for networked and multicore computing. Finally, it is intended to be fast: it should take at most a few seconds to build a large executable on a single computer.

goruns

According to Rob Pike it was the need for more speed that was the initial motivation for Go:

"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."

A distinguishing feature of Go is its support for concurrency. In a talk at Google I/O 2012, on Go Concurrency Patterns, Rob Pike started by explaining the background to this feature. 

 

 

The seminal work on concurrency according to Pike is Tony Hoare's 1978  paper "Communicating Sequential Processes". From this stemmed languages such as Occam and Erlang. plus two languages that Pike himself was involved in, Newsqueak and Limbo.

In March 2012 Go reached a major milestone with the release of the first stable version, Go 1. This was also the first release available in supported binary distributions and the first that was available for Windows as well as Linux, FreeBSD and Mac OS X.

An interactive Tour of Go is now available so that new or potential users can experience what it is like. with programs that are intended as starting points for further experimentation.

Go continues to be used by Google and the third birthday blog post mentioned some of the ways in which it is used. Notable examples are:

  • serving Chrome and other downloads
  • scaling MySQL database at YouTube

Also the recently launched Jam with Chrome site is served by Go.  programs.

Other companies and projects that are using Go include BBC Worldwide, Canonical, CloudFlare, Heroku, Iron.io, Novartis, SoundCloud, SmugMug, StatHat, Tinkercad. Four of these companies share their experience of using Go in production environments in this video from Google I/O 2012:



So what does the coming year have in store for Go?

Version 1.1 is expected during 2013 with "some new functionality" but otherwise just better performance.

So far the I Programmer team has been skeptical about the need for new languages, and Google has also introduced Dart, its alternative to JavaScript. However, we do go along with idea that programming languages should be fun and effective and the Go team are very good ambassadors for suggesting that Go has these qualities.

If you want to know more see this video in which Russ Cox gives us a tour, with code, of three aspects of Go that make it fast, fun and productive - Interface, Reflection andConcurrency:

 

 

 

 goiconhalf

 

More Information

Go Programming Language

Go Programming Language Blog

Tour of Go

Related Articles

Why invent a new language? Go creator explains

Ready to Go - Go Reaches Version 1

Go in Google App Engine

Google App Engine Go-es Forward

Go with Google - Yet Another Language!

 

blog comments powered by Disqus

 

To be informed about new articles on I Programmer, install the I Programmer Toolbar, subscribe to the RSS feed, follow us on, Twitter, Facebook, Google+ or Linkedin,  or sign up for our weekly newsletter.

 

Banner


SharePoint Conference Deadline
21/08/2014

If you want to attend the SharePoint Connect conference this November in Amsterdam, there are just ten days left to qualify for the Early Bird discount.



Google's Blink Not Implementing W3C Pointer Events
18/08/2014

Since it split away from the WebKit render engine to create Blink, Google has been free to pick and choose what gets implemented. Now we have the news that it has decided to ignore the W3C spec for to [ ... ]


More News

Last Updated ( Wednesday, 14 November 2012 )
 
 

   
RSS feed of news items only
I Programmer News
Copyright © 2014 i-programmer.info. All Rights Reserved.
Joomla! is Free Software released under the GNU/GPL License.