At the same time, assembly language is also the child of all languages because all other languages are first compiled to assembly language before they can run on the computer. That includes interpreted languages because the interpreter itself is compiled.

When HLL were first invented, the idea was to simplify the job of assembly language programming: You use the compiler to produce assembly language code, then improve the code, then assemble and run.

As more and more people got interested in programming, the art of assembly language started to disappear. At least in relative terms: The percentage of programmers familiar with the art is lower, though the absolute number of assembly language programmers may be actually larger than it was, say 30 years ago.

At any rate, the art of assembly language cannot disappear completely, because if it did computers could no longer evolve: There would be no one able of creating new languages, or at least creating compilers for new languages.

That also means there will always be a need for good assembly language programmers. And the fewer there are, the more valuable they (ahem, we) become. So, if you don't know assembly language (or do, but keep shying away from it), learn it: You may become extremely valuable.

There is a common myth that assembly language is somehow hard to learn. That is not true. I mean, allprogramming languages are hard to learn at first. The difference is that with most new languages there is a certain continuity: If you know Pascal, C seems like a variety of Pascal. If you know C, C++ is a variety of C, and so on. But assembly language requires you to learn it pretty much from scratch.

I had to take an Assembly Language for the Intel X86 processor family last semester for my computer engineering degree. At the same time I was taking my first course in C++. Assembly was by far more difficult than C++, but I ended up understanding it better, because I spent more time working on it. Also when my C++ classmates were having trouble understanding the concept of a pointer I was wondering how stupid people could get. In any case I guess I now find I can currently do more with Assembly than C++.

Well, yes, there is the practical side of it all...
The first assembler I learned was x86. Turned out to be good for optimization sometimes, but not really that useful in the long run. Intel has so many instructions just for backward compatibility that it's quite a pain to master and it is quite a challenge to write readable code.

But, assembly language for the PICmicrocontroller is a whole different story. Because of the PIC's very limited memory assembler is the only way to go. Because most of the PIC series controllers have less than 40 instructions, it's very readable and easy to program. Obfuscating PIC assembler is more of a challenge, when in x86 assembler it's a way of life.