3 ms·
Speaking from personal experience, I tried to learn C first and could never understand pointers, then I studied assembly and that was a huge eye opener. I've ha
by orclev 12y ago
Speaking from personal experience, I tried to learn C first and could never understand pointers, then I studied assembly and that was a huge eye opener. I've had very good success teaching people programming starting with Assembly (well, starting with "This is a turing machine", but moving to assembly next), and it makes understanding something like C a lot simpler. The problem with C as a first language is that it's too low level to ignore details like memory management, but it's too high level to really understand how it all functions.
You could maybe do Python -> ASM -> C, but Python -> C -> ASM will probably be a waste of time because you won't actually get anything out of C until you've done ASM (and certainly not anything more than you'd have already gotten out of Python). I'm also not suggesting that he (or she) should spend months working in Assembly, but rather start with something simpler, play around with it a bit till you can do basic things like add a couple numbers and display them (things that in anything but assembly would take about 2 seconds), and get a feel for how at the most fundamental level a computer actually works. Once you understand the basics of what a computer really is, then when you move to C or Python you can actually understand what all those abstractions are doing for you. The law of leaky abstractions means sooner or later you're going to need to understand all of that anyway, and the sooner you do, the less time you waste and the firmer your understanding will be.