Google has introduced their new programming language Go, which is aimed at being fast, productive, secure, concurrent, fun, and most importantly, simple. It’s an open source programming language. Features which are usually associated with more complex languages like C++ and Python.
Google on Tuesday said it was putting into the open source realm an experimental programming language called Go, which attempts to combine the development speed of a dynamic language like Python with the performance and safety of a compiled language like C or C++.
“The Go Team” on the Google open source blog said compiled code runs close to the speed of speed of C.
“Go is a great language for systems programming with support for multi-processing, a fresh and lightweight take on object-oriented design, plus some cool features like true closures and reflection,” the team said.
“Want to write a server with thousands of communicating threads? Want to spend less time reading blogs while waiting for builds? Feel like whipping up a prototype of your latest idea? Go is the way to go,” the blog states.
Here is the Go Web page.
Here is what Google says in its blog:
Here at Google, we believe programming should be fast, productive, and most importantly, fun. That’s why we’re excited to open source an experimental new language called Go. Go 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++. Typical builds feel instantaneous; even large binaries compile in just a few seconds. And the compiled code runs close to the speed of C. Go lets you move fast.
In its Go FAQ, Google explains the main motivations behind 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.
– 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.”
Go’s official mascot is Gordon the Gopher [pictured above]. To find out more details and/or to install Go visit Golang.org or check out the short promotional video below:
Sun Microsystems, which succeeded with Java, has had less success with a would-be Fortran successor called Fortress. But Go has some assets most languages don’t [according to Stephen Shankland, tech writer of CNET].
First, the project is at Google, which has a powerful incentive to make something useful in order to get more out of its hundreds of thousands of servers and its countless in-house programmers. An experiment at Google could have more commercial relevance than many other company’s actual products, and Go is already graduated from a 20 percent time project to one with formal support.
“We don’t intend it to be experimental forever,” Pike said. “We really want to build stuff for real with this.”
Second, there’s the Go team’s pedigree. Among them:
• Thompson, the winner of the 1983 Turing Award and 1998 National Medal of Technology, who, along with Dennis Ritchie, was an original creator of Unix. Thompson also came up with the B programming language that led to the widely used C from Ritchie.
• Pike, a principal software engineer who was a member of Bell Labs’ Unix team and a later operating-system project called Plan 9. He’s worked with Thompson for years and with him created the widely used UTF-8 character-encoding scheme.
Go also is designed to tackle one of today’s big challenges, multicore processors. Go is no magic bullet for the problem, but Pike is optimistic that it will help. “We think we have support sufficient to take a crack at it,” he said.
Specifically, Go uses a technology dating back to the 1960s called CSP, or communicating sequential processes, that handles interactions among a set of cooperating programs, Pike said. The technology made an appearance in programming languages such as Occom and Erlang, but it generally hasn’t been applied in systems programming.
“We don’t believe we’ve solved the multicore-programming problem,” Pike said. “But we think we’ve built an environment in which a certain class of problems can take advantage of the multicore architecture.”
Google has released many products as open-source software over the years, in part to give something back to the pool from which it’s drawn and in part because it stands to gain from the collective-development philosophy. Go fits with those motives.
“We did this to help Google first, but we decided (that) we need to open-source it,” Pike said. “It’s interesting, but it needs help from the community.”
“I don’t think we’ll replace anything,” Pike said. “We’re just putting another player into the arena.”
If you want to learn more, Google (as usual) has released a detailed, hour-long Google Tech Talk on the new language (embedded below). However, if you’re a developer and just want to get started, we suggest checking out the Go Tutorial and writing your first program.