pipes have an inherent data-first natural order processing that is counter to most programming languages
<take this file> | <do this to the file> | <then do this>
And UNIX philosophy says that is a good thing. I takes a universal UNIX technique (the pipe) and the programs just have to concentrate on processing input and output.
Sure you CAN use the args. Look up the fucking specific flag and syntax after the bajillion flags in the man pages (which all seem to lack good examples that would communicate this much more quickly.
But the cat | jp seems FAR more UNIXy. I agree, it is stupid to criticize cat there. This is pointless fad thinking by the author. Ignore it. There MAY be certain performance advantages possibly in certain high volume conditions like large files or something similar, if the program has "better" file processing than cat + a pipe. Maybe.
Anyway, I really like the data flow of a pipe command like:
cat <somefile> | sort | head -n 10
Meanwhile, this is how a programming language would look (one liner version):
head( sort( cat(<somefile) ), 10)
The logical flow of that, where you get data, sort it, then head it, is natural in the piped instance, but the practically every language ever version of it you need to parse the expression first, extract the inner steps, subparse / resolve the args to the head, then get the value.
The expression is "inside out" in a normal progarmming language. You have to turn it inside out: PUSH head op on the stack, PUSH sort onto the stack, resolve CAT, POP sort op, POP stack op.
The CLI + pipes has no stack, just a handoff
I have started doing "data first" programming a lot with say Groovy, where you can do:
String passed_in_filename = "/path/to/file"
passed_in_filename.
with { File.lines(it)}.
with { it.sort()}.
with { it.head(10)}
with a lot of the I/O or transform data code I write. (The with construct in groovy takes the output of the invoked code and then passes it to the provided closure, so I can chain the closures in the natural way that piped output works on the CLI)