Date: Tue, 5 Mar 2002 22:16:02 -0500 From: Brian T.Schellenberger <bts@babbleon.org> To: Terry Lambert <tlambert2@mindspring.com> Cc: Kenneth Culver <culverk@alpha.yumyumyum.org>, "Steve B." <steveb99@earthlink.net>, "Eugene L. Vorokov" <vel@bugz.infotecs.ru>, freebsd-hackers@FreeBSD.ORG Subject: Re: C vs C++ Message-ID: <20020306031602.A86B4BA03@i8k.babbleon.org> In-Reply-To: <3C856C7F.5005E30E@mindspring.com> References: <20020305132457.A4700-100000@alpha.yumyumyum.org> <20020305214127.545FDBA03@i8k.babbleon.org> <3C856C7F.5005E30E@mindspring.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Tuesday 05 March 2002 08:10 pm, Terry Lambert wrote:
| "Brian T.Schellenberger" wrote:
| > On Tuesday 05 March 2002 03:26 pm, Terry Lambert wrote:
| > > Kenneth Culver wrote:
| > > > Why are you being so sarcastic? Everyone here is assuming that it's
| > > > harder to write C++ code, so you should only use it if necessary. It
| > > > isn't necessary to use it for something like a daemon.
| > >
| > > Because that underlying assumption is false, and I'm making
| > > fun of it.
| >
| > Reality check: How can you possibly contend that it is no more difficult
| > to write code in a language which *so* much more massive?
|
| It's not "*so* much more massive". Hardly anyone who wants
| to write understandable code uses operator overloading, unless
| the are definiing a "String" or "ImaginaryNumber" class, and
| then it's incredibly clear-cut what's going on.
|
| The "private" vs. "public" is incredibly useful for data
| hiding, as well as namespace seperation. It means you
| can't spam values accidently, if you can't spam them on
| purpose.
|
| If you have a hard time with "default private", then use
| "struct" instead of "class" for declaring things, and the
| default will be "public" instead.
|
| The "protected" and "friend" features are seldom used; if
| you understand FORTRAN mutual recursion as a means of
| implementing recursion in FORTRAN, which doesn't support
| it by default, then you understand "friend" functions.
|
| Inheritance is logical, to anyone who has ever programmed
| in the FreeBSD networking stack or VM system, both of which
| use structure casts to implement inheritance, whether you
| want it or not.
|
| Multiple inheritance is like "protected"... for the most
| part, you can ignore it.
In other words it *is* so much more massive but most of that is junk and can
be safely ignored.
We would be in agreement there but it still gets in the way of learning it.
| > And one, I might add, which is intentionally UNdesigned.
|
| Yeah, and ANSI-C has prototypes because the compiler vendors
| were too damn lazy to change their object format to include
| a third field in the symbol table so that the problems that
| prototypes catch at compile time could be caught at link-time.
Have you ever *read* Stroustup's philosophy that a language should not have a
philosophy? This is precisely what's wrong with C++, and what I mean by
UNdesigned. It's deliberate! Stroustup considers it a virtue!
I beg to differ.
| The hidden reason for ANSI-C prototypes, of course, is, and
| always has been, "so that C code could be compiled with a C++
| compiler, with the intent that the C++ language supercede the
| C language".
|
| So now, I expect you to vehemently protect the existance of
| ANSI-C prototypes at every future opportunity.
Prototypes are a good idea, and they did come from C++. I never said that
C++ was devoid of good ideas; I just think it has _too_many_ ideas.
| C++ was designed, but the design was constrained by the C
| language, just as the design of ANSI-C was constrained by
| the C language.
Mostly it was constrained by a lack of constraint. Upward compatibility is a
problem, but needn't be deadly.
I happen to do the majority of my programming in a C-based OO language, but
it's not C++. Actually, it's proprietary but it's closely modeled on
Objective C, which is a much better OO language IMHO.
| > C++ is a language which I really liked until I really started
| > to learn about it.
|
| Well, there's a "ringing" condemnation.
|
| Have you looked at the source code for libXt or libXm
| lately? Ah, the beauty of pure C code, applied to the
| Object Oriented programming model...
I have, and it's not real pretty. But if bad code condemned C++ I think
you'd have a lot more to answer for--indeed, I believe you've rejected
precisely this logic in arguing against others.
Ok, you're in love with C++ but it's *not* the be-all and end-all of
programming languages. Actually I think it's a crock of unmentionability,
but that's just me.
| Object oriented programming is not some mystery, it's a means
| of solving problems that are best modeled by abstracting
| implementation details complexity into objects, so that you
| can concentrate on writing the code, and not on the details
| of the implementation.
True . . .
| It's also a way of enhancing code reusability, through the
| use of design patterns. Once you've written one binary
| search, you've written them all.
True . . .
| If you understand functional decomposition, then you
| unsertand the most fundamental tenet of object oriented
| programming already.
I write in OO all the time, though I admit that I feel pretty feel to cheat
where it makes the problem easier to solve & express. And I admit that
sometimes I've cheated where it *didn't* in order to meet deadlines, and that
I've almost always regretted.
But OO != C++.
| Can we all move on to something more useful, like criticizing
| Java?
Hmm . . . a little pot - kettle thing going on there, is there?
|
| -- Terry
--
Brian T. Schellenberger . . . . . . . bts@wnt.sas.com (work)
Brian, the man from Babble-On . . . . bts@babbleon.org (personal)
ME --> http://www.babbleon.org
http://www.eff.org <-- GOOD GUYS --> http://www.programming-freedom.org
To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe freebsd-hackers" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20020306031602.A86B4BA03>
