Comment by thwarted
16 hours ago
We can blame von Neumann (et al) and his infernal architecture, where memory stores both instructions and data.
16 hours ago
We can blame von Neumann (et al) and his infernal architecture, where memory stores both instructions and data.
You can blame whoever invented the word "if", as soon as you can branch based on data you can just write an interpreter that turns data into instructions, no matter the architecture.
You need more than if for Turing completeness though.
You need conditionals and loops. Recursion counts as looping.
Correct. You need at least 2 ifs.
4 replies →
Or lambda. Or Forth commands. You can create an 'if' with few atoms.
FWIW, you can make software that runs on Harvard architecture chips. They feature distinct address spaces for ROM and RAM. It's been a while, but it's how Atmel/Microchip AVR micros work.
https://en.wikipedia.org/wiki/Harvard_architecture
That said, I'm unaware of any programming language (outside assembler) that takes that split to heart in a higher-level way.
Not really, most of these configuration as code systems are not executed directly on the CPU but rather interpreted in which case a separate data-only memory would not stop anyone.
von Neumann did not invent the von Neumann architecture. Not even a little bit.
If you want to reason that the hardware is at fault, you should be blaming the Eckert-Mauchley architecture.