Building a CPU from gates is something at least some programs did or do; I know I did it in the late 90s. We used simulated gates where for instance an AND gate could include any number of inputs and we didn't have to worry about the electronic aspects of that. It was a terrible CPU but it could add, subtract, multiply, divide, and take conditional branches... as complicated as a modern CPU is from that simple starting point, it is in a lot of ways just a lot of incremental steps up from there. It is the original "how does a CPU work at all from just these gate things" that is the real mind-blower.
I do think it's worth while. Perhaps even more so, in its own way, in this era of AI. If you understand that aspect, it's all just progressively larger collections of numbers from there and larger numbers of gates for processing them. It gives you the justified confidence that you can work your way through any problem, eventually, because you know you can get to the bottom. Or, at least, close enough to the bottom for any problem you're likely to encounter in a programming career. I still have never had the occasion to truly "learn assembler" but understanding the gate-level CPU has still been a great help in understanding assembler-sorts of things.
jerf•11m ago
I do think it's worth while. Perhaps even more so, in its own way, in this era of AI. If you understand that aspect, it's all just progressively larger collections of numbers from there and larger numbers of gates for processing them. It gives you the justified confidence that you can work your way through any problem, eventually, because you know you can get to the bottom. Or, at least, close enough to the bottom for any problem you're likely to encounter in a programming career. I still have never had the occasion to truly "learn assembler" but understanding the gate-level CPU has still been a great help in understanding assembler-sorts of things.