The following from Gödel, Escher, Bach caught my attention:
Unlike any previosuly designed machine, [Babbage’s Analytical Engine] was to possess both a “store” (memory) and a “mill” (calculating and decision-making unit). Babbage had a vision of numbers swirling in and out of the mill under control of a program contained in punched cards . . .
What is this if not the von Neumann architecture?
The development of the multiplication algorithm played an important role in the history of the Analytical Engine because it led Babbage to the invention of the anticipating carry to speed the addition of the partial products. The complexity of the anticipating carry apparatus led him in turn to the clear separation of the functions of the mill and store, a concept that did not clearly emerge in modern computers until the work of von Neumann.
John von Neumann was a genius, but unless I’m overlooking something, it seems fairer to say that modern computers use the Babbage
von Neumann architecture.
Of course, you have to take the good with the bad, so maybe the Babbage von Neumann bottleneck is, too, a more appropriate term.