If you're embedded device has a window system, than a language like C++
is fine...But...

To extend on this quote (by Stroustrup):  "In C++ it's harder to shoot
yourself in the foot, but when you do, you blow off your whole leg.".

I've found you can understand spaghetti C code with some effort -- its
nearly impossible to understand spaghetti C++ code.  Much professional
programming is "kitchen sink mentality" -- if there's a feature, use it.

I find it interesting K&R is about 200 pages, Stroustrup is 1000+ pages.
What percentage of the 200 pages is understood by the average C
programmer versus the 1000+ pages by the average C++ programmers?

I program by the quote by Einstein "Things should be as simple as
possible, no simpler".

Much of the C++ code I've seen has more complicated implementation
details than the problem being solved (I'm a believer in Halstead
metrics, a lot of solutions I've seen in C++ would be much smaller in
C).  Of course, that's the solutions in C++ I've seen...not all of
them....

I think C++ lends itself to coming up with complicated solutions to
simple problems...(of course really good C++ is simple and clever...but
much C++ I
see is poorly designed raw overcooked spaghetti).  

Also its very useful to have an understanding how the hardware works in
systems where memory/time is an issue (and it almost always should be an
issue).  I have a good understanding of what will happen in my C
compiler 
(a good algorithm in C runs rings around bad algorithms in assembler).
[nowadays, instead of processor performance, you think about cache
performance].  I doubt there's generally a good understand of time/space
of C++ features in the compiler and standard library...]

marty

>   -----Original Message-----
>   From: [EMAIL PROTECTED] [mailto:linux-embedded-
>   [EMAIL PROTECTED] On Behalf Of Bernd Petrovitsch
>   Sent: Tuesday, July 29, 2008 5:47 AM
>   To: Alexander Neundorf
>   Cc: linux-embedded@vger.kernel.org
>   Subject: Re: prevalence of C++ in embedded linux?
>   
>   On Tue, 2008-07-29 at 10:58 +0200, Alexander Neundorf wrote:
>   > On Tuesday 29 July 2008 10:20:12 you wrote:
>   > > On Tue, 2008-07-29 at 09:51 +0200, Alexander Neundorf wrote:
>   > ...
>   > > Yes, one *can* use the above features and get small features.
But
>   most
>   > > people simply can't - if only that they use some tool/lib
written in
>   C++
>   > > (and coming from the "normal" world) which simply uses them
without
>   > > thinking about space and wonder why the device won't run with
"only"
>   > > 128MB flash and run in 16MB RAM.
>   >
>   > Well, if somebody carelessly uses general purpose apps/libs in a
tiny
>   embedded
>   > project he will have problems, no matter if it's C or C++.
>   
>   Of course.
>   But it is IMHO much more easier and seductive to use the code
bloating
>   features with C++ - especially if you don't know what to do and do
not
>   realize (until it's too late).
>   
>   Evey other potential customer asks about C++ on an embedded device.
And
>   if you say "yes" they *expect* to use all that g++ allows. Period.
>   
>   Getting exceptions and restrictions to the use of C++ (including any
3rd
>   party software - known and unknown) in an offer?
>   Please be serious.
>   
>   Discussing afterwards that these templates are a very bad idea (and
need
>   to be converted to "a pure virtual class and lots of classes" to
avoid
>   code bloat and that it will cost a few man-weeks and calendar time)?
>   I can hear it already: "But you said that C++ is OK and this is
plain C
>   ++".
>   
>   > > BTW why should I use C++ if I don't use any "fancy features"?
>   >
>   > If you just skip RTTI and exceptions you have enough fancy
features
>   left :-)
>   
>   Hmm, does g++ has options to completely disabled these (and other)
>   "fancy features"? At least one could check 3rd party software more
>   easily if they actually use that.
>   
>   Multiple inheritance[0] is in my experience not really necessary (if
>   ever used).
>   I already have "Safe C" with gcc anyways (if I want and enable some
>   warnings;-).
>   OO design is a question of design and not of the implementation
>   language. I can't see much difference between
>   - declaring a class and using a method or
>   - declaring a struct and use a pointer to an instance as the first
>      parameter in several functions.
>   Leaves operator/function overloading and default values for
parameters.
>   But it adds usually libstdc++.so ....
>   
>   > Just know what you're doing if you're using templates and multiple
>   
>   ACK. But what is with the other 90%?
>   
>   > inheritance, there is no problem with them. Templates are so much
>   better than
>   > macros, and if used carefully they don't bloat the code size.
>   
>   Don't get me wrong - I'm not religiously against C++ in anyway.
>   It's just that you *really* need to know what you do and that
implies
>   IMHO for C++ that you must know how templates work/are implemented.
>   Similar for exceptions (and no, using exceptions usually doesn't
save
>   space anywhere - at least not if your calling depth is < 100). if
you
>   use them (or use a library that uses them).
>   And may need or may not need libstdc++.so - an additional piece of
code
>   using space.
>   Of course, if you have 1GB of flash and 256M RAM, who cares. But
most of
>   the devices I see are not that "fat".
>   
>   In short: It is far from easy to *not* shoot yourself in the foot
with
>   C++. At least compared to plain C.
>   
>       Bernd
>   
>   [0]: Yes, I know what's the difference between normal and virtual
>            inheritance.
>   --
>   Firmix Software GmbH                   http://www.firmix.at/
>   mobil: +43 664 4416156                 fax: +43 1 7890849-55
>             Embedded Linux Development and Services
>   
>   
>   --
>   To unsubscribe from this list: send the line "unsubscribe linux-
>   embedded" in
>   the body of a message to [EMAIL PROTECTED]
>   More majordomo info at  http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-embedded" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to