I was just grabbing an arbitrary example. When people talk about C++ overhead I think they imagine coding [something like] a time-critical matrix transform using accessors and making a function call to read each coefficient. (Even though the optimizer would inline it anyway). Maybe even a std::vector. My point was that these are just practices. If you need tight code you can create it with C++ and still get benefits.
Slashdot videos: Now with more Slashdot!
We've improved Slashdot's video section; now you can view our video interviews, product close-ups and site visits with all the usual Slashdot options to comment, share, etc. No more walled garden! It's a work in progress -- we hope you'll check it out (Learn more about the recent updates).
I always tell people who want to learn to code to go for modern C++ (preferably C++11 or newer) first, and then if necessary learn some C afterwards.
You conflict me. I agree that C++ can generate optimal code - but only IF the programmer understands the underlying C (and even assembly) well enough to control it.
I agree you can't completely avoid writing assembly for some embedded - especially DSP.
But years ago I pretty much switched to C++ for embedded except tight inner-loops that require hand optimization. I had to convince my boss at the time that it was acceptable by showing lots of generated C++ assembly code compared to equiivelent C. In practice C++ often produced BETTER code, (those virtual functions are like using function pointers that you casually pepper the code with).
It seems though that most people have blurred the line between C++, and the form of C++ that we're [aggressively] taught to write. The actual C++ language doesn't require using accessor functions for every coefficient in a transform matrix, that's just what people do.
Off topic: But I really don't know why so many people use C++ for non-embedded. It's perfectly valid for many - maybe most - applications to trade efficiency for safety, so use a different language. Why pick one that accommodates all the power of C then constantly beat on the developers with a giant list of coding guidelines? When the greatest attribute you seek in a developer is pedantry then something's wrong.
I always wanted to live to see where technology and general human advancement would take us.
Now that I know, I think I'll go off myself.
Another reason for age discrimination started in Silicon Valley where companies used to boast no developers over 30. That is valid when it means that the technology the company is developing is so new and different that experience is meaningless. When the internet was new and we setup our first web site, there wasn't any point in paying a large salary for developers with irrelevant IT experience. We raided a local university and hired students that pretty much lived for the project mostly just to get access to our bandwidth.
But this causes confusion. In fact if a project can benefit from skills that aren't new then it should be obvious that someone with experience is more valuable than someone without. Luckily it seems that smart managers tend to understand that. It's young developers who make themselves feel confident by believing that their age (or lack of) makes them magically gifted.
Another thing that comes into play is the deprecation of neurons - seriously. The idea that it becomes harder to learn with age is a major reason people believe the otherwise-counter-intuituve notion that less experience is better. But there's misconception there as well. This mental depreciation is non-linear, dropping very sharply in youth and is quite gradual by adulthood. Most older people who can't/won't learn are in my observation just locked-in to skills that are supporting them financially. They find it risky and exhausting to start over with a new technology.
Flight wasn't invented by developing flapping feathered wings - as many once seem to have envisioned. Flight was understood to be getting from point A to point B without negotiating the terrain. Better ways were found to do this mechanically. AI should no more duplicate human brain thinking than flight should duplicate bird flying.
Besides, if you succeeded in creating a human brain in a computer it would be as disturbed as a human raised in a dark basement. Our thinking requires a lifetime of delicate social interactions and lots of other experience moving about in a human body.
Seriously, every programmer that believes there are 10X programmers also believes he's one of them.
Firstly I think "10X" was intended like when one says "a gazillion". Secondly I think we need to also profile people who don't believe some programmers are more productive than others.
Programming is easy...
That's like saying "woodworking is easy". It depends on whether you're making birdhouses or you're a luthier making Stradivarius. I work with embedded DSP code and it's not easy to find capable programmers.