I took an assembly programming course a while ago and the teacher began the lecture with: "No one really need to know this stuff, and you will never use it, but its required by this program so we've got to struggle through the next several weeks studying the material.
To write great code requires one to write efficient code. Writing efficient code requires good algorithm choices and a good implementation of those algorithms. Learning/knowing assembly language, will help a programmer understand how the underlying hardware works thereby forcing em to think in assembly language (For example, data representation, memory organization, elements of computer architecture, how input/output operates, etc, ). This knowledge will make the programmer aware of the problems with certain inefficient sequences so they can avoid them in their high-level code.
Do you think Learning Assembly Language is a waste of time?