On 10/14/2011 01:56 PM, Chuck Guzis wrote:
I'm
quite certain that the last few people who know anything about
code optimization (and I don't mean "putting -O in cc's argument list)
will die in our generation, and the current disturbing trend of
horrible grinding, lumbering, bloated slowness will continue to
worsen.
The last time I had the nerve to comment about poor code optimization
on a C compiler, the response was an almost sneering "who cares about
code optimization any more?".
Kids and idiots. These are the same people who would never dream of
passing through Sacramento on their way home from work in downtown DC to
the DC suburbs, because it'd be stupid and inefficient, but they do the
same thing in their software...because that's "just fine".
It's incompetence at a very basic level.
How sad. In a past life, I spent many many hours on
improving code
generation of FORTRAN compilers and hand-optimizing assembly code.
I spent about an hour doing assembly *this morning*. I'm working on
a project (new contract, woohoo!!) and needed to tweak my crt0.s. ARM
assembler is kinda fun, but caffeine is definitely required.
While embedded may be the last refuge for assembly
code writers, it
won't be for much longer.
There will always be a need to know assembler (How else will we write
compilers? How else will we debug them?), "these kids today" seem to
have a great deal of fun ASSerting that it isn't done anymore.
Quite a bit of IBM mainframe work is done in assembler, too, I should
point out. When one has to process a gazillion ATM transactions per
second, one doesn't usually do it in Java. (though today's mainframes do
have Java acceleration hardware! Because it needs it!)
The vast majority of embedded development these days is done in C,
with some things (notably some low-level device handling, as you know)
are done in assembler. You can't really do any serious embedded work
without doing at least SOME assembler, for the C startup code
(crt0.[so]), but the "canned" ones distributed with cross compilers are
getting closer to being able to handle all "before calling main()" needs.
C will be the king in the embedded space for a long time, I suspect.
This has been the case for a very long time (I've personally been
doing embedded development in C for 21 years, and it was being done that
way for a long time before that), and things like that don't change
overnight, even though each new crop of college kids have their
"favorite language of the week" and love to proclaim how it's going to
replace everything. When trying to make a locomotive engine controller
work, we use what's known to be dependable, not what's trendy and cutesy.
-Dave
--
Dave McGuire
New Kensington, PA