Go Parallel with Google’s Go

I remember when gopher on the Internet meant something else entirely.

Two days ago, Google announced the development of a new programming language called “Go“.  Outwardly, Go is similar to other programming languages in the C family, but don’t let that fool you.  Go is a brand new language written entirely from scratch and includes sophisticated built-in support for concurrent programming.

With the development of easy parallel programming tools, Google may now be competing with Apple in yet another technology market.  If you recall, Apple introduced Grand Central Dispatch with the release of their Snow Leopard operating system a few months ago.  While GCD is still very new, it generated a lot of excitement for how easy it made developing multi-threaded applications.

Go is also creating a lot of excitement, but it’s still very raw and requires a lot more development to be ready for production programming.  Still, developers should be excited to see two new technologies that will help them do more with concurrent programming.

However, despite Go and GCD’s ease of use, the hard part remains: developing a concurrent application first requires identifying parallel components that can be run independently.  In many ways, once a programmer overcomes that hurdle, regular old Pthreads don’t seem so hard.

VN:F [1.8.1_1037]
rated 4.6 by 9 people
Go Parallel with Google's Go4.659

3 Responses to “Go Parallel with Google’s Go”

  1. Dan G said:

    Roy — The gamers have dealt with multithreading since the latest generation of game consoles (PS3, XBox 360) hit the market. You can access either platform’s game development environment or use the open (C/Linux) environment available on PS3. Contact Fixstars, now maintainer of YDL, in regards to the latter. (Hint: it uses pthreads.)

    As you say, it comes down to programmers’ shaking off the laziness of the single-thread, single-core paradigm (i.e., Moore’s Law will make processors increase in speed forever). If you want to see some highly technical discussions of this, check out http://cellperformance.com, started by game developer Mike Acton (with my support, a long time ago) or any of the other game developers’ sites.

    But also realize that the change to multithreading is more than just language and OS support. Applications today are written on top of layers upon layers of libraries… libraries that were also created under the single-thread paradigm. Like trying to make non-re-entrant code re-entrant, shifting these libraries to enable multithreading securely and reliably may require substantial rewrites… or writing them from scratch. That’s going to take a long time. :-(

  2. Stanton Champion said:

    Dan – glad you enjoyed the post. Thanks for the additional info. I hadn’t even considered the difficulty of porting libraries.

  3. Larry Bernstein said:

    Does anyone know of a book on the design and architecture for parallel programming aimed at multicore systems. Issues like precedence analysis, locking, queuing impacts, data structure and layout design would be covered amongst others.

Leave a Reply