[Edu-sig] Stroustrup

Steve Morris smorris@nexen.com
Tue, 29 Feb 2000 10:35:43 -0500 (EST)


Tim Peters writes:
 > [Jason L. Asbahr]
 > > Most readers have probably seen this already, but there is a
 > > fascinating interview with Stroustrup on Slashdot, in which
 > > Bjarne asserts that, yes, indeed, C++ *is* a great first language.
 > > :-)

Stroustrup is an interesting character but I would hate to have to
learn from him. To me the most interesting thing about his example is
that it depends on the operator overloading of "<<" and ">>" for
I/O. I find this interesting because this is a C++ convention, not a
basic C++ construct.

I think his example says a lot about the value of C++, i.e. C++ is a
complex and subtle language that allows one to build easy to use
tools. Once someone builds and makes available a string object that
uses the standard "convention" of ">>" and "<<" for I/O, only THEN it
is relatively easy to use.

In otherwords in C++ objects are frequently difficult to create, but
if done right they can be easy to use. This means that C++ basically
exists at two levels, the tool creation level and the tool use level.
The goal of C++ architecture and enhancements has always been to add
to the power of tool creation at the cost of elegence and simplicity
in the basic language. This makes it a good language for large
projects which can afford specialization. There can be special teams
of highly trained programmers which create wonderful objects for the
mere mortal to use.

The thing I am not mentioning is that it is just as easy to abuse C++
and create difficult to use classes and objects. In otherwords the
elegance of C++ I/O operation says absolutely nothing about the
inherent elegence (or lack of it) of C++. 

This is where I think C++ fails for a CP4E type of application. CP4E
needs a language that is elegent and simple as its basic property.
CP4E needs a language like geometry. The language itself should
present the equivalent of basis axioms that are completely and almost
obviously comprehensible. Everything else should build on that
basis. Complexity should come as a natural, stepwise progression.

In geometry there is nothing else besides axioms, the rules of logical
deduction, and what can be derived therefrom. Nothing else is
required. That is obviously the reason we teach it, as a model of
formal reasoning, particularly as a completely transparent model.

The elegence and transparency of geometry should be the metaphor for
the CP4E process and the metaphore should inform its choice of
language. 

Of course it already has :).