> Separation of instructions and data is artificial. Reality has no such separation. A general purpose system needs not to have them either; it's a design feature, not a bug.

Note: I'm parsing 'needs not to have them' as 'needs (not to have them)'. If you were using 'needs not' as an alternate for 'does not need' then never mind, although I'd guess that is not the case because the alternative for 'does not need' would be 'need not' rather than 'needs not' and you probably wouldn't make that mistake.

Doesn't this imply that it is not possible to implement a general purpose system on any of our current computing devices?

For all our current computing devices everything that can be done on devices that do not separate instructions and data can also be done on devices that do, and vice versa.

Different layers of abstraction. You can look at it this way: the machine separating instructions and data can still emulate a machine that doesn't. Within the inner machine, there is no such separation. Outside of it, but still within the outer machine, there is. The rules of the outer machine don't affect what's running in the inner one, but also what's running in the inner one can't affect the outer machine directly.

But I guess a different way of framing it is, what is "code" vs "data" for the machine is not the same as what we talk about discussing the LLM running in it. For the outer machine, all tokens are pure data.