hippy wrote:Having coded in assembler commercially for 15 years, I don't agree with this notion that assembler is essential or makes anyone a better HLL programmer.
Assembler is all about the mechanics of a particular processor (or the mechanics of processors in general). It (assembly in general,as opposed to any particular assembly language or, indeed, syntax subset) is an awful language for teaching basic concepts. Teaching programming is all about teaching computational thinking, not about micromanaging register usage (something which, oddly enough, compilers are usually better at than you are).
Assembly is extremely useful when you need it. But the times when you actually, really, need it are rare indeed. And for Dave_G2, who is probably jumping about shouting "I know! Drivers!" at the moment, drivers don't need to be written in assembler - for example, the drivers in NeXTStep were written in Objective-C (and operated in userland ), and those for the MIT Lisp machines were written in - well - Lisp. Both of these managed to be blinding fast (in NextStep's case, running on something slightly more powerful than an Atari ST)
There are those who, being around my age, learned to program using BASIC, then moved on to assembler (or, in my case, came straight in with assembler because I didn't have the BASIC ROM for my first machine). They look back, misty eyed, on the hours they spent poring over listings, and say to themselves "That's the way kids should learn! After all, I
learned that way, and look at the 37337 programmer-dude I have become!". Unfortunately, they are missing the fact that they probably would have managed to learn to program even if it meant flipping binary patterns in at the front panel; they learned to program despite
being restricted to BASIC and assembler, not because of
Abstraction is good. As cheery said:
You shall not mock layers of abstractions. As they do not make programs slow and big. Premature optimization, stupidity, lack of optimizations - in that order - make the programs slow and big.