Tuesday, 1 May 2012

Golang ... it's amazing

Now that Go/Golang has reached it's 1.0 milestone ... I have given it another ... Go.

I love C and I adore the Unix philosophy ... so when you are like me and hear Rob Pike and Ken Thompson are involved in a new language it is quite exciting to say the least. I have a habit of putting a wallpaper on my desktop of the language i'm currently learning. I couldn't find one for Go, so I made one. Here it is to download:

golang wallpaper
My Go wallpaper.

When writing (a lot of ) C, you hit a certain point where you are doing odd things with the language that would look scary to programmers raised on a diet of PHP, Python, Java and friends. You are slinging binary blobs through structs, firing pointers from a six-shooter and getting drunk in the Bison saloon after starting a fight with Flex. Quite often you are locked in the non-local threaded Sheriff's office hoping GDB will post bail. I paint a picture of the old wild-west not because programming is anything like that ... but because that's the atmosphere that C has.

In today's modern world of Java, Python, JavaScript and others C looks  .... old fashioned. C's wizard-like beard soaked in Jack Daniels, its bum leg, its bullet ridden body ... these things don't feel all that compatible with the today's moccafrappochinnolatte coding approach.

I know one thing though, if Java and pals got into a fight with C ... C would pull out its pointy knife and cause them to wet themselves. C is in short, Al Swearengen ... who would want to fight with Al? Not me.

What has any of this got to do with C? Well, unlike other C derivatives that seem to lack charm and charisma ... the Golang team at Google have managed to do something amazing:

They sort-of updated C. I don't say this lightly, because I thought that C was perfect. Go though, is pretty close to being a perfect improvement. Go isn't just another curly-brace language, it feels like C. It has C's character. Go didn't do what would be so easy and pretend to be a Starbucks language ... instead, it is true to its heritage and much better for it.

Something is niggling me though ... I have not been coding Go very long, but it just feels like ... the mustache is missing?

Go seems is something beautiful being born. A new C, what C++ and D never were. A really amazing language that is the result of old wisdom and modern lessons. Yes it is still not 100% right, but it is early days. There are tons of features I would like to see (or do exist with little documentation) and it could be better documented.

I hope it continues going in this direction (see what I did there?)


  1. So this post is pretty old now, and no further posts from you regarding Go - I wonder what your further experience was, and your opinion about the current state of the language?

    1. Thanks for taking the time to comment! I didn't think anyone even read my waffle. I did end up writing quite a lot of Go, so i'll try and follow up this post for you ASAP. I could probably share some code that the community helped me formulate and refine that gave me insight in to being idiomatic. What do you think would make a good follow-up? A broad-brush look like this one or a more technical post? A mix of the two? As the first commenter I have ever had, your feedback would be great! Thanks again.

  2. Yeah, I'm just getting my feet wet - but the community really is incredibly helpful. Other language communities often shun you or ridicule you if you ask hard questions that the language can't answer, but the Go community really seem to have a simple answer to just everything I've been able to throw at them so far. My feeling is that Go catches on with more mature and experience programmers, is that you impression?

    Yeah, I would love to read a follow-up article, and probably more of a broad or high-level view of your practical experience and impressions so far - there are a lot of articles about individual technical aspects, but not that many articles detailing the experiences of someone who has actually built production solutions in Go...

  3. I have just got into Go recently and I LOVE it. It's a very inspiring language!