On 06/10/2017 18:55, Marko Rauhamaa wrote:
bartc <b...@freeuk.com>:

The internal utilities used within an operating system, primarily
intended for file or redirected i/o with no live interaction, should be
distinct from those designed to be used directly with a live user.

Or is it against the rules of Unix to have two different versions of a
program?

Then you might have 'sort' for the non-interactive version, and 'isort'
or whatever for the interactive.

You are right that interactive programs exist and operate very
differently from what are known as *tools*.

Interactive Linux programs include:

     LibreOffice
     NetworkManager
     Firefox
     Skype
     XBoard
     Emacs
     GIMP
     top
     gdb

etc.

I meant interactive programs that work with a scrolling display, as suits a program like this:

 while 1:
    print (input("?"))

Considerations of the 'eof' status of a keyboard would of course be irrelevant for anything more sophisticated, either with a more organised console app, or one using a GUI.

I don't know if anybody has seen a market/need for an interactive sort
program, but there's nothing preventing you from writing one.

For sort, there is no real need. You use a text editor to create your data. Then use existing file-based sort.

So I can't see the point of using that same pattern of input usage
(reading from stream, file, pipe whatever until interrupted with an
EOF signal) for a true interactive program that is used in a sensible
manner.

So go ahead and write an interactive sort program. It might employ a
mouse, joystick, iris scanner, touchscreen, sound effects or whatever
facilities you would think would be useful for the human user.

It wasn't me who brought up 'sort' when the subject was interactive keyboard dialogues (it was Chris I think).

A program like 'python' might fit the bill too. Here, you can give it
the name of a file, OR say nothing, and it will take input from stdin.

Personally, I think stdin is a bit lame as a stimulus source for an
interactive program. That's not even what stdin is primarily meant for;
stdin is meant to be the input data for a job. Similarly, stdout is
meant to be the result of the computation. Stderr, then, is used to
deliver optional diagnostic messages, ie, metainfo about the
computation.

You really need punched tape or cards for input and output to get the full effect. Complete with all the sound effects. Sadly when I came into it, we were using mag-tape for input (with a variety of outputs).

The clatter of an ASR33 printing your results was also a treat.

--
bartc
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to