And on the other hand, text streams are easy to work with, because ad-hoc tools can be written to work with them, rather than having to wrestle with strongly typed libraries and being constrained to languages compatible with the libraries that define those types. Imagine a web written using CORBA RPCs over rendering APIs, rather than HTML over HTTP.<p>You can argue that HTML has inherent syntax and semantics, but of course server and client can have slightly different ideas, and it all still works, mostly. The same is largely true of shell programming using pipes: different stages in the pipe expect certain formats, for regular expression or field extraction, and format pasting together, etc. The format is easy to eyeball and easy to test on the shell REPL, so in practice the problems aren't large.