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