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?)