Language Requirements

This weekend I read a paper entitled “Ada, C, C++, and Java vs. The Steelman”. This paper was written by David Wheeler. The Steelman is the requirements document for the Ada programming language. The paper stated that Ada implemented 93% of the requirements from the Steelman. C++ on the other hand only implemented 68% of the requirements. You would think that Ada would rank higher since it was written to meet the language requirements. I thought I would list and comment on some of the requirements from the Steelman here.

Simplicity: One thing I know about the C++ language is that it is very powerful. However with that power comes a level of complexity. I do not think C++ can be considered simple by anybody. However that is not necessarily a bad thing.

Maintainability: On this topic I am divided. Since C++ is not a simple language, it may not be as easy to maintain in general. However the layout of the structure with the use of classes may make some maintenance tasks easier. C++ may get a grade of C for maintainability.

Efficiency: The C programming language has been know to be low level among the many high level languages. As such it is highly efficient. C++ adds a bit of complexity to C. That may incur some overhead. But I still think as a whole it is an efficient programming language.

Function vs. Procedure: In the C++ programming language, there does not seem to be any explicit difference between a function or procedure. In fact, all the C++ class methods would be considered functions. However I have written in other languages where a function returns a value, and a procedure does some work with potential side effects, but does not return 1 value.

Exceptions: I do know that C++ has exceptions built into the language. However I myself do not personally use them that much. I try to code logic for exceptional situations directly in my code without using the exception functionality.

Assertions: I believe the C++ assertion capability is a carry over from the C programming language. I do like the ability to use assertions. This is a positive programming feature that C++ implements.

There are a whole lot other requirements listed in the Steelman. Some of the more interesting ones are on the topics of tools, constants, indirect types, strong typing, recursion, and short circuit. C++ fares well in each of these. However it is time to wrap up this post. It is interesting that C++ caught on, but Ada did not seem to. That may be ancient history as C++ loses its popularity to a number of new languages available to programmers. I hope C++ remains immortal like C is.