What helped me to learn programming as a 10 year old child, was the 80's programming books targeted at children.
Always full of drawings, or little stories, and along the process I got introduced to BASIC, Z80 Assembly and all the intricacies of Spectrum hardware.
I used to think those books were gone, but they seem to have come back regarding Arduino and Rasperry Pi programming. Just focusing on Python and Scratch now.
Giving them a board with such books and some electronic stuff is probably the best way to teach them. Regular computers have too many layers that just hinder learning and its hard to see things happening.
The massive problem is, learning Z80 assembly for the Spectrum was tricky, but not overwhelmingly so.
The C64, the Spectrum, the TRS-80, etc, were all "small" machines that were simple to learn.
The Arduino, Raspberry Pi and Scratch are also tricky, but not overwhelmingly so, and simple to learn.
The absolutely massive difference with the environments of the 80/early 90s and today is that
a) The environments learned are heavily sandboxed, caricaturized facsimiles of computing
and
b) Learning Scratch won't lay down a mental model you can immediately apply to Python, and learning Python won't lay down a mental model you can immediately apply to C++, Rust, etc.
Learning assembly language didn't quite leave you with an immediately-usable understanding of C, but what it did do is give you a working knowledge of what everything else was based on under the hood. I'd argue that's an even more valuable gift: the knowledge that you understand what the more complex environment is based on - good for confidence - and the knowledge that if you absolutely need to, you can pull everything to bits and unravel bits of it - which immensely helps with discovery.
Nowadays, it's like worst-case simulated annealing. "Climb Mt Everest, then climb all the way back down to climb Mt Everest²."
> Nowadays, it's like worst-case simulated annealing. "Climb Mt Everest, then climb all the way back down to climb Mt Everest²."
I don't think that's a good analogy, I think it's more like "Climb up to base camp, then climb halfway up, then climb ...".
I learnt Python before I learnt C and learning C I was constantly having these "Aha!" where I suddenly realised why Python is the way it is. I didn't have one mental model for Python and a different mental model for C, I had one mental model for computing which was enhanced by learning C.
And on top of that Python isn't a fundamentally different language to (for example) JavaScript, sure the details differ but somebody who knows Python won't have to spend months learning JS. Arguably a language like Haskell is a fundamentally different language to something like C, but there are plenty of things that you learn when learning C that can be applied to Haskell.
I don't think the issue is all these concepts are orthogonal, I think the issue is that there are just so many concepts. Back in the 80s learning assembly might have got you 30% of the way up Mt. Everest, whereas nowadays it might only get you 1% of the way up.
Just seeing those covers gave me a huge nostalgia-trip, from my own time programming the ZX Spectrum in the 80s. (First in BASIC, then in Z80 assembly via the fine manual.)
No, that's something I don't think I've ever seen before.
I used to read a few of the Spectrum magazines back in the day, Your Sinclair, Sinclair User, etc. But over time they all dumbed down and started to be more about advertising and game-reviews, rather than having a mixture of programming-content and other stuff.
I did get some POKEs printed though, so it wasn't all bad!
While I was a Commodore boy in the 80's, I know what you're talking about and I came across a book that had the same feeling "Clojure for the Brave and True": https://www.braveclojure.com/ - it was like a jump into the past.
Always full of drawings, or little stories, and along the process I got introduced to BASIC, Z80 Assembly and all the intricacies of Spectrum hardware.
I used to think those books were gone, but they seem to have come back regarding Arduino and Rasperry Pi programming. Just focusing on Python and Scratch now.
Giving them a board with such books and some electronic stuff is probably the best way to teach them. Regular computers have too many layers that just hinder learning and its hard to see things happening.