Go language from Google, a Ford T with a Ferrari engine

Google has created the Go language to operate with multi-core processors of today, that is difficult with current languages. As always, this new language was created in response to the dissatisfaction caused by the shortcomings and disadvantages of current languages. In this case, it was intended to replace C++ for low level programming, that neither Java nor C# can do. But that does not mean it is actually used for that. It is amusing that the creators have wanted to keep a syntax that programmers are accustomed to, that of C, but the majority use Go to replace Python!

Go programming language, Ford T with Ferrari engine
Modern features and 40 years old syntax!

To design it, several veteran of programming were hired, and that explains the legacy syntax of the language...

These developers have nothing to do with C++, which was created by Bjarne Stroutstrup on the basis of their language, C, which explains different choices of design, such as composition instead of inheritance.

The goal of Go is to stay as close as possible to the C language while significantly improving productivity and replace it. 
It borrows features from C, Java, Pascal, Python and even incorporates features from Scriptol!
Google says in the presentation:

"We claim that Go is a modern language."

And it's true for its features, not for the syntax which dates exactly from 1969 and the B language!
It is used in production at Google since May 2010, but beside the fact that it replaces C++ very effectively, it also tends to be used in place of Python or Ruby because its compilation speed is suitable for scripting, while it produces fast binary executables. It so can replace all languages ​​for command line programs.

Why use Go? The user experience...

Designed for parallel programs, it can on modern computers provide faster processing. 
Its syntax and the way it treats objects intend it primarily for programs on servers  as a replacement to Perl, Python or PHP. It then allows a fast development for quicker scripts.
Has builtin concurrency and garbage collector. But the choice of a garbage collector and the runtime required are not suitable for the making of an OS, drivers ...

It may be used to make server software and for example to build a CMS and generates HTML pages a field where it is superior to Python or Java. The golang.org site is made with Go.
It seems that the number of applications that developers find are unlimited.

Whatever their previous language (but a priori a scripting language), programmers have a positive experience with Go. It is simpler than C++, more adaptable than Java, has an extensive well designed library and provides the services required to Web applications, such as WebSocket, closures.
And programs are compiled instantly which facilitates the development, as does the clear description of errors it displays too. C programmers know what it is about.

About the question of the speed of execution, opinion diverge. Go is significantly faster than Python, it is a fact, but for large quantity of data, one find that Java is significantly faster, especially because he knows immediately when use multiple cores that Go does not know (yet). Genericity also facilitates programming without slowing performance. (Ref).

A higher level C language

The syntax improves productivity.

CSP (Communicating Sequential Processes) manages communication between program with support for multi-core processors.

Difference with C++

Even if it uses a syntax of the 70s, Go simplifies a lot programming compared to C++.
Many common causes of errors coming from the syntax are removed.
Multi-threaded operation becomes quite easy thanks to a single command.
The garbage collector eases memory management.

In terms of libraries, Go goes directly against C++, not only there is no file header, but you can even include external modules directly from a remote site, because all the information for the integration is stored in the modules.
In general that facilitates the distribution of programs, but it has also disadvantages. For example, the development of Haunts game written in Go was stopped because the OpenGL Module imported directly from GitHub has ceased to be compatible ...

Go vs. Java, C#

Java was designed as a language for the Web and became popular thanks to that. It can run on the server or the client with applets.
Its main advantage is its huge library to build graphical user interfaces.
Go as Java allows you to test a program or script development immediately, but it produces binary code, so is faster and more compact.
This applies with respect to C# too.

Some fun facts about Go

  1. At the public launch of the language, a ticket has been created on the forum of the language on issue 9.
    The author of an totally unknown language claims that the name Go is already that of his own language. The fact is that a book has been written on it, under the title Let's Go!
    But this language is called Go! and not Go, and that the word Go is in the public domain: it is the name of a Chinese board game that has existed for thousands of years!
  2. When reproached the absence of genericity, the author gives this replica:
    When a starlet said "I do not imagine to be anything other than an actress," one replied: "Then you're not much of an actress."
    Rob Pike then resumes:
    When a programmer said "I do not imagine a language without generics", I answer him: "So you're not much of a programmer."
    To this a smart programmer replied:
    When an author language says "I can not imagine a language that needs generic", I answer him: "So you're not much of a language designer."

Sites and tools

Sample code

Hello World! program:

package main
import fmt "fmt"

func main() {
   fmt.Printf("Hello, world\n")

Displaying chars of a string:

package main  
import ("os";"flag";)

func main() {
  var s string = "Demonstration"
  for i := 0; i < s; i++  {

The lack of parentheses after the for is voluntary in the syntax.
For a more extended list of example, see the site Go by example.