- exceptions
- virtual base classes
- multiple inheritance
The major purpose of a programming language is to provide a framework for expressing problem
solutions in terms which a computer can process. The better a language is at representing this
discourse, the more successful it will be. The Fortran language, one of the first high-level languages,
provided a powerful means of expressing mathematical formulae (the name "Fortran" means
"Formula translation"). The COBOL language addressed itself to file processing, decimal arithmetic
and output editing. And it is highly successful in that domain. C gave systems programmers access to
many hardware-supported operators. The language didn't "get in the way" with many layers of
abstraction.
A language will be successful if its constructs are useful "building blocks" for solving problems in a
given domain. Deciding on the "building blocks" of the language is the most important part of
language design; the details, like choosing whether a semicolon is a terminator or a separator, cannot
be ignored, but the building blocks are critical. How good a language C++ is will be decided on the
basis of whether its features are good "building blocks" for solving interesting problems and whether
the language can be reliably used by normal programmers.
Some people claim that C++ classes will revolutionize software reuse. Reuse is a nebulous goal in
software. Inheritance is not necessarily the panacea that it seems. Those with long memories are
reminded of inflated claims made for Ada a decade ago. Let's make an analogy by saying that a
computer program is like a book. Then you have libraries of both. And you want to reuse some
routines in one of your programs. This corresponds to some paragraphs in the book.
Software Dogma
Design Challenge: The C++ Machine
In the past, some people have built special-purpose computer hardware that would be very
efficient at executing a particular language:
Algol-60: early Burroughs processors
Lisp: Symbolics Inc.
Ada: Rational Computers
What would a C++ machine look like? Why have all special language processors come to a
sticky end?
This is a trick question—there's no common theme. The market for a single language is
always less than for a general machine. Workstations ate the Lisp machine for lunch. The
end of the Cold War killed the Ada machine. Burroughs ploughs on as part of Unisys.