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