C/C++ : A new language for the new Millennium

Request For Enlightenment 0

Richard Heathfield

Last updated 17:23 GMT 19 February 2005


C/C++ Rationale and Design Philosophy

The C/C++ programming language is designed to be a complete replacement for the C and C++ programming languages. It addresses all of the problems inherent in those languages, whilst introducing a few of its own.

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.
 

Acknowledgements

Thanks are due to: Kelsey Bjarnason, Pieter Droogendijk, cn28h, crasher, dbtid, Quentarez, and veins, for their valiant efforts to protect the world from a language whose time has come. (Real names will be substituted for those IRC nicks on request from those concerned.)