I find it very interesting that the thread about "Problems with C-class
languages" became so lengthy, and in particular that at the end it centered
around what is obviously a very confusing semantics in Java. This
confusion, itself, is quite telling. I cannot imagine there ever being
such an extended discussion about any feature of Ada, even among the most
novice students.
This reminds me of the days I first tried to understand what this "Object
Oriented" fuss was all about in the late '80s. Keep in mind that by then I
had already had 2 decades of experience in the software industry and had
completed both my MS (in Programming Languages) and PhD degrees in Computer
Science. Most of my work to that point had been with complex concurrent
and real time systems, including a LOT of work in computer communications
systems.
I read the books by Ellis and Stoustrup and by Lipmann, as well as MANY
papers presented at one or another OOPSLA. For the longest time I was VERY
CONFUSED. I just could not understand much of what I read. Finally I just
sat down and implemented a bunch of "Object Oriented" stuff in Ada83 (and,
yes, I DID find a couple of different ways to implement inheritance). I
was very pleased at the obvious productivity and readability gains my OO
stuff showed over the more traditional stuff I had written before. So what
was all this never-ending hype about OO versus Object-based, polymorphism,
multiple inheritance, etc., etc.?
Please understand that whatever I say next about those "Gurus of OO" in
those early days, I really do believe they are very intelligent,
well-meaning people.
It finally dawned on me that the reason I was so confused is that those
"Gurus of OO" were (and are) absolutely and hopelessly CONFUSED!!! For all
their intelligence, they really do not have a (pragmatic) clue about what
software is all about, let alone what is the role of a programming
language. They just jibber on and on about Cheshire Cats and Toad
Stools. And they don't even need to do opium or marijuana to get there!
So, naturally, C++ and Java syntax/semantics is very confusing. The tragic
part is that most people who use it don't even know they don't understand
it. They just use it, and they believe that is the way the world should
be. Stop bothering them with details!!
All that aside, what IS the good news about C++ and Java? As near as I can
tell, there is really only one benefit of Java - the JVM. That's right,
the language itself is just another C, with a few additional bells and
whistle, but with no particular value (except a lot of negative value), as
a programming language.
The JVM is Java's only real asset. And, unfortunately, because it was
implemented to implement Java, the JVM is woefully inadequate for a lot of
purposes. But at least it is there and it provides a solid basis for
platform/OS-independent software development. (Does anyone remember the
days when "portability" was one big reason many people argued for using
Ada, and the C-world people universally argued that
platform/OS-independence was not important to them? I do. Later they just
started billing C as a "portable language", even though that was not at all
true. Somewhere in my archives I have an early version of the User Manual
for Borland C++. The very first sentence in that book congratulates you on
deciding to use a "portable language".)
Yes, there you have it. So what is the "Good news" about C++? I honestly
can't think of a thing, except, for teaching purposes, it provides a LOT of
good examples of how NOT to specify a language. Then, I suppose we should
give C++ some credit because it was such a miserable failure that many of
its devotees quickly "Jumped to Java" when the opportunity arose, meaning
we have that much less legacy C++ crap to deal with. But, in reality, C++
will likely go down in history as the greatest hoax ever perpetrated by one
group of humans on the whole of society.
sro
P.S. Sorry for the length of this message. I'm just in "one of those
moods" today. We have 2 1/2 inches of fresh powder out there, and it is
still snowing. I'm looking out my window at a veritable winter
wonderland. I love it! I think I'll go get my skis on!!
S. Ron Oliver, semi-retired professor of Computer Science and Computer
Engineering. www.csc.calpoly.edu/~sroliver
caress Corporation is proud to be the U.S. representative for Top Graph'X,
developers of high quality software components, using Ada. For more
information, check out www.topgraphx.com.
Tired of sucky software! ? Check out www.caressCorp.com and follow the
links to software sucks and The Oliver Academy.