http://golang.org/

Google hopes to remake programming with Go
 
Google software luminaries such as Unix co-creator Ken Thompson believe that
they can help boost both computing power and programmers' abilities with an
experimental programming language project called Go <http://www.golang.org/>
. 

And on Tuesday, they're taking the veil of secrecy off Go, releasing what
they've built so far and inviting others to join the newly open-source
project. 

The computing industry is in constant tension between making a fresh start
and evolving the current technology. The limits of today's hardware designs
and programming technology led the Go team to take the former approach.

Gordon, the Go gopher mascot, drawn by Rob Pike's wife and illustrator Renee
French.
(Credit: Google) 
"We found some of those problems to be frustrating and decided that the only
way to address them was linguistically," said Rob Pike, a principal software
engineer working on Go. "We're systems software people ourselves. We wanted
a language to make our lives better."

So far, Google's Go project consists of the programming language, compilers
to convert what programmers write into software that computers can run, and
a runtime package that endows Go programs with a number of built-in
features. It's most similar to C and C++, but, Pike said, it employs modern
features and has enough versatility that it could even be used within Web
browsers. 

Go's assets
There's a huge step between creating a new programming language and building
into a major force in the industry. Sun Microsystems, which succeeded with
Java, has had less success with a would-be Fortran successor called Fortress
<http://news.cnet.com/Suns-Fortran-replacement-goes-open-source/2100-7344_3-
6150063.html> . 

But Go has some assets most languages don't.

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 <http://www.bell-labs.com/history/unix/thompsonbio.html> , the
winner of the 1983 Turing Award
<http://awards.acm.org/citation.cfm?id=4588371&srt=alpha&alpha=T&aw=140&ao=A
MTURING>  and 1998 National Medal of Technology
<http://www.uspto.gov/about/nmti/recipients/1998.jsp> , who, along with
Dennis Ritchie <http://www.bell-labs.com/history/unix/ritchiebio.html> , 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 <http://research.google.com/people/r/index.html> , a principal
software engineer who was a member of Bell Labs' Unix team and a later
operating-system project called Plan 9 <http://plan9.bell-labs.com/plan9/> .
He's worked with Thompson for years and with him created the widely used
UTF-8 character-encoding scheme
<http://www.cl.cam.ac.uk/%7Emgk25/ucs/utf-8-history.txt> .

€ Robert Griesemer <http://research.google.com/pubs/author96.html> , who
helped write Java's HotSpot compiler and V8, the Chrome browser's JavaScript
engine; Russ Cox <http://swtch.com/%7Ersc/> , a Plan 9 developer; and Ian
Taylor <http://www.airs.com/blog/> , who has worked on improving the widely
used open-source GCC compiler
<http://google-opensource.blogspot.com/2008/04/gold-google-releases-new-and-
improved.html> . 

The name Go itself stems from the challenging board game, a reference to
Google itself and, of course, the idea of going somewhere, Pike said.

What's Go for?
Google has high hopes for Go.

It's designed to address some issues in getting software to take advantage
of multicore processors that can perform multiple tasks in parallel. It has
an approach to ease some of the pains of object-oriented programming. It has
modern language features such as "garbage collection," which helps
programmers deal with mundane but important memory management issues. And
it's designed to be fast--nearly as fast as programs written in C or
C++--and enable fast creation of programs in the first place.

"It seems it's getting much harder to build software than it used to be,"
even though computers are vastly faster than in the past, Pike said. "The
process of software development doesn't feel any better than it did a
generation ago. We deliberately tried to make a language that focused in
part on rapid development, that compiles really efficiently, and that
expresses dependencies efficiently and precisely so the compilation process
can be controlled well. I find it much more productive to work in."

When it comes to the speed programs at which programs run, "Our target was
to get as close as we could to C or C++," Pike said. They're reasonably
close--programs run about 20 percent to 30 percent slower right now, he
said. 

The Go Web site itself is built with Go, but Google has broader ambitions.
The software is designed to build server software--Google's Gmail is one
example of what it's suited for. Google thinks that it could be good for
other cases, including running software in a Web browser, a task JavaScript
handles today. 

"It's at least an order of magnitude better than JavaScript," Pike said.
Note that Google built its own browser, Chrome, in part to speed JavaScript
and Web performance, and that Google already is incorporating its technology
such as Native Client and Gears.

Another nice Web-related feature in Go: tasks can be shared by servers and
client devices such as PCs or mobile phones that use those services. That
makes a service more easily adapted to different amounts of processing power
for those clients, Pike said.

Making the most of multicore
Go also is designed to tackle one of today's big challenges, multicore
processors <http://news.cnet.com/8301-30685_3-10319839-264.html> . Programs
often work sequentially, moving through a task one step at a time, but
multicore processors are better at handling many tasks in parallel.

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
<http://en.wikipedia.org/wiki/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."

The design also can apply, to some extent, to spreading tasks among multiple
servers connected over a network, he added.

Lending a hand
The Go team is looking for help. One big area is in improving the runtime
library from which Go programs can draw.

Such libraries speed up programming by providing many tools and functions so
programmers don't have to create those ingredients on their own, and Go's
library includes many elements crucial to Go's design. Go's libraries supply
resources for handling concurrency, garbage collection, and other "low-level
gunk you don't want to expose to programmers," Pike said.

The Go team also is looking for compiler help. Thompson has written some
compiler support for 32-bit and 64-bit x86 processors, and for ARM
processors, and Taylor has written a Go front end for the GCC compiler.

ARM processors are dominant in the mobile-phone market that Google is trying
to spur into greater activity with the Android operating system, and Go
software will be able to run on mobile phones, he said. "We're looking at
interesting applications on things like Android phones. We're not sure where
that's going to lead, but it's too intriguing to let it go," Pike said.

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

For all Google's ambitions for Go, the company doesn't expect it to erase
today's technology.

"I don't think we'll replace anything," Pike said. "We're just putting
another player into the arena."


-----------------------------------------------------------
John Scott
Director, Open Source Software & Open Integration
Mercury Federal Systems (Wash DC)
Work 703-413-0781 ex: 5006
cell 240.401.6574
www.mercfed.com < [email protected] >
http://powdermonkey.blogs.com < [email protected] >


This message is intended only for the designated recipient(s) and may
contain confidential or proprietary information of Mercury Federal Systems,
Inc. It is solely intended to facilitate business discussions and does not
constitute an express or implied offer to sell or purchase any products,
services, or support. Any commitments must be made in writing and signed by
duly authorized representatives of each party.

_______________________________________________
opencpi_dev mailing list
[email protected]
http://lists.opencpi.org/listinfo.cgi/opencpi_dev-opencpi.org

Reply via email to