On 6/12/23, G. Branden Robinson <g.branden.robinson(a)gmail.com> wrote:
To bang an old drum of mine, while Unix culture pats itself on the back
for economizing keystrokes with an ad hoc compression scheme for every
name in sight, it too often overlooks what discarded in pursuit of this
form of minimality: clarity, lack of ambiguity, and ease of acquisition
by newcomers.
IMO, one area where Unix is severely deficient is online help for the
novice or casual user. man pages are fine if you already know the
command you want to use and just need to know details about options
and switches. But man pages are utterly useless if your question is
"what command do I need to use to do X?"
The Unix problem of non-obvious command names is made worse by some of
the commands whose names are obscure in-jokes. The worst offender is
probably the biff utility. This is the command that lets you set
notifications for incoming email. Why biff? Because a friend of the
guy who wrote the utility had a dog named Biff who used to bark at the
mailman.
Most operating system ABIs, Unix included,
don't have a formalized
mechanism for dealing with the differences between startup semantics
of various programming languages. They deal with the problem in an
ad-hack fashion. The one exception that I know of is VMS (now
OpenVMS). Tom Hastings was the architect who designed the original
VAX/VMS ABI. He was aware from the get-go that several programming
languages had to be supported and he made sure that his design was
general enough to allow programmers to write routines in the most
suitable language for them, to mix and match modules written in
different languages in the same program, and to easily make calls from
one language to another. It was a stroke of genius and I haven't seen
its like in any other OS (several times I've wished it was there,
though).
Thanks for mentioning this. I think you had pointed this out some
months ago, but I had difficulty remembering the details of "who had
solved the ABI problem the right way a long time ago", but could not
remember enough of it to dredge it up even with repeated searches.
Unfortunately Google remains stymied even by the quite explicit terms
Try "openvms common language environment" in Google. The Common
Language Environment (CLE) is the official name for the architectural
rules that facilitate multi-language programming.
VMS (officially OpenVMS; I hated that marketing name when it was first
proposed and I hate it now) is still alive and supported by a company
called VMS Software, Inc. (VSI). Here is a pointer to their document
OpenVMS Programming Concepts, Volume II, which describes the CLE in
detail:
https://vmssoftware.com/docs/VSI_PROGRAM_CONCEPTS_VOL_II.pdf
-Paul W.