GNU, HAL 9000, C++ 2010, and the Year We Make Contact
For those of you keeping score, the ISO C++0x proposed standard will theoretically be poked, prodded, nipped and tucked for the last time this year and hopefully petrified sometimes in 2010. The previous standards were referred to as ISO C++98 and C++03. Wasn't it some operating system vendor that started the whole bit about affixing the year to the name of the software product?
Tracey and I never really did warm up to that idea. It felt cheap and underhanded for some reason. Nevertheless it did catch on. We know there has to be some way of demarcating the difference between the C++ standards, but adding the year? Ahem... It might cause confusion for future generations when the reasons for adding the year have long been lost. What will they make of ordered sequence C++03, C++10, C++98? Clearly C++10 is an advancement over C++03, but C++98 seems to take a big step backward. Okay, so we're being a little facetious here. But to keep things straight for future generations, we are going with ISO C++2010. Besides its 2010 and 2010 is the year that we make contact as can be attested to by any Hal 9000 aficionado. And the Hal 9000 is virtually the Raison d'etre Tracey and I are stuck trying to solve these AI-complete problems, and for the record of course the Hal 9000 makes use of massive parallelism. So 2010 is a special year for us. In fact we've all but made a blood oath to solve some of our AI-complete problems this year because it is 2010. If the Hal 9000 could make the ultimate sacrifice in 2010, then the least Tracey and I can do is solve a few (or at least one) AI-complete problems.
So it is just fitting that the new ISO C++ standard will take final form in 2010. We don't like to engage in computer language wars. We prefer choosing the right tool for the right job. But when we do have to engage in a little language fisticuffs then C++ is usually our language of choice. First it supports all levels of programming from the lowest machine level access to high level distributed cloud based applications. Second, its multiparadigm. It supports structured, generic parameterized, object-oriented, agent-oriented, as well as spaghetti code design and programming paradigms. Third, there are C++ implementations available for all of the operating system environments that we are concerned with. This availability allows us to approach cross-platform development with a very practical, true and tried manner. One of the additions that makes the 2010 standard special is the introduction of C++ facilities to handle multi-threaded and parallel programming. This means that developers and researchers will be able to do cross-platform, multiparadigm parallel programming. So if another paradigm besides the object-oriented one is called for, the developer or researcher can use C++. We don't want to shoot at the JVM here, but there are times when you need to remove as many layers of software between your code and the hardware as possible in order to achieve the control and performance desired. C++ development allows this. And now that there will be support for parallelism and concurrency in the architecture or model, this makes C++ even more attractive than its ever been. But having the standard is only part of the equation. A standard with no implementations is one of the most egregious forms of shooting blanks. Although at Ctest Labs, we fine tune with Sun's C/C++ compiler, our baseline for C++ compilers is GNU C++. GNU C++ is a world class compiler. It is an open source, open development effort. The GNU C/C++ compiler is available virtually everywhere. Software developers, researchers, and educators worldwide rely on the quality, availability, cross-platform nature, and openness of the GNU compiler and the accompanying GNU development tools. Click here!. As others in the development community, we at Ctest Labs also owe a great debt to the folks at GNU.org and to all of the volunteers world wide that help to produce such high quality software while at the same time making it open and freely available. The folks at GNU.org are bringing the GNU C/C++ compiler to the soon to be 2010 standard little by little. It is a work in progress. The current status of 2010 support in GCC can be found at:
GCC 4.5 is the latest experimental version of the C++0x, C++2010 compiler.
We have found that massive parallelism will be indispensable in our pursuit of solutions to some AI-complete problems. The fact that support for parallel programming will be codified in the C++ standard in 2010 means that we can design at a high level and our implementation will also be at a higher level because C++ is ideal for modeling and model implementation. Now we can add high level cross platform multiparadigm implementations to our efforts thanx to the new C++ standard and soon to follow GNU implementation of said standard. Let's just say for the sake of argument that 2010 is the year we make contact, then the complexity and scope of the HAL 9000 almost of a certainty requires that it would be an open source project. No single vendor could build one. In fact an actual implementation of the HAL 9000 would probably be out of range for a single government and would require an international effort. But as we all know funding for international efforts often face jeopardy or other clear and present dangers. So for my money, I'd like to propose a toast: Here's to GNU HAL 9000, GNU C++2010 compiler and the year we make contact.