Hacker News new | ask | show | jobs
by exikyut 3061 days ago
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²."

1 comments

> 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.