We can blame von Neumann (et al) and his infernal architecture, where memory stores both instructions and data.
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.
If you want to reason that the hardware is at fault, you should be blaming the Eckert-Mauchley architecture.