Abstractions aren’t illusory, they are definitions that ideally make things easier to reason about.
A pipe in the Linux kernel is a real thing. The name is metaphorical because it’s supposed to evoke the image of things flowing through it but that’s where it ends. A Linux pipe makes no effort to pretend that it behaves like a physical pipe. But it does abstract the implementation details about how data is sent to and retrieved from it.
An email program where the user is shown sheets of paper and envelopes is an illusion. The underlying implementation now has to modify its behavior to fit the physical properties of paper and envelopes to some degree. Letters only have one destination, CCing and BCCing now means copying and sending bundles.
So do emails themselves. It's in the name: it's "electronic mail". The underlying implementation has modified its behavior to fit the physical properties of how letters usually work to some degree. You think an email is something different than a text message, or a Slack message, or even a website or a video, when it is information that reached you by electrons moving a certain way in a wire. Or multiple wires. Or electromagnetic fields in space. Or photons in strands of glas or plastic.
A pipe in the Linux kernel is a real thing. The name is metaphorical because it’s supposed to evoke the image of things flowing through it but that’s where it ends. A Linux pipe makes no effort to pretend that it behaves like a physical pipe. But it does abstract the implementation details about how data is sent to and retrieved from it.
An email program where the user is shown sheets of paper and envelopes is an illusion. The underlying implementation now has to modify its behavior to fit the physical properties of paper and envelopes to some degree. Letters only have one destination, CCing and BCCing now means copying and sending bundles.