Uhm. Maybe 25 years ago. That was when you had to actually check the output from time to time because the compilers were so bugged and often terrible at their job. 10 years ago you needed to learn C to understand how Perl worked.
In 10 years "they" will still be saying learn C because C is nothing but a glorified assembly language with some syntactic sugar. C shows you how your computer works. There is very little to gain by using assembly over C (with the special exception of specialized instruction sets, like SIMD).
Until the computer changes so fundamentally that a simple imperative language no longer matches the hardware, or some other simple imperative language does a better job (unlikely), learning C will always be good advice.
In 10 years "they" will still be saying learn C because C is nothing but a glorified assembly language with some syntactic sugar. C shows you how your computer works.
It's possible to be a solid C programmer (ie clear understanding of pointers, stack vs. heap, etc) while still not having the depth of knowledge one gets from understanding at least some assembly. When I first learned about the concept of stack overflows (ie as explained in Smashing The Stack For Fun And Profit: http://insecure.org/stf/smashstack.html) my understanding of C really expanded, mostly through the added insight provided by thinking about C in the context of assembly.
I would say that assembly taught me more about how my computer works as compared to C, than C did as compared to perl.
Maybe I just didn't dabble with C enough before dabbling in assembly, but that was where I really learned about the stack, registers, variable allocation and function calls. With C I mostly just thought in terms of perl and ignored the implementation details. Static typing, malloc/free, strings-as-arrays and arrays-as-pointers were new to me, but I don't feel like I really understood what was going on at that point.
In 10 years "they" will still be saying learn C because C is nothing but a glorified assembly language with some syntactic sugar. C shows you how your computer works. There is very little to gain by using assembly over C (with the special exception of specialized instruction sets, like SIMD).
Until the computer changes so fundamentally that a simple imperative language no longer matches the hardware, or some other simple imperative language does a better job (unlikely), learning C will always be good advice.