D versus Go: Geek Smack-down!

Er, not so much. It's the rarest of things, a rational, polite discussion of two competing technologies: in this case, Google's Go programming language, and the independently developed D programming language. From the sound of it, Go has simple goals and meets them admirably; while D -- at least the second version of the language, where development is now concentrated -- is more ambitious but not yet fully baked; Go and D are apparently designed as successors to C and C++ respectively.

There are plenty of other contenders out there. There seems to be an idea in the air, that we need a new system programming language. I tend to agree. C++ was meant to be a successor to C, but by forcing all features to be upward-compatible with C, it left behind C's primary virtue of simplicity. Java was intended as a successor to slash replacement for C++, but it left C even farther behind, adopting a virtual machine and sacrificing the ability to run on bare hardware. The dynamic languages -- Perl, PHP, Python, Ruby -- saw fair to unseat Java, at least in some domains, but did so at the expense of pure performance.

Meanwhile, those building the infrastructure -- operating systems, networking stacks, and compilers and interpreters for all the above languages -- continued to use C, whatever its shortcomings, because nothing else quite fit this very large and important problem domain nearly as well. Now people are starting to notice that our critical infrastructure is all in a language designed nearly forty years ago.

It's no sign of disrespect to Dennis Ritchie and his colleagues to think that maybe we've learned a thing or two about programming languages in the last four decades; if nothing else, we know by now what all the pain points are in C. One would hope we could come up with something better by now, as long as we keep our focus on the right problem domain: system programming.

For someone like me, it's fun to watch something like this unfold; it's like the Olympics for computer geeks. Without the vuvuzelas.