The "Programmability Challenge"

Using JCL or CLIST (or ksh, or csh!), not assembler:

This page grew from a friendly lunch-time debate with a colleague who only knows MVS, and sees nothing primitive about JCL. I came up with a short list of trivial tasks (trivial on CMS, that is) and asked him to do them on his system. He's a very gifted programmer, but he struggled with the first item for two weeks before giving up. It's just very hard to do things in MVS.

Not only is CMS's command environment far easier to use than most other systems', but it also provides more expressive capability. The comparison is especially harsh for MVS since MVS has such paucity of expression. MVS sites usually buy expensive products (schedulers, file manipulation utilities, report distribution systems) to compensate for the difficulty of doing things using MVS builtin facilities. To me, working with MVS is like trying to paint a wall with a toothbrush. Unix, and MS-DOS, in contrast, can implement quite a few of them just as easily as CMS... but not all of these (I'll illustrate an annoying complication for what should be a simple problem below). VM remains a very pleasant and productive development environment.

Let me talk about something that I found really annoying one day on Unix. I was issuing ls -l commands and saw inconsistent output from the command, as shown by excerpts taken from my Sparc's web server cgi-bin and my personal /bin directories:

drwxr-xr-x   2 root     other        512 May 31  1995 CVS
-rwxr-xr-x   1 root     other        379 May 31  1995 archie
-rwxr-xr-x   1 root     other        409 May 31  1995 calendar
-rwxrwxrwx   1 root     other        201 Apr  3 17:14 cookie1
-rwxrwxrwx   1 root     other        201 Apr  3 17:14 cookie2
-rwxr-xr-x   1 root     other        151 May 31  1995 date
-rwxr-xr-x   1 root     other        384 May 31  1995 finger
-rwxr-xr-x   1 root     other        172 May 31  1995 fortune
-rwxr-xr-x   1 root     other      40960 May 31  1995 imagemap
-rwxr-xr-x   1 jeff     staff         40 Mar 17  1995 fixroute
-rwxr-xr-x   1 jeff     staff     180224 Mar 24  1995 ghostview
-rwxr-xr-x   1 jeff     staff      34094 Mar 24  1995 gzip.doc
-rwxr-xr-x   1 jeff     staff         53 Jun  8  1995 hjuntar
-rwxr-xr-x   1 jeff     staff        105 Jul 10  1995 lower
-rw-r--r--   1 jeff     staff       2958 Mar  3  1995 pclient
-r-xr-xr-x   1 jeff     staff       3223 Feb 23  1995 pclient.perl
lrwxrwxrwx   1 jeff     staff         12 Feb 23  1995 pftp -> pclient.perl
lrwxrwxrwx   1 jeff     staff         12 Feb 23  1995 ptelnet -> pclient.perl
-rwxr-xr-x   1 jeff     staff     670992 Oct 23 10:54 the-2.0P1
-rwxr-xr-x   1 jeff     staff         41 Jun  5  1995 wwwlog
lrwxrwxrwx   1 jeff     staff         32 Nov  3 16:17 x -> /home/jeff/bin/the-2.0P1
Notice how the column normally containing the year contains a time-of-day for two of the entries. This shows up in other parts of my file tree. Imagine the aggravation of writing a little script that lists the files, tries to sort by date, and then erase the oldest file, when it turns out that some files have a time instead of a year in a particular column! Try to find an explanation in a man page, too! It's silly things like this that make Unix a pain to program in (or make people absurdly proud for having memorized foolish idiosyncracies), and fragile as programs encounter surprise conditions.

[ Prior page | Next page | Top page ]