Google Go captures developers' imaginations

The programming language aims to combine the speed of Python with the robustness of C++

Less than four months after its unveiling at an early, experimental stage, Google Go looks promising to developers who say it offers significant improvements over other programming languages.

While Go is still a work in progress, some developers are so encouraged by its features and design that they have started using it to build noncritical applications. They have also praised the Google Go team for improving the language quickly and consistently, while communicating regularly with developers who offer feedback about the project.

Much work remains to be done, and developers interviewed all cautioned against using Go to build applications for critical business functions because it changes quickly and often, and certain key areas are far from mature.

Still, expectations and enthusiasm are running high and Google may be on track to fulfilling its main goal: To reduce the complexity of coding without compromising application performance, by offering the development speed of dynamic languages like Python with the robustnes of compiled languages like C++.

"It's certainly promising. I've learned more and more every day to appreciate certain things about the Go language and the style of programming you do with it," said Roger Voss, software development manager at Seattle-based Tideworks Technology, a subsidiary of marine terminal operator Carrix.

Developers seem enthused about Go's concurrent programming model, which lets it handle multiprocessor work particularly well. This is the feature that most appeals to Voss, who has built distributed enterprise software systems for Tideworks for the past decade.

Go is designed with internal messaging capabilities, intended to simplify the creation of applications running on different nodes, and improve their performance.

"It's a way to try to address how to write concurrent software that's more robust, as opposed to using the old threading model of Java and others," Voss said.

He recently used Go to write an e-mail list server application for his development teams. "I've been able to develop my particular software project without much difficulty," he said.

The concurrency model is also what attracted retired programmer John Gordon, who started a help Web site about Go.

Gordon, who focused on developing enterprise applications during his 40-year career, said the concurrency capabilities help to set Go apart. "The idea is to allow easy multithreaded, multiprocessor programming. All the other popular languages make this very hard at best," said Gordon, who is based in Thailand, via e-mail.

In this regard, Go offers "a new programming paradigm" that makes it easier to solve a wide variety of programming problems by simplifying many types of parallel processing.

"Many applications do not take advantage of the multiple core [systems] because writing dependable, multi-threaded programs is very difficult," he said. "Go attempts to solve this by making a language that does much of the work of creating, coordinating and communicating between threads and processes for you."

Peter Bourgon, an independent software developer in Johannesburg, wrote "trivial" programs in Go after it was announced, but started on a large-scale application in January. "Go seems to be relatively stable and free of unexpected bugs and errors. I'm confident enough in the language that the application I'm working on -- which is, admittedly, mostly a toy -- is 100 percent Go, from the core processing all the way up to the Web server and templating engine serving the interface," said Bourgon, who specializes in multi-threaded server applications.

Developers also give the Google Go team kudos for their efforts at improving the language and at steering the project. "Turnaround on issues seems to be on the order of days, or at the worst a week, which is amazing, and it's great that the designers are extremely active on the mailing list," Bourgon said via e-mail.

"They're fairly regular about pumping out new releases," said Voss.

Google has managed to incorporate input from developers without letting the open-source project spin out of control, some developers said.

"Open source does not mean anarchy. Somebody has to have a vision and the perseverance to see that through. The open source community can then create their own versions if they wish, but it is best if there is a main line, stable version with a consistent architecture with a guiding force behind it," Gordon said.

"I really appreciate that Go's authors are being very strict about formatting rules, and appear to be willing to push back against feature creep in order to keep the compiler/toolchain simple," Bourgon said. "It's an attitude I would have if I were doing their job, and I think at the end of the day it makes the language a lot stronger."

Google started planning Go in September 2007 and created a full-time team for it over a year ago. It was conceived as a language for systems programming, such as Web servers, storage systems and databases.

At this point, Go isn't mature enough for critical applications, but it is stable enough for "simple Web servers, text processing and other such things," Rob Pike, a Google software engineer who is one of the leaders of the Go project, said via email.

Google has been happily surprised at the level of involvement from outside developers. "The level of interest from the community has been higher than we expected and is very encouraging," Pike said.

Keep up with the latest tech news, reviews and previews by subscribing to the Good Gear Guide newsletter.

Juan Carlos Perez

IDG News Service
Topics: software development, Google, programming language, Google Go

Comments

Urmom

1

Thanks for reprinting this important press release.

norm goundry

2

Thanks for the article. I have found Go to be very intriguing and hope to use it in my next major project if it can handle the particular load. I am most interested in seeing if it can run Real Time I/O for a big industrial manufacturing job that right now runs on very old equipment and language. Perhaps not, but who knows?

John Gordon

3

I am one of the sources quoted in the article (accurately). If anyone would like to see the full text of my interview, it is posted at http://gohelp.wordpress.com/in-the-news/.

In response to the above post, my initial interest in the language was to use for process monitoring and control. After experimenting for 3 months now, I think it has great potential, but it not ready now. For real time use, the garbage collection will need to be very well thought out, the Go routine scheduler will need to be understood, it will need additional libraries, and of course it will need to run on a stripped down real time Linux. Also, real time, in this context, does not mean interrupt driven. It is really a very fast pseudo realtime.

Kubusja

4

Could someone explain how Go is simpler from very convenient e.g. Python multiprocessing module?

Erik E

5

To Kubusja: I don't know the python multiprocessing module, but in general I don't think you could say that Go is more convenient than python. What makes Go interesting is that despite being a statically typed language, which is quite low level (just like C) it is still almost as nice and convenient to develop in as Python.

Before I used to develop all my little text processing tools in python or ruby. Now I use Go. The amount of code I write is almost as little as python but I uncover bugs quicker because of the static type checking.

I assume multiprocessing in Go is similar. You can get away with quicker uncovering of bugs and problems without any reduction in development speed.

Comments are now closed.

Latest News Articles

Most Popular Articles

Follow Us

GGG Evaluation Team

Kathy Cassidy

STYLISTIC Q702

First impression on unpacking the Q702 test unit was the solid feel and clean, minimalist styling.

Anthony Grifoni

STYLISTIC Q572

For work use, Microsoft Word and Excel programs pre-installed on the device are adequate for preparing short documents.

Steph Mundell

LIFEBOOK UH574

The Fujitsu LifeBook UH574 allowed for great mobility without being obnoxiously heavy or clunky. Its twelve hours of battery life did not disappoint.

Andrew Mitsi

STYLISTIC Q702

The screen was particularly good. It is bright and visible from most angles, however heat is an issue, particularly around the Windows button on the front, and on the back where the battery housing is located.

Simon Harriott

STYLISTIC Q702

My first impression after unboxing the Q702 is that it is a nice looking unit. Styling is somewhat minimalist but very effective. The tablet part, once detached, has a nice weight, and no buttons or switches are located in awkward or intrusive positions.

Resources

Best Deals on GoodGearGuide

Compare & Save

Deals powered by WhistleOut
WhistleOut

Latest Jobs

Don’t have an account? Sign up here

Don't have an account? Sign up now

Forgot password?