gnu-misc-discuss
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: C++ equivalent to spaghetti code


From: James Kanze
Subject: Re: C++ equivalent to spaghetti code
Date: Sun, 20 Jul 2008 01:23:07 -0700 (PDT)
User-agent: G2/1.0

On Jul 19, 11:25 am, terminator <farid.mehr...@gmail.com> wrote:
> On Jul 18, 11:24 pm, Tim Smith <reply_in_gr...@mouse-potato.com>
> wrote:

> > In article <4c15l5-fk5....@darkstargames.dnsalias.net>,
> >  Wolfgang Draxinger <wdraxin...@darkstargames.de> wrote:

> > > Well, I know only the comments Linus Torvalds made about the
> > > implications of using C++ to develop a kernel. And I totally
> > > agree with him in his statements. Programming a kernel you want
> > > to control every bit of the program (yes I know, that this
> > > sentence can be interpreted in many ways, and each way totaly
> > > matches what I mean).

> > > A languages like C++, that hides (some) vital aspects of the
> > > underlying mechanisms can break things at such a low level
> > > application. I'm thinking mainly about the way, polymorphism is
> > > implemented (there's no standard about that in current C++), how
> > > name mangling is performed (dito), calling conventions if
> > > objects are passed by reference (dito). Another problem is, that
> > > the use of some C++ features (I'm looking at templates here)
> > > will start a chain reaction in which code is created generically
> > > w/o having any influence on the exact outcome. This is not the
> > > same like using macros to create a similair effect; doing it
> > > with a macro one must exactly know what's going on.

> > I have yet to encounter a C++ compiler that will refuse to compile a
> > program if it does not use polymorphism, passing objects by reference,
> > and templates.  There is nothing forcing someone who writes a kernel in
> > C++ to do those (possibly) questionable things.

Anyone who codes a kernel without using polymorphism just has to
reimplement it by hand.  Ditto passing objects by reference.
And I fail to see any problem with templates, although given
that most of the data structures in a kernel are very
customized, they'll probably be used less than in the
intermediate layers.

> you can call it C++ code but without them you are just codding in C
> and the trouble is that many high level featuers do not always suit to
> kernel programming,

Some (like exceptions) don't, but most do.

> on the other hand C++ is not high level enough for
> some tasks such as web programming,multithreading ...

Funny, I use it for that, with no problem.  (Well, I'm not sure
what you consider web programming, but Firefox is written mainly
in C++.  But maybe you don't consider that web programming.)

> In short words today`s C++ cannot be considered as general
> purpose as C used to be in good old days.

C was never really a good general purpose language.  It was
never used (nor even usable) in commercial software, for
example.

--
James Kanze (GABI Software)             email:james.kanze@gmail.com
Conseils en informatique orientée objet/
                   Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


reply via email to

[Prev in Thread] Current Thread [Next in Thread]