On 2/21/21 9:32 PM, G. Branden Robinson wrote:
At 2021-02-21T20:34:55-0600, Will Senn wrote:
All,
So, we've been talking low-level design for a while. I thought I would
ask a fundamental question. In days of old, we built small
single-purpose utilities and used pipes to pipeline the data and
transformations. Even back in the day, it seemed that there was
tension to add yet another option to every utility. Today, as I was
marveling at groff's abilities with regard to printing my man pages
directly to my printer in 2021, I read the groff(1) page:
example here:
https://linux.die.net/man/1/groff A more up to date copy is
available at the Linux man-pages site.
https://man7.org/linux/man-pages/man1/groff.1.html
I just picked the first hit in google :) shoulda known better. However,
it's the same text that's in my mac's install (Mojave).
What struck me (the wrong way) was the second
paragraph of the
description:
The groff program allows to control the whole groff system by command
line options. This is a great simplification in comparison to the
classical case (which uses pipes only).
What strikes _me_ about the above is the
awful Denglish in it. I fixed
this back in 2017 and the correction shipped as part of groff 1.22.4 in
December 2018.
Mac Mojave: Groff Version 1.19.2 3 July
2005 GROFF(1)
Here is the
current plethora of options:
groff [-abcegilpstzCEGNRSUVXZ] [-d cs] [-f fam] [-F dir] [-I dir] [-L arg]
[-m name] [-M dir] [-n num] [-o list] [-P arg] [-r cn] [-T dev] [-w name]
[-W name] [file ...]
Now, I appreciate groff, don't get me wrong, but my sensibilities were
offended by the idea that a kazillion options was in any way simpler
than pipelining single-purpose utilities. What say you? Is this the
perfected logical extension of the unix pioneers' work, or have we
gone horribly off the trail.
I'd say it's neither, and reflects (1) the
limitations of the Unix
filter model, or at least the linear topology of Unix pipelines[1]; and
(2) an arbitrary set of rules determined by convention and common
practice with respect to sequencing.
snip...
Very informative post, Branden. I appreciate the details. I gotta read
more code :).
Will