I think that people just can’t make the software --> hardware jump. Like they understand what machine code is, and what CPU registers are, but can’t understand how a CPU with baked in hardware instructions (i.e. a seemingly fully deterministic piece of hardware) can drive transistors to high or low voltages in a random way.
The key is to see all software as hardware, and to envision the CPU as many many light bulb switches, with some wired into each other, creating flip/flopping latches.
Once you get the idea of a flipflop, you can maybe then start to understand how all you really want from the switches is to output a switch configuration that encodes a value in some representation. The switches are all initialized in some state, but then drive a known flipflop path towards a desired value, and this happens millions of time a second, often in parallel with isolated switches, or with switches that are virtually segmented from each other, or switches that can chaotically interact with each other
I think that people just can’t make the software --> hardware jump. Like they understand what machine code is, and what CPU registers are, but can’t understand how a CPU with baked in hardware instructions (i.e. a seemingly fully deterministic piece of hardware) can drive transistors to high or low voltages in a random way.
The key is to see all software as hardware, and to envision the CPU as many many light bulb switches, with some wired into each other, creating flip/flopping latches.
Once you get the idea of a flipflop, you can maybe then start to understand how all you really want from the switches is to output a switch configuration that encodes a value in some representation. The switches are all initialized in some state, but then drive a known flipflop path towards a desired value, and this happens millions of time a second, often in parallel with isolated switches, or with switches that are virtually segmented from each other, or switches that can chaotically interact with each other