Using the plumbing metaphor of "pipes" in the shell, it always seemed to me like you shouldn't need to use cat to print out a file. You should just be able to type < filename and hook up stdin to stdout to read it that way
It turns out the issue is that stdin doesn't push, it needs to be pulled. It's not "pressurized". cat acts as a kind of "pump" to push the data out
I have thought about this metaphor a lot