It definitely wouldn't be for everyone, but learning assembler first is something to consider (you'd have to enjoy it of course). There's a great, great free book on this, it'll walk you through code and you'll really get a grip on how the computer works:
I started out trying Scheme, Java, Ruby, etc. and was constantly in a state of confusion. I could never just go with it because I'd always want to understand the implementation of the commands before using them. Ruby was particularly bad - I had no clue how a language or computer worked and was constantly overwhelmed with all of the different options for doing something.
Programming in assembler you get a small set of commands that won't take long to memorize, and you'll have to build up from there. It's not as hard core as people make it out to be - when I was really into it, I could produce output in at a similar rate to C. Once you get a little assembler under your belt, you could begin mixing it with C, and you'll get a rock solid grip on C strings, callback functions, pointers, etc. that so many people have trouble with.
EDIT to add:
Also, using GDB (the Gnu DeBugger) with Emacs text editor is excellent for learning assembler - must use it!
http://download.savannah.gnu.org/releases-noredirect/pgubook...
I started out trying Scheme, Java, Ruby, etc. and was constantly in a state of confusion. I could never just go with it because I'd always want to understand the implementation of the commands before using them. Ruby was particularly bad - I had no clue how a language or computer worked and was constantly overwhelmed with all of the different options for doing something.
Programming in assembler you get a small set of commands that won't take long to memorize, and you'll have to build up from there. It's not as hard core as people make it out to be - when I was really into it, I could produce output in at a similar rate to C. Once you get a little assembler under your belt, you could begin mixing it with C, and you'll get a rock solid grip on C strings, callback functions, pointers, etc. that so many people have trouble with.
EDIT to add:
Also, using GDB (the Gnu DeBugger) with Emacs text editor is excellent for learning assembler - must use it!