[comp.os.misc] OS features

Mark_G_Woodruff@cup.portal.com (12/13/87)

Following are the replies to my query about operating system features people
liked.  Comments followed by a bullet (yes, it's really a lower case o)
are summaries of what the person said.  Comments followed by a right
arrow (yes, it's really a greater-than sign) are more-or-less verbatim
(minor editing changes only).  Anything in brackets are my own remarks.

From: Michal Young <young@bastille.UCI.EDU>

  o  Device-independent stream I/O, for files and for terminals (a la Curses)

  o  A shell command language with control structures and job control (a la
     csh)

  o  Remote command execution and remote file systems (a la Sun NFS)

  o  Reentrant libraries (a la Vulcan [a HORRIBLE os])

  o  Dynamic run-time linking (a la MVS [or Smalltalk])

  >  Command completion   (The DEC OS's get this better than Unix)
     [Could you please elaborate?]

  o  History substitution (a la csh)

  >  Synchronous mail notification (before a prompt)
     [Again, please explain.]

From: sun!RUTGERS.EDU!uwvax!ncc!alberta!edson!tic!ruiu (dragos)

  >  The one thing I miss on unix from VMS more than anything is pressing
  >  control   T and seeing the cpu time or the i/o changing in my program,
  >  and knowing wether it's just the system thrashing or wether something
  >  is seriously hung.  It's a little thing... Boy, if I had Kernel
  >  source... :-)

  >  VMS has another nice feature... it degrades gracefully under pressure.

From: Paul Fuqua <pf@relief.csc.ti.com>

  >  Tops-20:  the COMND jsys -- completion and help in every command.
     [Please explain.]

  >  (MIT version) Chaosnet as a device -- "copy foo cha:xx.send_pf" would
  >  copy the foo file as the text of a "send" ("write" in BSD Unix) to user
  >  "pf" on host "xx" via Chaos."

  >  Lisp Machines:  No clear distinction between OS, environment, and
  >  programs -- all functions are treated equally, all processes are visible.
  >  Easy accessibility to all functions, variables, and constants --
  >  prototyping is much easier when one can steal from existing examples.
     [Smalltalk does this well.]

From: ian@sq.com (Ian F. Darwin)

  >  For a brief description of the salient features that I like
  >  about UNIX, please read the paper

  >  The UNIX Time-Sharing System
  >  D. M. Ritchie, K Thompson
  >  CACM 17 N 7, July 1974, pp 363.
  >  Revised edition in Bell System Tech J, V57, N6, July-Aug 1978.

  >  I have used more operating systems than I have fingers, and the
  >  reasons I prefer UNIX are in the paper, for the most part.

From: meissner@xyzzy.DG.COM

  Features in AOS and AOS/VS

  o  Generalized searchlists (where the searchlist is searched for all file
     accesses instead of just for execution requests)

  o  More powerful access control and more permissions
     [The best example I've seen of this is the Novell Advanced Netware
     package.  Novell allows you define multiple groups of
     individuals, name them, then give various rights for each file
     or directory according to group as well as individual names.  The
     result is effective, powerful, and, when combined with their user
     interface, very easy to use.]

  o  Screen-editing in all console I/O (so that your basic editing functions
     are always available)

From: John Hanley <hanley@cmcl2.NYU.EDU>

  >  Most important feature: coherent design

  o  A standard calling convention so that programs in one language can
     call programs in other languages (a la VMS)

  o  Integrated security

From: gerry@uunet.UU.NET (G. Roderick Singleton)

  >  I still like CP/M. For all its faults, it provided phenomenol control
  >  over the installed evironment even without sources.  The CP/M community
  >  added to its usefulness.

  o  A rich tool set (a la UNIX)

From: uunet!nuchat!sugar!peter

  >  Setuid bit in UNIX. Brilliance.
  >  UNIX directory structure. Inodes/links.
  >  Berkeley symbolic links.
     [Please explain.]
  >  VMS/AmigaDOS symbolic names.
     [Please explain.]
  >  RMD in RSX.
     [Please explain.]

  >  Signals in UNIX: in general being able to write interrupt-like handlers
  >  in a process context in a high level language.

  >  Message passing between totally isolated parts of the O/S in AmigaDOS.
  >  Makes it easy to add drivers.

  >  Being small and tight is good. Taking features out if it helps is good.
  >  Version 7 is a better designed O/S than either System V or Berkeley.

From: marzullo@gvax.cs.cornell.edu (Keith Marzullo)

  o  An integrated environment, and an open architecture

  >  I also have really appreciated all systems that support spy hooks, or
  >  what Jeff Mogul calls packet filters in his paper in the latest SOSP.
  >  Not only have they served as another way to quickly prototype protocol
  >  families, they allow one to write some very powerful monitoring tools.
     [Can you tell us more?]

From: sun!texsun!killer!jfh (The Beach Bum)

  >  RT-11.  I liked having real hardware sitting under my software.  When I
  >  wanted it.

From: sun!rutgers.edu!moss!ho95e!wcs (Bill Stewart)

  >  Features I've liked/disliked
  >
  >  Good-Automagic version files, a'la VMS.  Whenever you change a file,
  >  the old one is kept until you explicitly remove it.
  >
  >  Bad-Hierarchical file systems where you need different syntax for each
  >  level, or need to know what disk something is on, like DOS or VMS.
  >
  >  Bad-Operating Systems that "know" what your files look like
  >  (e.g. records).  It can be valuable to have headers in the
  >  file that identify it, but the OS should stay out of the way.

From: uunet!pwa-b!mmintl!franka (Frank Adams)

  >  I was very fond of the command processing on TOPS/20.  In particular:
  >
  >  Typing part of a command and question mark, the system tells you what
  >  commands start with the given prefix.
  >
  >  Typing escape in mid-command, the system guesses what you want next,
  >  complete with "guide words".  (If you don't like it, you can back up, of
  >  course.)
  >
  >  The fact that the commands were well-named was also a big plus.

From: hoptoad!pdnbah!reggie (George Leach)

  o  A hierarchical file system

  o  Heuristic command processing (a la above and Unix 8th edition)

From: "Michael A.  Patton" <MAP@AI.AI.MIT.EDU>

  >  It is really unfortunate that you set the criteria like you did!  I
  >  just received your message and it's already after 1 Dec 87.  There is
  >  an operating system (I.T.S.) which has had many features that are far
  >  superior (and it's had them for more than 10 years) but few people are
  >  familiar with it.  I would really have liked to describe these, but
  >  since the time limit was up before I got the request, I guess the
  >  world will go on losing for another ten years.

     [I tried to send you mail asking for more information, but your site
     insisted you didn't exist.  Could you post a listing of all those
     features you talk about?]

From:  Mark.G.Woodruff@Cup.Portal.Com

  o  Virtual Machines.  They allow you to code as close (or far) from the
     hardware as you like without sacrificing security.  They also aid
     tremendously when writing operating systems or hardware-dependent
     software.

  o  A common command language for both the editor and the shell.  With
     Rexx and Xedit under VM, you can use the same command language to
     write your editor macros and you shell scripts.  This also makes the
     editor a much more powerful tool for software building than any
     equivalent under Unix.

  o  An easy-to-learn command language.  Rexx is far easier to learn and use
     than any other interpreted language I've seen (including Basic, the
     shell and cshell languages, Logo, and Smalltalk).

  o  An object-oriented file system.  The designers of Unix made a serious
     mistake in forcing all objects in their file system to have the same
     format.  A much better approach would be to define a common protocol,
     then let each object decide how best to implement it.

  o  Long command and option names that can be abbreviated easily.  Unix
     is impossible for a novice to use without a manual in large part due
     to its poor user interface in this regard.

  o  Quiet commands.  There should be some way of making commands keep
     quiet under normal operation.  There isn't under VM or MS-Dos.

  o  A real-time kernal.  Essential for a great many tasks.

  o  A scheduler that takes terminal I/O into account (this is why VM can
     handle significantly more users gracefully than any other OS on a
     similar class of machine).

  o  Contiguous file allocation on large devices.  The additional overhead
     of discontiguous file allocation is unwarranted on modern hardware.

In closing, I'd strongly suggest any OS designers to investigate VM and Novell
Netware.  These two systems contain too many unique and useful ideas to be
overlooked.

Mark

hydrovax@nmtsun.nmt.edu (M. Warner Losh) (12/15/87)

In article <1971@cup.portal.com>, Mark_G_Woodruff@cup.portal.com writes:
[[ Mark is summarizing responces that he got and asks for some elaberation.]]

>   >  Command completion   (The DEC OS's get this better than Unix)
>      [Could you please elaborate?]
>   >  Tops-20:  the COMND jsys -- completion and help in every command.
>      [Please explain.]
Command completion:
This is a simple concept.  When the user has typed in enough of the command
to make it unique and hits a specified key (usually ESCAPE in TOPS-20), the
rest of the command appears "by magic".  This may be difficult to understand
from a unix point of view, since all of the commands are cryptic beyond
believe (they can be learned, but it is painful).  In contrast the TOPS-20
and VMS commands are long and verbose, allowing you to know EXACTLY (or
nearly so) what is going down.  For example, on TOPS-20, to print a file
you type
@ PRint (file) Foo.txt /Copies:2
Where the uppercase letters denote what the user typed, then hit esacpe
to complete rest of the command.  The stuff in parens are noice words
that allow the user a quick mneumonic reference.  These words aren't
stictly needed.  I'm not exacltly sure about the number of letters in
this command, but they are close.  Now, you say, this is really stupid 
that I need to type an escape key many times for each command.  You don't
have to, as the EXEC on TOPS-20 will alos accept:
@ PR FOO.TXT/C:2
@ PRIN FOO.TXT/COP:2
etc.
You needn't use the command completion, but it was there if you got
stuck.  Very useful for learning the system.

>   >  Most important feature: coherent design
An obvious plug for VMS...... :-)
>   >  VMS/AmigaDOS symbolic names.
>      [Please explain.]
Symbolic name, also called logical names are in a way similar to
environmental variables in UNIX.  They differ in that they can be
used as file names (that is the OPERATING SYSTEM understands them
as such) in any contect where a file name would occure.  They have
the advantage that you can write code like:
	fopen ("SPOOL_DIR:tmp", "w");
and have SPOOL_DIR point to something useful.  This means that you
need not recompile your program to move the spooler directory.  You
can also change this, in certain cased, WHILE THE PROGRAM is running.
From what I have seen, it appears that the symbolic names (which
I read as logical names.  Somebody correct me if I'm wrong) to 
be a superset of enviornment symbols.

			Warner Losh
...!lanl!unm-la!unmvax!warner%hydrovax
-- 
bitnet:	lush@nmt.csnet			M. Warner Losh
csnet:	warner%hydrovax@nmtsun
uucp:	...{cmcl2, ihnp4}!lanl!unmvax!nmtsun!warner%hydrovax
	...{cmcl2, ihnp4}!lanl!unmvax!nmtsun!hydrovax
Warning:  Hydrovax is both a machine, and an account, so be careful.

chris@spock (Chris Ott) (12/15/87)

Mark Woodruff writes:
> o  Contiguous file allocation on large devices.  The additional overhead
>    of discontiguous file allocation is unwarranted on modern hardware.

     One of the features of AOS/VS (Data General) that I like is its
variable element size. Files are made up of elements of a given number
of blocks. For example, if a file's element size is 10 blocks, the file
will grow in chunks of 10 blocks at a time. This is great when you're
setting up a file that you know is going to be large, and you want to
quickly access the data: just set the element size to 30000 or something.
Likewise, you don't want to take up 30000 blocks for a file that's only
going to be a few lines long, so you can set the element size to 1 block,
and only 1 block will be allocated at a time. I haven't seen this feature
on any other operating system. Has anyone else?

-------------------------------------------------------------------------------
 Chris Ott
 Computer-Aided Engr. Lab                  Beware of low-flying butterflies.
 University of Arizona

 Internet: chris@spock.ame.arizona.edu
 UUCP: {allegra,cmcl2,hao!noao}!arizona!amethyst!spock!chris
-------------------------------------------------------------------------------

karl@mumble.cis.ohio-state.edu (Karl Kleinpaste) (12/16/87)

chris@spock writes:
   Mark Woodruff writes:
   > o  Contiguous file allocation on large devices.  The additional overhead
   >    of discontiguous file allocation is unwarranted on modern hardware.

	One of the features of AOS/VS (Data General) that I like is its
   variable element size. Files are made up of elements of a given number
   of blocks. For example, if a file's element size is 10 blocks, the file
   will grow in chunks of 10 blocks at a time...
   ...I haven't seen this feature
   on any other operating system. Has anyone else?

Computer Consoles, Inc's PERPOS of a couple of years back supported
contiguous file creation.  You had to give it the total size of the
file required, as I recall, no file growth once it's created.  PERPOS
(a fault-tolerant UNIX derivative) was intended for a heavy
transaction-oriented system, which made this sort of use important.
-=-
Karl

george@rebel.UUCP (George M. Sipe) (12/17/87)

chris@spock writes:
>	One of the features of AOS/VS (Data General) that I like is its
>   variable element size. Files are made up of elements of a given number
>   of blocks. For example, if a file's element size is 10 blocks, the file
>   will grow in chunks of 10 blocks at a time...
>   ...I haven't seen this feature
>   on any other operating system. Has anyone else?

karl@mumble.cis.ohio-state.edu (Karl Kleinpaste) writes:
>Computer Consoles, Inc's PERPOS of a couple of years back supported
>contiguous file creation.  You had to give it the total size of the
>file required, as I recall, no file growth once it's created.  PERPOS
>(a fault-tolerant UNIX derivative) was intended for a heavy
>transaction-oriented system, which made this sort of use important.

Fair warning:  Description follows of product by a company with which I
have absolutely no association other than as a full time employee :-).

Tolerant's TX (a distant 4.2 derivative) allocates files by extents
rather that blocks.  Each file may have one primary extent and as many
secondary extents as necessary.  Both extent sizes may be from 1kb to
8mb in even powers of 2.  Each file system has defaults for both
primary and secondary extents (usually 8kb).  Extent sizes are set by a
setext() system call on files of null length.  An extentsize() library
call determines optimal extent sizes (to need only 1 inode) for a file
given an expected filesize.  Cylinder boundaries are taken into account
during allocation, free space is recombined on removal.  All system
commands (e.g. tar) set extents.  Existing programs benefit from the
addition of the setext() call, but run no worse without it then they
do on most other Unix systems.

This system is fully fault tolerant, designed for high performance
communications systems and OLTP applications (transaction management
is integral).
-- 
George M. Sipe,		Phone: (404) 662-1533
Tolerant Systems, 6961 Peachtree Industrial, Norcross, GA  30071
UUCP: ...!{decvax,hplabs,ihnp4,linus,rutgers,seismo}!gatech!rebel!george

mac3n@babbage.acc.virginia.edu (Alex Colvin) (12/17/87)

In article <3228@tut.cis.ohio-state.edu>, karl@mumble.cis.ohio-state.edu (Karl Kleinpaste) writes:
>    > o  Contiguous file allocation on large devices.  The additional overhead
>    >    of discontiguous file allocation is unwarranted on modern hardware.
See the article by P. Koch on DTSS File systems in the latest
Trans. on Comp. Sys.

mwm@eris.BERKELEY.EDU (Mike (My watch has windows) Meyer) (12/17/87)

Mark Woodruff writes:
> o  Contiguous file allocation on large devices.  The additional overhead
>    of discontiguous file allocation is unwarranted on modern hardware.

Unicos (Cray's System V for their hardware) has transparent support of
files with large contiguous chunks, and an IO system that takes
advantage of them.

Each unix file system is broken up into two or more partitions (these
aren't unix partitions, but are more like the BSD cylinder groups).
The first partition is dedicated to special files, most notably
directories. Blocks for a data file are allocated contiguously as long
as no one else needs blocks in the partition. File creation
round-robins through all but the first partition of the file system,
to give the processes writing each file as much time as possible to
grow the file.

Unicos also supports disk striping. The results work fairly well, but
I don't know how much is do to which activity.

	<mike

--
And then up spoke his own dear wife,			Mike Meyer
Never heard to speak so free.				mwm@berkeley.edu
"I'd rather a kiss from dead Matty's lips,		ucbvax!mwm
Than you or your finery."				mwm@ucbjade.BITNET

franka@mmintl.UUCP (Frank Adams) (12/17/87)

In article <561@amethyst.ma.arizona.edu> chris@spock.ame.arizona.edu (Chris Ott) chris%spock@amethyst.UUCP writes:
>     One of the features of AOS/VS (Data General) that I like is its
>variable element size. Files are made up of elements of a given number
>of blocks. For example, if a file's element size is 10 blocks, the file
>will grow in chunks of 10 blocks at a time. ... I haven't seen this feature
>on any other operating system. Has anyone else?

IBM's OS/MVS/whatever-they-want-to-call-it has this in spades.  (You don't
really *want* it in spades, but that's how they have it.)  The increment
size is specified not per file, but per open file.  Actually, there is an
underlying segment size, but new chunks of the file are allocated in units
of the specified size.  You also specify the initial size, which may be
either smaller or larger than later chunks.
-- 

Frank Adams                           ihnp4!philabs!pwa-b!mmintl!franka
Ashton-Tate          52 Oakland Ave North         E. Hartford, CT 06108

peter@sugar.UUCP (Peter da Silva) (12/17/87)

In article <1971@cup.portal.com>, Mark_G_Woodruff@cup.portal.com writes:
> From: uunet!nuchat!sugar!peter
>   >  Berkeley symbolic links.
>      [Please explain.]

You create a symbolic link from "/usr/joe/blah" to "/work/acct/fred/baz". The
link is actually the string "/work/acct/fred/baz".

>   >  VMS/AmigaDOS symbolic names.
>      [Please explain.]

In AmigaDOS:

1> LIST SYS:C
Directory "sys:c" on Wednesday 16-Dec-87
Run                         2324 rwed Today     05:57:30
Fault                       2728 rwed Today     05:57:30
Install                     1800 rwed Today     05:57:31
...
1> ASSIGN C: SYS:C
1> LIST C:
Directory "c:" on Wednesday 16-Dec-87
Run                         2324 rwed Today     05:57:30
Fault                       2728 rwed Today     05:57:30
Install                     1800 rwed Today     05:57:31
...
1> ; You can do the same sort of thing under VMS.

This does the same sort of job as links: creates an alias for a file. It has
strong points and weak points.

>   >  RMD in RSX.
>      [Please explain.]

Realtime Memory Display. Shows processes and where they are in memory. The
best memory display type setup I've ever seen.

>   >  Being small and tight is good. Taking features out if it helps is good.
>   >  Version 7 is a better designed O/S than either System V or Berkeley.

This last cannot be too strongly emphasised.

> From:  Mark.G.Woodruff@Cup.Portal.Com
> 
>   o  Virtual Machines.  They allow you to code as close (or far) from the
>      hardware as you like without sacrificing security.  They also aid
>      tremendously when writing operating systems or hardware-dependent
>      software.

They also give you a performance hit. See above.

>   o  A common command language for both the editor and the shell.  With
>      Rexx and Xedit under VM, you can use the same command language to
>      write your editor macros and you shell scripts.  This also makes the
>      editor a much more powerful tool for software building than any
>      equivalent under Unix.

What about Emacs?

>   o  An easy-to-learn command language.  Rexx is far easier to learn and use
>      than any other interpreted language I've seen (including Basic, the
>      shell and cshell languages, Logo, and Smalltalk).

None of which are really terribly easy to learn.

>   o  An object-oriented file system.  The designers of Unix made a serious
>      mistake in forcing all objects in their file system to have the same
>      format.  A much better approach would be to define a common protocol,
>      then let each object decide how best to implement it.

I'd have to see this in action. My experience with IBM file systems has been
that they're like trying to read a menu in a dark restaurant wearing
sunglasses.

>   o  Long command and option names that can be abbreviated easily.  Unix
>      is impossible for a novice to use without a manual in large part due
>      to its poor user interface in this regard.

CMS is better???

>   o  A real-time kernal.  Essential for a great many tasks.

For a real-time machine, yes. For a time-shared machine, no. Personal
computers should be real-time. Mainframes shouldn't be.

>   o  Contiguous file allocation on large devices.  The additional overhead
>      of discontiguous file allocation is unwarranted on modern hardware.

How do you implement this without throwing away most of your file space to
fragmentation and/or having the overhead of frequent garbage collection?

> Mark

In closing, I'd like to ask why you made this survey only to completely
ignore most of it?
-- 
-- Peter da Silva  `-_-'  ...!hoptoad!academ!uhnix1!sugar!peter
-- Disclaimer: These U aren't mere opinions... these are *values*.

kolding@cory.Berkeley.EDU (Eric Koldinger) (12/18/87)

In article <3228@tut.cis.ohio-state.edu> karl@mumble.cis.ohio-state.edu (Karl Kleinpaste) writes:
>	One of the features of AOS/VS (Data General) that I like is its
>   variable element size. Files are made up of elements of a given number
>   of blocks. For example, if a file's element size is 10 blocks, the file
>   will grow in chunks of 10 blocks at a time...
>   ...I haven't seen this feature
>   on any other operating system. Has anyone else?
>
>Computer Consoles, Inc's PERPOS of a couple of years back supported
>contiguous file creation.  You had to give it the total size of the
>file required, as I recall, no file growth once it's created.  PERPOS
>(a fault-tolerant UNIX derivative) was intended for a heavy
>transaction-oriented system, which made this sort of use important.

OS/360/370/SVS/MVS had this feature beat by years.  When you create a file,
a painful process at best, you specify ALL of it's attributes, such as
logical record length, block size (yes, you set it yourself, not the system),
whether or not records are of variable size, and the amount of space the
file will take up.  It even allows for a somewhat limited expansion of the
file by allocating secondary extents which are allocated when the primary
extent is filled up.  However, you can only get 15 secondary extents and 1
primary one, so files can't grow forever, but with utilities the extents
can be merged to allow more growth, but again this is a painful process (seems
everything in MVS is painful, but maybe I just like Un*x too much).

[Eat hot death line-counting scum!]

		_   /|				Eric
		\`o_O'				kolding@cory.berkeley.edu
  		  ( )     "Gag Ack Barf"	{....}!ucbvax!cory!kolding
   	    	   U

irf@kuling.UUCP (Stellan Bergman) (12/18/87)

In article <1169@nmtsun.nmt.edu> hydrovax@nmtsun.nmt.edu (M. Warner Losh) writes:
>This is a simple concept.  When the user has typed in enough of the command
>to make it unique and hits a specified key (usually ESCAPE in TOPS-20), the
>rest of the command appears "by magic".  This may be difficult to understand
>from a unix point of view, since all of the commands are cryptic beyond
>believe (they can be learned, but it is painful).  In contrast the TOPS-20

No, it is not since I have exactly the same behavior on my HP-UX 'csh' (and
also on the 'tcsh' on the VAX 4.2BSD I'm running at this moment. And the
names are not fixed.  The commands just happen to be invoked by default by
the name of the file.  These names are beautiful and not so little amusing
therefore *easy* to remember.  They may be changed very easily (see next
comment of mine).

>and VMS commands are long and verbose, allowing you to know EXACTLY (or
>nearly so) what is going down.  For example, on TOPS-20, to print a file
>you type
>@ PRint (file) Foo.txt /Copies:2

Again in my 'csh' or 'tcsh' I'd write : "alias p lp", "alias print lp"
which would do a listing by either the single letter command 'p' or
the full name command 'print'.  But who would do such a stupid thing
to replace 'lp' with 'print' and thereby wasting almost a second typing
in superfluous letters :-).  As I usually say: I'm giving my computers orders
-- not writing novels...  Any military officer knows that orders should be
short and precise.
 
Bo Thide', Swedish Institute of Space Physics   UUCP: ...enea!kuling!irfu!bt

ok@quintus.UUCP (Richard A. O'Keefe) (12/18/87)

Concerning multiple-extent (dynamically allocated) contiguous files:

(1) The B6700 MCP provided multiple-extent files; very easy to use.
    Oodles of things you could say, very little you had to.
(2) Doesn't VMS provide a feature like this?
(3) Most versions of UNIX don't provide such a feature,
    but read appendix K of the POSIX book.  (Anyone know what is
    happening about this?)

jesup@pawl22.pawl.rpi.edu (Randell E. Jesup) (12/18/87)

[comments about tops-20 command completion]
Another interesting idea is Stratus VOS's 'display form' method.  VOS has
VERY wordy commands, though luckily you can have aliases (for example,
cd is 'change_current_directory' (No joke!)).
If you have partly made a command line, you can hit the 'display form' key
(it could be escape on another terminal).  It puts up a full-screen form
of all the options for the command, with all the current values you entered
and the defaults.  You can move the cursor around, changing things according
to the type of field (things like a series of enumerated entries can be
cycled, like for example, baud rates.)  When you're done you hit enter or
cancel.  It is abolutely WONDERFUL when you aren't familiar with the specific
command and don't want to have to read the docs to figure out the arcane
1-char switchs ala UNIX.  You can also ask it to give you a 1 (or maybe more)
liner detailing the command and options.

     //	Randell Jesup			Lunge Software Development
    //	Dedicated Amiga Programmer	13 Frear Ave, Troy, NY 12180
 \\//	lunge!jesup@beowulf.UUCP	(518) 272-2942
  \/    (uunet!steinmetz!beowulf!lunge!jesup)

andy@rocky.STANFORD.EDU (Andy Freeman) (12/19/87)

In article <588@kuling.UUCP> irf@kuling.UUCP (Stellan Bergman) writes:
>In article <1169@nmtsun.nmt.edu> hydrovax@nmtsun.nmt.edu (M. Warner Losh) writes:
[explains how recognition works on TOPS-20]

>No, it is not since I have exactly the same behavior on my HP-UX 'csh' (and
>also on the 'tcsh' on the VAX 4.2BSD I'm running at this moment.

No you don't have exactly the same behavior.  You have recognition for
command names and arguments that are file names.  TOPS-20 command parser
provides recognition for arguments that aren't file names as well as
those that are.  You can also ask it what arguments are legal.

TOPS-20's command parser is also used by almost every native TOPS-20
program.  How many unix programs have tcsh's (or 4.3BSD's csh's)
recognition?  There is a TOPS-20-like command parser for unix and using
something that good will be common in 20 years.  So what if TOPS-20
is about as old as unix and has had it for 10 years?  Unix' superiority
is that it is portable - it's not dead and TOPS-20 is.

-andy

ps - Getopt IS a big advance for unix, but in the grand unix tradition,
it does too little and is probably subtly incompatible with what it is
supposed to be patterned after.  The former can be blamed on unix.
-- 
Andy Freeman
UUCP:  {arpa gateways, decwrl, sun, hplabs, rutgers}!sushi.stanford.edu!andy
ARPA:  andy@sushi.stanford.edu
(415) 329-1718/723-3088 home/cubicle

jefu@pawl21.pawl.rpi.edu (Jeffrey Putnam) (12/19/87)

In article <170@imagine.PAWL.RPI.EDU> beowulf!lunge!jesup@steinmetz.UUCP writes:
>[comments about tops-20 command completion]
>Another interesting idea is Stratus VOS's 'display form' method.  VOS has
>VERY wordy commands, though luckily you can have aliases (for example,
>cd is 'change_current_directory' (No joke!)).
>If you have partly made a command line, you can hit the 'display form' key
>(it could be escape on another terminal).  It puts up a full-screen form
>of all the options for the command, with all the current values you entered
>and the defaults.  You can move the cursor around, changing things according
>to the type of field (things like a series of enumerated entries can be
>cycled, like for example, baud rates.)  When you're done you hit enter or
>cancel.  It is abolutely WONDERFUL when you aren't familiar with the specific
>command and don't want to have to read the docs to figure out the arcane
>1-char switchs ala UNIX.  You can also ask it to give you a 1 (or maybe more)
>liner detailing the command and options.

Yup, the Stratus command line form stuff is really nice, but i dont think its
inherently part of the operating system.  I have worked out two ways to 
implement it in unix, one in the executables, which is nice because it would
help to document the code and options, and one which would run in the shell
and would use a separate file describing the options.  

I say that it is nice, but it also has serious flaws.  You cant get at the
mechanism (or couldnt when i was using it, things may have changed) to use
it in any other context, and you couldnt (for example) build a tree menu
structure with it.  

The important point here is not what the command processor does or doesnt 
do, or what language is used by the shell, or what spiffy features you 
can get at, but what parts of this are inherently part of the operating
system.  Things like the name structure for the filesystem, the 
way that files are built and accessed, the way that processes are handled...
That is the essential part of the operating system, not the command language
or neat features like forms for entering program options.  

I havent used REXX and dont know much about it, but see no reason why a 
REXX interpreter could not be built for Unix.  However, i do note that
many operating systems make many things difficult (for example, building
a REXX interpreter for VMS would probably be more difficult, where building
one for a Lisp machine might be easier).  

peter@sugar.UUCP (Peter da Silva) (12/20/87)

hydrovax@nmtsun.nmt.edu (M. Warner Losh) writes:
> From what I have seen, it appears that the symbolic names (which
> I read as logical names.  Somebody correct me if I'm wrong) to 
> be a superset of enviornment symbols.

Nope, because symbolic names are early-bound. Environment symbols are
late-bound. You can't define a logical name for a file that doesn't
exist at define time. Also, environment symbols are context-free: you
don't have to have a filename there.

For example, I use SET to define my path for include files instead of
ASSIGN on the Amiga, because I may not have the include disk mounted
during the boot process. The coimpiler knows about SET and pulls it
out at run-time.

Secondly (and more importantly), you can't define a logical name for
such things as PATH and ROGUEOPTS, because they're not simple file names.

I'd much rather have both.
-- 
-- Peter da Silva  `-_-'  ...!hoptoad!academ!uhnix1!sugar!peter
-- Disclaimer: These U aren't mere opinions... these are *values*.

peter@sugar.UUCP (Peter da Silva) (12/20/87)

In article <561@amethyst.ma.arizona.edu>, chris@spock (Chris Ott) writes:
>      One of the features of AOS/VS (Data General) that I like is its
> variable element size. For example, if a file's element size is 10 blocks,
> the file will grow in chunks of 10 blocks at a time.

RSX 11 supports this. It's called the extend size. It's more convenient
than the system you describes because you can also truncate the file down
to the real size when disk space gets short.
-- 
-- Peter da Silva  `-_-'  ...!hoptoad!academ!uhnix1!sugar!peter
-- Disclaimer: These U aren't mere opinions... these are *values*.

dag@chinet.UUCP (Daniel A. Glasser) (12/23/87)

In article <477@cresswell.quintus.UUCP>
	ok@quintus.UUCP (Richard A. O'Keefe) writes:
>Concerning multiple-extent (dynamically allocated) contiguous files:
>
[deleted stuff]
>(2) Doesn't VMS provide a feature like this?

Yes, and so does RMS on RSX-11.  Some DEC operating systems also have
an attribute for "Conditionally contiguous", which will endevor to keep the
file contiguous, but when there is no space available reverts to
non-contiguous.

-- 
					Daniel A. Glasser
					...!ihnp4!chinet!dag
					...!ihnp4!mwc!dag
					...!ihnp4!mwc!gorgon!dag
	One of those things that goes "BUMP!!! (ouch!)" in the night.

jesup@pawl11.pawl.rpi.edu (Randell E. Jesup) (12/28/87)

In article <174@imagine.PAWL.RPI.EDU> userft4z%rpitsmts@itsgw.rpi.edu writes:
>In article <170@imagine.PAWL.RPI.EDU> beowulf!lunge!jesup@steinmetz.UUCP writes:
>>If you have partly made a command line, you can hit the 'display form' key
>>(it could be escape on another terminal).  It puts up a full-screen form
>>of all the options for the command, with all the current values you entered
>>and the defaults.  You can move the cursor around, changing things according
>>to the type of field (things like a series of enumerated entries can be
>>cycled, like for example, baud rates.)  When you're done you hit enter or
>>cancel.  It is abolutely WONDERFUL when you aren't familiar with the specific
>>command and don't want to have to read the docs to figure out the arcane
>>1-char switchs ala UNIX.  You can also ask it to give you a 1 (or maybe more)
>>liner detailing the command and options.
>
>Yup, the Stratus command line form stuff is really nice, but i dont think its
>inherently part of the operating system.  I have worked out two ways to 
>implement it in unix, one in the executables, which is nice because it would
>help to document the code and options, and one which would run in the shell
>and would use a separate file describing the options.

	And they are?  (I would like to see them, maybe put them in my
shell under AmigaDos.)

>I say that it is nice, but it also has serious flaws.  You cant get at the
>mechanism (or couldnt when i was using it, things may have changed) to use
>it in any other context, and you couldnt (for example) build a tree menu
>structure with it.  

	Well, there was the forms manager, but that wasn't really the same
thing, as you had to program all the interactions yourself.
(Whipping out my VOS manuals, and choking on the dust...)
Page 203, Service Subroutines:  s$parse_command().  And you're right,
Jeff, it only looks at the command line (note that my manuals are several
years out of date.)  Boy, is it powerful, though.

>The important point here is not what the command processor does or doesnt 
>do, or what language is used by the shell, or what spiffy features you 
>can get at, but what parts of this are inherently part of the operating
>system.  Things like the name structure for the filesystem, the 
>way that files are built and accessed, the way that processes are handled...
>That is the essential part of the operating system, not the command language
>or neat features like forms for entering program options.  

	I agree.  But the discussion had turned from 'whose operating system
had the most useful features' to discussion of the command interpreters,
which while not the core of the OS, or even standard (unix's sh and csh),
are still important characteristics of OS's.  Remember a lot of what one
sees of an OS is filtered through the shell and utilities.

>I havent used REXX and dont know much about it, but see no reason why a 
>REXX interpreter could not be built for Unix.  However, i do note that
>many operating systems make many things difficult (for example, building
>a REXX interpreter for VMS would probably be more difficult, where building
>one for a Lisp machine might be easier).  

	I'm just starting to play with Rexx on my Amiga (VERY nice 
implementation), and I'm sure it could be done for Unix.  It would not be
quite as powerful under Unix because of differences in input/output handling.
However, for programs written to interact with it, it is wonderful.  On CMS
I believe it can be used without the underlying program having to be written
accept commands from an external language (it leeches off the input stream,
or some such).  And doing it for VMS would be a bear :-)

     //	Randell Jesup			Lunge Software Development
    //	Dedicated Amiga Programmer	13 Frear Ave, Troy, NY 12180
 \\//	lunge!jesup@beowulf.UUCP	(518) 272-2942
  \/    (uunet!steinmetz!beowulf!lunge!jesup)

jefu@pawl18.pawl.rpi.edu (Jeffrey Putnam) (01/01/88)

In article <182@imagine.PAWL.RPI.EDU> beowulf!lunge!jesup@steinmetz.UUCP writes:
After some discussion about the command line parameter parser and visual
entry mechanism that Stratus offers in their VOS.  (offered?, its been 
a while).  I mentioned i had worked out a couple ways to implement something
similar in Unix.

>	And they are?  (I would like to see them, maybe put them in my
>shell under AmigaDos.)

I figured to start with a language to describe the command line
options - it would look rather like the Stratus one, but would be a
little more powerful (allowing conditionals and constraints among
variables). It would look rather the same under the shell or in C.  
To work it in the shell, i would trap interrupts and on the appropriate
one (which would be tied to a particular key, like on the stratus) 
invoke a file named like the first part of the command with a specific
extension, this file would contain the option descriptions and would
do the display, parse the options and finally construct the command line
and invoke the program with the correct options.  

Roughly the same thing can be done to parse the options in the 
executable itself - but the signal handling can get hairy (i had
a very complex scheme that might or might not work).  

This does pose an interesting question though:  What exactly would need
to be done in Unix to make this possible - or better, easy?

>	Well, there was the forms manager, but that wasn't really the same
>thing, as you had to program all the interactions yourself.
>(Whipping out my VOS manuals, and choking on the dust...)
>Page 203, Service Subroutines:  s$parse_command().  And you're right,
>Jeff, it only looks at the command line (note that my manuals are several
>years out of date.)  Boy, is it powerful, though.

Exactly my point about magic (im agin it).  Any system that has things
in it whose mechanism is not precisely documented tends to make things
much more difficult for the programmer.  Good examples are the Stratus
visual command line processor, the VMS CLI mechanism (though i understand
its documented now) - and so on (most systems have them, some have many).
Unix doesnt tend to have them because the source has been available, and
thus I deprecate the tendency to hide the source.  

jeff putnam

simon@its63b.ed.ac.uk (ECSC68 S Brown CS) (01/11/88)

In article <174@imagine.PAWL.RPI.EDU> userft4z%rpitsmts@itsgw.rpi.edu writes:
>
>Yup, the Stratus command line form stuff is really nice, but i dont think its
>inherently part of the operating system.  I have worked out two ways to 
>implement it in unix, one in the executables, which is nice because it would
>help to document the code and options, and one which would run in the shell
>and would use a separate file describing the options.  

[silly mode on...]

Or the third way - use the manuals as they stand, and use an Incredibly Clever
Program to consult them to find out what you want.

For example, if I want to find out what a particular option to a command does,
the ICP looks in the manual to find out what it does, and prints out a little
paragraph descibing it. Or I could get it to print out a short summary of all
possible options, or I could get it to tell me what's wrong with what I've
done (when using something complex like awk or sed on a command-line, for
instance). Just like "asking an expert"!

Also, since the ICP is just a program, it could be used by any other program
to do this sort of thing - not just the shell. So, you get automatic help for
any program you like by just hooking in a few ICP calls. It could even be
called *automatically* before actually giving your input to its target program,
to do sanity-checking, so you could fix it easily without having to type
very much at all:
	$ awk "complex-and-difficult-to-understand-expressions" < file
	--ICP: Oops, that's not going to work, you know, Simon!
	       According to the "awk" manual:
		  {desciption of why what I said was wrong}
	       I suggest changing it to {something-else}
	       Which of the following would you like to do?
		 a) make the change I suggested
		 b) edit the expression yourself (with $EDITOR)
		 c) give up
	--? 

Or whatever kind of sickly user-smarmy interface you prefer to use....

:-) :-) :-) :-) :-) :-) :-) :-) :-) :-)

[...silly mode off]
	     
>
>The important point here is not what the command processor does or doesnt 
>do, or what language is used by the shell, or what spiffy features you 
>can get at, but what parts of this are inherently part of the operating
>system.  Things like the name structure for the filesystem, the 
>way that files are built and accessed, the way that processes are handled...
>That is the essential part of the operating system, not the command language
>or neat features like forms for entering program options.  

However, there's no reason why such things shouldn't be part of the operating
system (or, more usefully, *appear* to be so). That's why the Logical-Names
feature of VMS is such a big win - they're not restricted just to the
command interpreter and those few other programs which happen to know about
them, but are available anywhere (unlike "environment variables" in Unix).

Something analagous to Streams, allowing user-definable interfaces to be
installed on top of the bare system access-points (not system-calls; I'm
thinking more of things like namei()) would be incredibly useful. I want to
be able to use logical variables whenever I use filenames?- easy; I just
push a namei-module that recognizes such things, then all processes I create
will automatically be able to use them. In this way, all the junk that's crept
into the shells can be taken out and re-implemented in a uniform way.

	--Simon

-- 
--------------------------------------------------
| Simon Brown                                    |
| Laboratory for Foundations of Computer Science |
| Department of Computer Science                 |
| University of Edinburgh, Scotland, UK.         |
--------------------------------------------------
 UUCP:  uunet!mcvax!ukc!lfcs!simon
 ARPA:  simon%lfcs.ed@nss.cs.ucl.ac.uk      "Life's like that, you know"
 JANET: simon@uk.ac.ed.lfcs