It's funny, I tend to assume (because it mirrors my own experience, and my peers when I entered the industry) that everyone starts off as a C-on-Unix programmer, and specializes from there, into databases, or Windows programming, or whatever. But this isn't actually true, and makes people go cross-eyed when I say things like "just strace it" or "attach gdb and get me a backtrace". I grew up doing 6502 assembly language. Kids these days do HTML and JavaScript. They don't even know how far away from the machine they are, and when the "magic box" doesn't work, they're stumped.
A good programmer has the mentality "it's all turtles, all the way down", where a turtle means a thing that ultimately is just a piece of code, written by someone much like yourself, than you can understand inside out if only you take the time to do so. Even the CPU is just code (e.g. VHDL).
My programming started on windows trying to learn java (classpath? wth is a directory??), then to dos prompts and rexx scripts, but I didn't really hit my stride until a neighbor helped me install TurboLinux.
I spent the next few months at the console (configure X, what am I a god?), with emacs, and gcc and it was glorious.
I still remember the day when I figured out I could declare a function in one place, and then define it in a different .c file, compile things individually and link them and it would work!
So yes, I agree I think everyone should learn C, since it's still the best, thinnest model for the Von Neumann architecture a typical computer provides you. And those early painful steps with C have really served me well when it comes to visualizing the mechanics of a problem
A good programmer has the mentality "it's all turtles, all the way down", where a turtle means a thing that ultimately is just a piece of code, written by someone much like yourself, than you can understand inside out if only you take the time to do so. Even the CPU is just code (e.g. VHDL).