This isn't about me. It's just that I can only speak from my experience. So I use my experiences to tell my story. It's up to you to interpret it. But they are _real_ experiences, honest ones. That's their power and their weakness, too.
I think the need for assembly has changed a great deal. In fact, the entire landscape has changed. And not just the hardware and software tools. But you have programmers who choose to become programmers simply because they did a "toss up" between becoming an accountant or a programmer and programming came heads-up in the toss or because it seemed that there might be a little bit less stress in the job, etc. That wasn't the case when I was learning it. People going into it were there for reasons that reached deeply into their souls and who they were and, for most perhaps, there really weren't many viable options. It wasn't some kind of abstract job choice. The tools available, the IDEs, wizards, the availability of things like VB where you can just drop down a pre-made widget and add some small bit of easy code behind and never even have to worry about data integrity because all of the single-threading of your code is prehandled for you, has really opened up the profession for people who could not ever have considered this seriously, beforehand.
This has meant that those who are deep as well as broad in this field are fewer between. The field is opened to so many more now and that's because of all the successes of those who've explored new ideas and paved the way beforehand. But I think of embedded programmers as not the base of that pyramid you speak of, but as closer towards the top of it. We need to understand hardware, numerical methods, mathematics, signal processing, physics, chemistry, sensors and transducers, closed loop controls, dynamical systems, as well as usual spate of programming skills.
Maybe I'm wrong about that.
In any case, I don't know where I've said anything that your comment takes issue with. Maybe we agree on the points I made. But I can't tell because you didn't address yourself to any of them.
It's a fact that I've actually had one chance in my professional life to reproduce two exact systems, one in assembly and one in C. It's a fact that in doing so, I took about the same time. It's a fact that the compiled result was quite different. It's a fact that I was about the same person both times as the development points were only a year apart from each other and I was long skilled in both assembly and C both times. It's a fact that this means nothing about what others may do, but it does at least drive a small wedge in some of the arguments I've seen floating about here. Whether or not my single experience says much in general is another issue.
But at least I can actually speak from personal experience about an actual case study. I haven't seen any of that here, to date. No one seems to have been through my experience. So at least I have something to contribute here. I'm also willing to offer and participate in some specific coding challenges so that others can see what an experienced assembly coder can do, even when forced and hog-tied into C's paradigms of functions and parameters, etc. Even with all those boundaries imposed, restricting the ability of an assembly programmer to make meaningful choices, it's still the case that in some small cases compilers simply cannot perform the kinds of topological reformings that an assembler programmer can achieve. I think Walter will remember well one such example we discussed.
However, I will say that I deeply respect all of Walter's comments and listen to him, intently. He knows a lot of things I don't. But I have a lot of application experience, too, and some modest toe-dipping into developing compilers and DAG and basic-block optimizers. So I have some perspective. But just one person's.
So why the sour comment? I'd have thought any rational person would embrace the discussion of a real world example case. There seems so few of them, you know.
Jon