I was reading draft of new C++ standard a.k.a C++11 (you too must check out N3337.pdf) and somehow I came across Go Programming Lanaguage and on that same page I found this quote of Bruce Eckel:

The complexity of C++ (even more complexity has been added in the new C++), and the resulting impact on productivity, is no longer justified. All the hoops that the C++ programmer had to jump through in order to use a C-compatible language make no sense anymore — they’re just a waste of time and effort. Now, Go makes much more sense for the class of problems that C++ was originally intended to solve.

Now thats a pretty solid and strong statement, I got shakes reading that and it reminded me of The Case for D by Andrei Alexandrescu. Go is designed by a team consiting of our good old friends Rob Pike and Ken Thompson. It has some very good positive reviews. I still have to read the criticizm of it. As per computer language shootout results, C (using GNU’s gcc) is far faster but the code-size of Go was much less (almost 1/3rd). Next on comparison was C++ (GNU’s g++) and results were almost same. Next on my list were Lisp and ATS. checkout the results yourself down here in graphs.

I discussed this performance issue on Go language IRC channel (#go-nuts, freenode) and they gave me very logical and accurate explanation that Go is not mature yet and performance comparison is with very mature C and C++ libraries which are around for a decade or more. So I cna conclude comparison is not exactly a fair comparison. I think Go will catch up with performance issues very fast as user base is growing at electric pace. Reminds me of the times and discussion when Python’s user base was growing and they were trying to resolve all the issues they could with full hard work.

Whenever a new language comes or whenever you want to learn an already established language, I think you must look into why that language was created in first place. Does that match your why of learning ? you must be using that language for some purpose, does the design goal suit your purpose ? In my case I think Go language suits, here is the excerpt from Does the world need another programming language ?

A couple of years ago, several of us at Google became a little frustrated with the software development process, and particularly using C++ to write large server software. We found that the binaries tended to be much too big. They took too long to compile. And the language itself, which is pretty much the main system software language in the world right now, is a very old language. A lot of the ideas and changes in hardware that have come about in the last couple of decades haven’t had a chance to influence C++. So we sat down with a clean sheet of paper and tried to design a language that would solve the problems that we have: we need to build software quickly, have it run well on modern multi-core hardware and in a network environment, and be a pleasure to use.

Go has the feel of a dynamic language like Python or Ruby or JavaScript, but it has the performance and safety of a language like Java or C or C++. So you get the lightweight feel of a modern scripting dynamic language but the robustness and performance of a more old-fashioned language.

Based solely on the above criteria I think I can start using Go right away and if I don’t have enough mature libraries or some specific functionality, then ATS is always there. When companies become big they become rigid, like a stubborn spoilt son of a businessman. They refuse to change to get edge over other software corporations because the change requires a lot of effort. I think the weight of word “Google” behind Go programming language will give it an edge over that rigidity. (same thinkg with Java and .NET).