VMS is UNIX spelled backwards (almost)
#M.CONDICT
mikec at hou2g.UUCP
Thu Nov 29 05:29:05 AEST 1984
Those VMS-ites who enjoy denigrating UNIX should show some respect. Virtually
every feature in the early versions of VMS that made it useable (barely!) was
copied from UNIX -- this is well known within the original development group,
which was headed by a UNIX-lover (gasp, gasp!). In fact, Version 1.0 of VMS
was a system apparently designed by concatenating the RSX-11M Operating Sys.
manuals with the UNIX Version 7 manuals, then shuffling or deleting a few
pages. I guess the idea was to be upward compatible with RSX while putting in
all the UNIX goodies as well. Here are a few examples for your amusement:
o They saw the utility of a command processor as powerful and flexible as the
Bourne shell, so they tried to put one in VMS. Unfortunately, what they
ended up with (DCL) was an interpreter for, roughly, a subset of FORTRAN.
Whoopee!
o The notion of standard input and output was implemented through the use of
logical names SYS$INPUT, SYS$OUTPUT. Unfortunately, many standard commands
do not read SYS$INPUT or write SYS$OUTPUT, and anyway they forgot to put
any I/O redirection syntax into the shell. Very useful indeed!
o Unix pipelines were implemented as VMS mailbox devices. Unfortunately, they
neglected to put anything in the shell that would automatically construct
such mailbox-pipelines and connect commands through them. In fact, by
default, users are not even given permission to make such mailbox devices.
o Tree-structured file systems are wonderful, so they just had to have them
in VMS. Unfortunately, they attempted to overlay the notion on top of the
RSX "two-dimensional array of directories" syntax, producing the wonderfully
elegant notation "DB0:[USER.GLERP]WHATEVER.FTN;13" for a file that in
UNIX would be something like "/usr/glerp/whatever.c". Also, to ensure
compatibility with RSX and avoid frightening users, they restricted each
name in a directory path to nine letters or digits, upper-case only, thank
you very much. Oh, and they forgot to put in the device-independent, single
directory tree -- every file name must be preceded by the device-name on
which the file resides, unless this device is the default. Strange things
are done with logical names in a futile attempt to relieve the user from
knowing the full device name of various commonly used files and devices.
o They weren't impressed at all with the UNIX "&" construct for invoking
background processes, so they ignored it, almost. By writing a program
you could get a parallel process started up, but don't ask the shell to do
it for you (in fairness, they've since implemented a very badly designed
"SPAWN" command, intended to serve this purpose).
o As in RSX, they had a facility for getting user-supplied arguments into
user-written programs. Unfortunately, as in RSX, the shell could not be
induced to pass such arguments to such programs, which had to be invoked
by saying "RUN program". This also, apparently, was intended to avoid
frightening users, most of whom were assumed to be FORTRAN-hacking engi-
neers who don't trust software anyway.
The most recent time I was forced to use VMS, I promptly implemented a DCL
program that provided a UNIX-like shell, with I/O redirection, "echo" and
"read" commands, background processes, a history mechanism and even a
rudimentary pipe-line facility. Its utility was somewhat limited by the
above-described brain-damage, however, and I eventually switched to Eunice.
I called the program DSH (for Dumb Shell) and it is still in use at NYU as
far as I know.
If I've made any statements that are not true of the latest and greatest
version of VMS, it is because I escaped from VMS at Version 3.0. Please
forgive any such inaccuracies and may I roast in hell for defaming DEC's
finest operating system.
Michael Condict ...!{allegra|decvax}!hou2g!mikec
AT&T Bell Labs
Holmdel, NJ
More information about the Comp.unix.wizards
mailing list