If you want to learn Programming, you don't start high level and spend years working your way down.
You start low level, in Assembly. Learning the instruction set. Learning how the stack works. Learning the purpose of volatile and non volatile registers. Learning the different calling conventions used in compilers.
Once you grasp it, you can start going up to a machine level language such as C.
Learn the compiler process.
How the compiler translates code to what the processor can understand.
You'll be able to look at a function call in C and replicate it in Assembly very close to what the compiler can generate. You'll know how the heap, .data section and locals are handled.
Of course, now compilers are very efficient at optimization. I'd say more so than humans.
But if you're able to look at a function call and replicate it with assembly,
push the arguments onto the stack.
Depending on the calling convention either from left to right, or right to left.
Then how the call instruction pushes the return address onto stack and makes a non conditional jump to the target address.
Then how the function pulls the arguments from the stack using the ESP register and after the standard prologue using the EBP register, then how the function pops the return address from the stack and returns back to the instruction after the call,
how to clean up the stack, either let the callee or the caller fix the stack pointer,
you've pretty much learnt to program.
There's really little restriction beyond this point to what language you want to embark on, other than the syntax and the API the language provides.
I think throwing assembly at noobs from the get go would just discourage most people. I don't think I would have ever pursued programming further if I first had to learn assembly. There is a time and place for it. But a noob can get away with high level language because at the start it really is all about learning basic concepts. No need to overcomplicate something like a variable... To me assembly just isn't fun. If that was my first class I wouldn't have taken another programming class because I would have assumed all programming is like that. My first programming class was Python and it was fun because we would actually make useful programs.









