Yes, programming is about a fundamental, structured approach to problem solving. The language doesn't really matter, it's all about the concepts. (Variables, functions, statements, strings, etc.)
Personally, if it were me, I'd get a Raspberry Pi and start them out with Scratch. It's literally designed for teaching 8 year olds programming. It does so in a visual, hands on way, which is how kids that age learn.
I started out programming at 9 in BASIC on a C64 (then shortly thereafter Qbasic on a PC). That led me to building robots when I was 13 using a Basic Stamp. I finally graduated to C when I was 14 or 15. Honestly, I would have been completely out of my depths in C if I hadn't known BASIC. Why? All the same concepts carried over, the syntax was just different.
Keep in mind I didn't have anyone teaching me, I clawed my way through it like a good autodidact should. Ultimately, figuring things out for myself made me an expert problem solver and while I'm not a master coder by any stretch, I can read and modify code in pretty much any programming language and write decent code in a few core languages. (But this only holds because I *wanted* to learn programming.)
I guess my point is this: Procedural programming is procedural programming. Start him out with something simple like Scratch, otherwise it's going to go way over his head and he'll get bored or frustrated with it. You have to make it fun and keep it simple!
When you taught your boy how to swim, you didn't just jump in the deep end and make him watch you doggy paddle, right? No, you put the water wings on him, took him into the shallow end and taught him to tread water.
C is the deep end of the pool. Scratch (or BASIC) is the shallow end.