Newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.object
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!news.mathworks.com!news.alpha.net!uwm.edu!msunews!harbinger.cc.monash.edu.au!news.cs.su.oz.au!metro!news.ci.com.au!syacus!ian
From: ian@syacus.acus.oz.au (Ian Joyner)
Subject: Re: C++ Productivity
References: <1995Jan23.193745.7044@boole.com> <jim.fleming.84.00133AB6@bytes.com> <1995Jan25.201226.28856@rcmcon.com> <jim.fleming.75.0003AF13@bytes.com> <3gls1u$p2l@osfa.aber.ac.uk> <1995Feb1.184049.16332@rcmcon.com> <D3E33s.DCp@da_vinci.ecte.uswc.uswest
 <D3IAw9.6FH@syacus.acus.oz.au> <3hdbbr$i8p@dawn.mmm.com>
Message-ID: <D3v8s2.26u@syacus.acus.oz.au>
Organization: Australian Centre for Unisys Software, ACUS
Date: Sun, 12 Feb 1995 02:40:49 GMT
Lines: 187
Xref: glinda.oz.cs.cmu.edu comp.lang.c++:112307 comp.lang.smalltalk:20741 comp.object:26603

hopps@mmm.com (Kevin J Hopps) writes:

>Mr. Joyner continues:

>> This is exactly true, writing software is hard. Why then cripple us
>> with a language with so many complexities and difficulties as
>> C++? As I said before, OO was meant as a solution to complexity.
>> Other OO languages such as Smalltalk and Eiffel are clearly
>> designed to help tame complexity, but I cannot see this in the
>> philosphy of C++, which was designed so that Bjarne Stroustrup and
>> his friends would not have to write programs in languages other
>> than C. C++ is just a massive compromise.

>When you ask "Why then cripple us...," are you proposing something
>be done about C++?

No. C++ provides the desirable compatibility with C, where you are already
locked into C. It is not the all singing/dancing language. I doubt that
Bjarne would claim that. It has a limited scope. It is not a state of the
art language. In fact it falls very far short of state of the art, in the
same way that Unix is far short of state of the art in computer systems.
However, both Unix and C++ are being promoted as state of the art. I am
beginning to see encouraging signs that people are now seeing through this,
as they have tried and been burnt. Of course Bjarne would say that they
have unreasonable expectations. In many ways he is right. It is obviously
an ureasonable expectation that Unix will provide many of the same ease
of use factors, and sophisticated features as the machine I have now
witnessed customers try to replace. 

However, they got sucked in by Unix hype that proclaims it as state of
the art, when the fact is that Unix is primitive, and primitive machine
oriented languages like C/C++ are needed to get around this.  It is an
unreasonable expectation that you will be able to convert your COBOL
shop to C++, and expect it to solve your woes. It won't. You will still
have woes, even if they are a different set. These woes will persist
until the industry becomes problem and customer oriented, and 
endorses the technologies that are so oriented, rather than continuing
to cling to systems and languages that are technically deficient.

>  I must admit that the only OO languages I've
>used have been object pascal and C++.  I found the OO paradigm
>refreshing when I first used it in Pascal -- I realized this is
>what I'd been trying to do in C all along -- but I found Pascal
>clumsier than C (except nested functions were nice).  I for one
>was very happy to begin using C++.

Well, I started with Simula before OO, and Hoare, Dijkstra's and Dahl's
Structured Programming book. Then I did Object Pascal. Then I
simultaneously came across C++ and Eiffel. I was open minded about
C++ until I actually had the opportunity to try it in the context
of a large (and successful) project. But Eiffel seems to logical
replacement to Simula/Object Pascal.

If you have a C shop, then by all means use C++. But for most end
user programming, HyperCard/VB is more suitable. For large
scale complex programming, Eiffel will prove far superior. C++
is in the same vein as Unix, 'middle of the road'. This will
mean the death of both of these, as C++ is not appropriate for
fast cycle development that end users and commercial shops
want, and not suitable for the fast cycle but long term maintainability
that sophisticated applications and systems programming requires.

Unix is the same. It sits in between workstations like PC and Macintosh,
and large scale data servers (like Unisys A Series). Unix does neither
data presentation (GUI) well (XWindows is pathetic), nor large scale
transaction processing well. This might not be how the industry appears
at the moment, but time will tell, and I think you will see the
middle of the road of Unix and C++ gradually squeezed out by
superior offerings on either side.

>Perhaps other languages would be even more enjoyable and productive
>for me.  But I came into a development organization that was firmly
>entrenched in C, with some C++ supporters in the group.  Getting
>C++ into use was much easier than trying to evangelize an
>entire organization.  Realistically, my choices were not between
>C++ and some other OO language, they were between C and C++.  Of
>those two, I definitely find C++ to be more enjoyable and more
>productive.

OK, you sound very reasonable. I agree. But in most cases where I
find people say that C++ is much better, I say wait, it's not C++,
it's the OO introduced in C++.

>I am personally thankful that C++ was there, or I'd still be
>using C.  For me and my situation C++ is the best choice.
>Surely this is true for others in other situations, too.  Why
>is it necessary to argue about it?

Because it is a short term phenomenon, and people who are pushing it
push it to the exclusion of everything else, as with Unix. Imagine
if Unix banished everything else in the industry. Then we'd have
truly open systems right? Wrong, then we'd have one closed, and
deficient system. Open systems mean diverse systems can interoperate.
But one of the myths about Unix is that Unix is open all else are
closed. Similarly, C++ is not the general purpose language that will
banish all others. I'm not arguing. I'm just dispelling and debunking
fraudulent myths.

>> That C++ is now a popular language only adds to the urgency of
>> the controversy that surrounds it. This only adds to the concerns
>> of many 'old time' OO practitioners that C++ is a technically
>> flawed language.

>So what?  Having another language choice is not bad if you are
>capable of making choices.

Now, I have to pick you up here for being somewhat naive. The idea
of large corporations is to lock people into their way of doing
software. Just think, whichok{_ is the large corporation pushing C++
the most now? Does that corporation want to mop up the whole
industry? Will this mean the death of competition, and the loss
of advantage to the customer?

That is why this question is important. Let's not lock small players out
of the market, by denying them tools simple enough to enter the market
place.

>This is true, assuming you have complete freedom to choose whatever
>language you want.  Large organizations can be slow to change.

So you recognise, that we often don't have choice. Large organisations
might be slow to change, but changing from COBOL to C++ is not the
right choice (and I certainly would not like to be caught dead programming
in COBOL.) But COBOL does the job far more efficiently for many organisations
than any C based language will ever be able to do.

>  If
>C++ is the only way to get started on OO, then it seems like a
>worthwhile step.  Being a multi-paradigm language, it seems possible
>to "ease into" OOP using C++.  Perhaps when everybody around here
>fully embraces the OO paradigm, it will be possible to sell people
>on another language.  For now, if I want to do OOP, C++ is the only
>choice I have.

Again, you are reasonable and have a legitimate reason. But the rest of
the world needs to be warned, and the world is becoming aware that Unix
and C++ are not the answer to their problems. Then again when the
rest of the world is producing software of better quality software,
much more cheaply than your organisation, you will be sorry you didn't
make more long term decisions back in '95.

>> In the long term given a clean OO language, your programs will be more
>> maintainable. But then most companies are not interested in long
>> term investments, which is why they are more likely to have chosen
>> C++ for a 'me too' reason.

>Sometimes reality is not pretty.  But it's hard to escape it.

Computers have little to do with reality. That is why they are the perfect
tool to model reality, as you can exclude spurious reality factors. This
excuse that C++ is an engineering compromise gets more pathetic every
year, as processors get faster, and memory becomes larger and cheaper.
The compromises on which C is based are really relegated to history.

The important thing to realise is that you can have performance and
elegance together.

>> *I have just coined the term "Ignorance Superhighway". Part of this             
>> is a reaction to Bill Gates going on about the "Information Superhighway"     
>> as if he just invented it. But for the most part it is a reaction against     
>> the low levels to which internet exchanges have sunk. If I had kids,          
>> I wouldn't want them to read most of what goes on here.   

>If you insulate children too much from the real world, they will be
>unable to deal with it when they grow up.  It feels like you want to
>protect the world from C++.  I for one do not want your protection.
>I can make up my own mind about C++, thank you very much.

No, this is the ultimate C myth, that those who propose other languages
are just over protective parents. This is an absurd myth. We are talking
about better more cost efficient ways of software production. This will
establish a world where the software market is not dominated by a few
major corporations. Those making decisions in this industry to need
to become aware of these considerations. There is no question of
trying to protect you from yourself.

>Feel free to tell me about _your_ favorite, though.  Perhaps someday I
>will be in a position to try something new.

For end user programming, I think the HyperCard/VB class of languages is
the right tool. For quick changes, prototyping, probably Smalltalk.
For large scale, cost effective, long term, maintainable, software,
I believe Eiffel is the state of the art language at the moment.
-- 
Ian Joyner           |"for when lenity and cruelty play   |All opinions are
Unisys (ACUS)        | for a kingdom, the gentler gamester|personal and are not
ian@syacus.acus.oz.au| is the soonest winner" W.S. Henry V|Unisys official comment
