Last updated 17:23 GMT 19 February 2005
Few will disagree that C's borrowings from C++ are an utter waste of time; single-line comments, declaration just before use, const, void, function prototypes -- all of these have served only to confuse newcomers to C and irritate its old-timers. All have been discarded from C/C++.
Similarly, C++'s borrowings from C have proved disastrous to the neophyte programmer and tiresome for the expert. Precedence, associativity, pointers, types, functions with variable argument lists, stupidly complex loop control structures, and all that nonsense have been thrown out.
What remains is a pure, tight programming language that does for C and C++ what C++ did to C and C did to assembly language. C and C++ programmers will struggle on for a while in the face of the inevitable, but I give you my personal money-back guarantee that, in 100 years from now, every programmer on this planet will be using C/C++ instead.
It should be pointed out that the designers of the two principal languages it replaces have both acknowledged the awesome supremity of C/C++. as have other notable computer scientists:
"C/C++ is quirky, flawed, and a tremendous flop." - Dennis M Ritchie
"All good C and C++ programs are C/C++ programs. So if your code doesn't
compile under C/C++, your programming sucks." - Bjarne Stroustrup
"I'd have spelt it with a final 'e'." - Ken Thompson
"Oh, no, no way! You're not blaming me for this one too" - Brian
Kernighan
"No pointers? Yeah, right - I tried to fake that too" - James Gosling
"Have the book rights gone yet?" - Rob Pike
Those people who will most welcome the language, however, will be the denizens of comp.lang.c, comp.lang.c++, and alt.comp.lang.learn.c-c++, all of whom are sick to the back teeth of answering questions about C/C++ with "there's no such language". Now, there is. So they will at last be able to give intelligent answers to those questions. Furthermore, it is self-evident that C/C++ is topical on all three groups, so don't let them give you any nonsense about that.
So what is this new language that has everyone jumping out of their skins with raw excitement? How does it work?
C/C++ is a structured programming language. Dijkstra would have been proud of it. It has no goto keyword. Furthermore, it also discards break and continue. (In fact, it has to be said that just about every C and C++ keyword has vanished.)
C/C++ is typeless. Or rather, it has just one type -- the object type. In C/C++, an object has four properties; a string property, an integer property, a resource property known as a "handle", and an array property. The array is, of course, an array of objects, each of which has their own string property, integer property, handle property, and array property. The glaring hole here is that C/C++ doesn't yet support real numbers. But it will, it will. Give it time. When it does acquire them, this will be done in a way that won't break your existing programs.
C/C++ has a guaranteed user namespace. All implementation keywords and operators begin with a character that is not a letter of the Latin alphabet (A-Z, a-z). It is an error (which is generally diagnosable) for a C/C++ programmer to attempt to create an object or method that does not start with a letter. So strict separation is achieved. The problem of namespaces for third-party library vendors is also solved in a uniquely simple way.
C/C++ removes arbitrary limits. For example, some languages impose maximum identifier lengths, maximum integer values, and so on. C/C++ cannot give your computer infinite memory, but it will, for example, let you manipulate very large numbers.
C/C++ is backward-compatible. Future modifications to the language will not change the semantics of existing programs. This is made possible by the clear separation between implementation and user, which allows the language to expand as much as is necessary, leaving your existing code base safe and correct.
C/C++ is easy to write. It uses a notation that rejoices in the name of bosops aniawysipaz, which is the word-reversed form of the letter-reversed form of the Polish phrase meaning "notation". This is also sometimes known as RRPN. Using RRPN, it is possible to express complex ideas quickly and simply.
C/C++ is operator-rich. Much of the work involved in manipulating
expressions is removed by the plethora of operators available to the journeyman
C/C++ programmer.