Wednesday, November 11, 2009

Could Go Be a New Beginning For Programmers?

Google has announced a new programming language called Go. Normally, I wouldn't look on a new language as a big deal. Really, programming languages are a dime a dozen these days, and me investing the time to really learn the nuances of one pretty much requires monetary compensation at this point. But, in this case there just might be something very, very interesting happening. You see, Go is positioned as a compiled-to-native systems language, and that to me is a huge, huge deal.

Right now, C and its offshoots C++ and Objective C rule the systems landscape. Java, C#, Python, Ruby, Pearl, and many, many other currently popular languages featuring more modern language features than the systems level C family all have one thing in common: they run on virtual machines. And virtual machines have to be loaded before they can run a program. This artificially increases both the start-up time and overhead necessary to run a program. What I'm saying here is that C is very fast at run-time. Sadly, C and friends don't have many of the modern features that make programmers happy, like automated memory management (a.k.a. garbage collection), concurrency support, closures, etc. (If you want to know what any of those things mean, try Wikipedia. If not, just know that programmers like having them.) Go is an attempt to provide the more modern programming features while retaining the pure speed of a fully compiled language.

As much as I love me some C, if Google's new language gains traction and becomes a truly useful system level tool, it could open a new level of productivity for crazy people like myself. And everyone likes it when their computer programs run faster.

No comments: