It’s All Go for Google

Tweet

Google Go Gopher mascotIt’s incredible to think how far web development has evolved since the mid-1990s. Attempting server-side application development back in those dark times generally involved nasty CGI, a dash of Perl, Notepad editing, and a lot of luck.

Today, developers are spoiled for choice with PHP, Java, C#, VB, Ruby, Python and a multitude of other platforms and languages. Evidently, Google did not consider that to be enough and have created their own new programming language named ‘Go’.

Go started as one of Google’s 20% projects. Google developers are permitted to spend one day per week on a project of their choice — that idea has led to GMail, AdSense and other successful systems. The Go team’s objective was to build a fast, fun and productive development language. It had to offer the performance and security of compiled programs with the ease and speed of interpreted language development.

Syntactically, the language is reminiscent of Object Orientated C. Here’s the usual “Hello, world” example:


package main
import fmt "fmt" // package implementing formatted I/O.

func main() {
	fmt.Printf("Hello, worldn");
} 

Go offers functions, loops, conditional expressions, pointers (without arithmetic) and all the other structures you would expect. There are a few interesting features:

  • End-of-line semi-colons are optional.
  • JavaScript-like anonymous / lambda functions and closures.
  • Python-like array slices and mapping.
  • Support for parallelism (concurrent execution) using “goroutines”. This alone could be an attractive option; few developers delve into multi-threaded coding and Go appears to make it easy.

Compiling

Google provide two compilers: 6g for 64-bit and 8g for x86 systems. Both are designed to be fast and moderately-large applications will compile in under one second. Even the whole package library containing 120,000 lines of code compiles on a standard laptop in less than 10 seconds. There is also an alternative compiler based on GCC called Gccgo.

Unlike Java and .NET, Go compiles to a native binary rather than managed or intermediate code. That’s an unusual decision and many will argue it’s a backward step. In theory, managed code is safer, more portable, and potentially faster because it can be optimized for the processor it’s running on. In practice, few Java and .NET applications are known for their speed.

Does Go Have a Future?

Google are releasing the Go source code under the BSD license and hope an eager development community will evolve.

The language is experimental and is not recommended for production environments — there is no IDE integration, standard libraries are sparse, and there are few code examples. However, the project appears to be mature and the developers used it to build the web server which runs the project’s official website, golang.org.

With Google’s backing and resources, you can be assured Go has a future. Personally, I think the language has potential but it will be some time before it can lure developers away from their current platform of choice. There’s also one option Google are considering which is a little more dubious … see Why Google Should Not Give Chrome the Go-Ahead.

Will you try Go? Is it the future or another minority development language?

Link: The Go Programming Language.

Free book: Jump Start HTML5 Basics

Grab a free copy of one our latest ebooks! Packed with hints and tips on HTML5's most powerful new features.

  • duniyadnd

    I’ll try it, doesn’t mean I’ll stick to it. Unfortunately time is limited to move onto a new language just for the sake of it. It takes a large following for me to consider learning the language at a decent level.

  • Swivelgames

    I’m with duniyadnd on this. I’m definitely going to consider it and try it out, but there’s little chance I’m going to switch over to it from PHP after I’ve put so many years of experience under my belt.

  • srilatha

    thanks for good article.

  • http://www.lunadesign.org awasson

    Hmmm…. Thanks for the heads up Craig. It does sound interesting. I wonder if I have any more room in my brain for another language. It’s worth a look anyway but as duniyadnd mentioned time is at a premium if you’re busy using the languages you know.

  • rockysynergy

    Craig, thanks for heads up! I’m with Swivelgames. I will try it out if time permit…

  • Wardrop

    I love how Google does this stuff. I’m looking forward to having a play with it.

  • ZenPsycho

    Huh, that’s kind of a funny article to write. GO isn’t designed for web development. why are you comparing it to web development platforms, and reminiscing about how far web development has come? Seems more than a little irrelevant.

  • http://stommepoes.nl Stomme poes

    ZenPsychoNo’s right. This is a new [i]systems language[/i] not a new [i]web language[/i]. It looks a bit like C because it’s meant to replace C. A better C, basically. Why would anyone use C as their web backend? And so, who would use Go as their backend?

    Still, Dennis Ritchie is in on this, so I’m watching it!

  • http://www.optimalworks.net/ Craig Buckler

    @ZenPsycho and Stomme poes
    Any language can be used for server-side development and many people did use C in the early days.

    But I think you should remember who’s implementing Go … Google will hardly see desktop developers as their primary focus! You can be absolute certain Google will pitch Go at the web and offer suitable libraries – http, json and png packages already exist.

    They also have another web-based plan for Go which I have reservations about. A follow-up article is coming soon…

  • http://www.joke4me.com robbin.joe

    GO language looks cool, we need more languages and can choose better one.
    Google is great!

  • Thomas

    While Go looks like a nice language, it’s interesting that there isn’t a huge amount of new stuff in it beyond the syntax and implementation. Very nearly all of its features have been present in other languages (I enjoyed this article comparing it to a very surprising “Brand X” language).

    Yes, it’s nice to see people moving toward safer languages, but Go seems to be “about” implementation, not new features.

  • http://www.isquaretechnologies.com SSJ

    Nice Article. I always loved all Google stuffs and this is really a very good one. Google is really great.

    -Saurabh Shyara
    http://www.isquaretechnologies.com

  • loganathan

    good article, i have already looked the details.

  • http://www.joecianflone.com ChestRockwell

    Has Google commented about the fact that someone else already created a language called Go?

    This looks interesting, but since I’m a web developer, I don’t see a use for this right now. I am interested to hear about their web strategy with it and look forward to Craig’s post on that.

  • http://www.optimalworks.net/ Craig Buckler

    You don’t need to wait long…
    Why Google Should Not Give Chrome the Go-Ahead

  • davep

    oh no another programming language moron recruitment consultants will have to put on their fake job adverts.

    ‘Must have experience in PHP, ASP.Net, Java, Photoshop, Flash, SEO, Go’

  • Anonymous

    Google should have done that long back. In fact, I was expecting a language from Google. So, Let’s ‘GO’.

  • gacba

    Go is interesting, but I don’t think it’s really getting us anywhere in terms of programming languages. My thoughts on it: Google’s Go Isn’t Getting Us Anywhere