Background

Go with Google

Google Go Logo

Google has released version 1 of its experimental open source Go computer programing language, or Go 1 for short, on March 28, 2012. The initial design of Go was started in September 2007 by Robert Griesemer, Rob Pike, and Ken Thompson. And was officially announced in November 2009

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. Google has also released a new Google App Engine Software Development Kit (SDK) for the Go runtime.

Go 1 includes some changes from previous versions, one of the language's core tenets is source-level compatibility. Go 1 is the first release of Go that is available in supported binary distributions. They are available for Linux, FreeBSD, Windows and Mac OS X.

The driving motivation for Go 1 is stability for its users. People who write Go 1 programs can be confident that those programs will continue to compile and run without change, in many environments, on a time scale of years.

Syntax and Influence

Go's basic syntax comes from the C family, with lots of declarations and packages from the Pascal/Modula/Oberon family, as well as some ideas from languages such as Newsqueak and Limbo, which were inspired by Tony Hoare's CSP (Communicating Sequential Processes, a formal language for describing patterns of interaction in concurrent systems). Unlike C, line-ending semicolons are optional; variable declarations are written differently and are usually optional; type conversions must be made explicit; and new go and select control keywords have been introduced to support concurrent programming. New built-in types include maps, Unicode strings, array slices, and channels for inter-thread communication.

Go is designed for exceptionally fast compiling times, even on modest hardware. The language requires garbage collection. Unlike previous concurrent programming languages such as occam or Limbo, Go does not provide any built-in notion of safe or verifiable concurrency. Go combines the performance and security benefits associated with using a compiled language like C++ with the speed of a dynamic language like Python.

Go 1 defines a language and a set of core libraries to provide a stable foundation for creating reliable products, projects and publications. Further, Go 1 is forward stable, meaning that code compiling in the language should, by and large, continue to compile and run throughout its lifetime even through updates and bug fixes.

The Go tool suite has been restructured around the new "go" command, which is a program for fetching, building, installing and maintaining Go code. Programmers won't need Makefiles to write Go code because the build instructions are derived from the program source itself.

Go 1 introduces changes to the language (such as new types for Unicode characters and errors) and the standard library (such as the new time package and renamings in the strconv package). Also, the package hierarchy has been rearranged to group related items together, such as moving the networking facilities, for instance the rpc package, into subdirectories of net.

Target

With Go 1, Google seems to be moving for more productivity in mobile devices. Further, it looks like Google is looking forward to take Apple head on in the mobile competition. There seem to be some similarities between Go and Apple's Objective C, which developers use to create apps for iOS devices.

The ambitious technology comes with a pedigree featuring programming experts from the Unix world, including Ken Thompson, who teamed with Dennis Ritchie to create Unix. Created as a systems programming language to help speed up development of systems inside Google, Go is now viewed as a general-purpose language for web development, mobile development, addressing parallelism and a lot more.