Old VMS programmer here. In addition to the above, the thing I remember is that there was more of everything in VMS, and it was all more complicated.
Unix has files which are just strings of bytes. VMS had those, but also several (or many) other file types with records and indices kind of like a database, and a library of functions for each different file type.
Unix has processes. VMS had processes and jobs -- a job is a group of processes, when you log in you start a job, all the subprocesses you start in that login session belong to that job etc. So there are functions for dealing the jobs as well as processes.
Unix has environment variables. VMS had logical names which could be used in a similar way, but there was a process logical name table, a job logical name table, and a system logical name table, and functions for dealing with all of them.
And on and on in this style. Whether you see this as an advantage or disadvantage depends on whether you have an application that can use some of these features, so you don't have to write them yourself as you might have to in Unix.
In addition to that, as the link above explains, VMS had facilities that early Unixes just didn't have, such as clustering - you could connect several VAXes to a common shared file system and share computational load. Also there was DECNET, a complete networking stack, a parallel
universe to TCP/IP (which was not so pervasive in the 1970s and 80s). Each of these contributed a couple of thick binders to that wall of documentation.
The VMS manual set was delivered on a pallet! It was bigger and heavier than most of the later VAX computers.
- At the time Olsen made that statement VMS had shareable libraries (DLLs), and none of the several Unixes I used did. The system administrator had to manually enable sharing of their code pages between processes if you wanted that, but they were there.
- The indexed files mentioned above were called ISAM. There were also utilities to reindex them, and load and save them to flat files with fixed column sizes; since that was the common way data was held in those days, it would be like having automatic conversion to and from JSON, XML and CSV now. At extra cost, there was a SQL-like query language, just different enough from IBM's SQL language not to get sued.
- The compilers were far ahead of Unix's. The FORTRAN77 had a lot of IBM extensions, so scientists could just compile their existing programs. It also had keyword extensions to work with the ISAM files. Later on, a newer and better Pascal came out, as well as an Ada.
- Terminal handling was handled by the kernel, in contrast to Unix where applications went off and read /etc/termcap and the user had to babysit eval tset in their dotfiles. If a command line program was nonresponsive, the input was queued instead of being half-duplex interleaved with program output as Unix still does it.
- The symbolic debugger was far ahead of Unix's adb.
My favorite feature of logical names was that they didn't just point to directories -- they could be a search path!
To test new code, all I had to do was create a directory to hold my changes, and copy in just the files I wanted to update. Set the logical name aliasing the code location to search first in my "branch" directory, then in the main directory. Any code in found the top-level search location takes precedence over the main directory.
Boom! Instant branches, but supported at the OS level.
Old VMS programmer here. In addition to the above, the thing I remember is that there was more of everything in VMS, and it was all more complicated.
Unix has files which are just strings of bytes. VMS had those, but also several (or many) other file types with records and indices kind of like a database, and a library of functions for each different file type.
Unix has processes. VMS had processes and jobs -- a job is a group of processes, when you log in you start a job, all the subprocesses you start in that login session belong to that job etc. So there are functions for dealing the jobs as well as processes.
Unix has environment variables. VMS had logical names which could be used in a similar way, but there was a process logical name table, a job logical name table, and a system logical name table, and functions for dealing with all of them.
And on and on in this style. Whether you see this as an advantage or disadvantage depends on whether you have an application that can use some of these features, so you don't have to write them yourself as you might have to in Unix.
In addition to that, as the link above explains, VMS had facilities that early Unixes just didn't have, such as clustering - you could connect several VAXes to a common shared file system and share computational load. Also there was DECNET, a complete networking stack, a parallel universe to TCP/IP (which was not so pervasive in the 1970s and 80s). Each of these contributed a couple of thick binders to that wall of documentation.
The VMS manual set was delivered on a pallet! It was bigger and heavier than most of the later VAX computers.