Newsgroups: comp.sys.amiga.programmer
Path: utzoo!utgpu!news-server.csri.toronto.edu!rpi!zaphod.mps.ohio-state.edu!sdd.hp.com!elroy.jpl.nasa.gov!decwrl!pa.dec.com!bacchus!mwm
From: mwm@pa.dec.com (Mike (My Watch Has Windows) Meyer)
Subject: Re: Hyper Functionality [was Re: An Amiga Conversion Facility (2 of 3) LONG!]
In-Reply-To: pete@violet.berkeley.edu's message of 22 Apr 91 07:14:13 GMT
Message-ID: <MWM.91Apr23135328@raven.pa.dec.com>
Sender: news@pa.dec.com (News)
Organization: Missionaria Phonibalonica
References: <2407@swrinde.nde.swri.edu>
	<1991Apr18.065847.8050@agate.berkeley.edu>
	<MWM.91Apr18120110@raven.pa.dec.com>
	<1991Apr22.071413.22219@agate.berkeley.edu>
Date: 23 Apr 91 13:53:28
Lines: 90

In article <1991Apr22.071413.22219@agate.berkeley.edu> pete@violet.berkeley.edu (Pete Goodeve) writes:
   In  <MWM.91Apr18120110@raven.pa.dec.com> (18 Apr),
   Mike (My Watch Has Windows) Meyer (mwm@pa.dec.com) writes:
   > In article <1991Apr18.065847.8050@agate.berkeley.edu> pete@violet.berkeley.edu (Pete Goodeve) writes:
   You SEE?  ^^^ vvvv ... I KNEW it would happen... (:-))

What? You typed it in - and that's what it said.

   Those were DAVE's words -- not mine!  Never mind, the response that
   follows is all my own work..:

Yup - I knew that... I think I left the comment about who's words they
were in it.

   > Examples: I've added a spelling checker and a thesaurus to mg. Someone
   > wrote the servers (ISpell + it's Rexx port, and the Electric
   > Thesaurus), and I did the integration.

   These are all TEXT based things!  That's what ARexx is great at.
   But what about all the other areas we've been talking about -- passing
   bitmaps and other data structures around, and passing them FAST?

Depends on how fast you want things. You can either pass contiguous
chunks of memory around (Rexx strings don't have to be text), or ASCII
strings that contain the pointer, or the raw pointer. I've done all of
these with C structs in ARexx, and they all work fine. Now, you have
to have a server that _expects_ those, but that's going to be a
problem no matter what protocol you chose.

   In the other direction, the program has a single control port which
   can accept several kinds of messages, and passes them on to the appropriate
   handling routine with a brief switch/case sequence.  (No command line
   parsing here!)

Parsing command lines in Rexx is only required if you want to be nice
to those who are using the server. If speed is more important than
readability, you make your server provide function calls instead of a
command line interface (better yet, do both), give the function calls
one-character names, and switch on the first character of ARG0 (the
function name).

   need dictates, and they may be in any order.  Again, "parsing" is trivial
   -- just a loop that goes through the items in sequence, taking action via a
   switch statement.

Yup - you get that with Rexx Function messages: it hands you a pointer
to the function names, and pointers to the other arguments. You loop
over the arguments doing what you will with the pointers, including
the one-char switch hack above.

   You see the difference from ARexx, where the only way to distinguish
   message functions is by the command string itself, which needs parsing
   at the destination, and maybe other massaging as well.

No, I see the difference between the way Rexx is conventionally used,
and what you're doing. On the other hand, people don't conventionally
provide servers that support function (as opposed to command)
interfaces, and don't conventionally put anything but C strings into
Rexx strings. That doesn't mean that those things can't be done.

   The other side of the coin is that there is no particular user-level
   command language associated with ppIPC.

This is bad for ppIPC. This means there's not an easy way to
test/prototype servers. That Rexx brings real IPC out to the scripting
level is the only really interesting thing about the language. The
underlying message passing facility is well-designed, and can do
everything you want.

Note that you _don't_ have to have ARexx to use clients and servers
that pass RexxMsgs back and forth. ARexx just provides an interpreter
that allows easy access to these things; the messages can be passed
around without the interpreter.

   However, there *are* multitasking
   applications that one can't do with ARexx, but can with something like
   ppIPC.

I don't think you've listed any such applications. At least, you
haven't listed any that can't be done with the RexxMsg protocol.
Like you, I'm not trying to put down ppIPC. I'm trying to find out why
we should abandon a standard that - while not as flexible as ppIPC -
appears capable of doing the job.

	<mike
--
I'm gonna lasso you with my rubberband lazer,		Mike Meyer
Pull you closer to me, and look right to the moon.	mwm@pa.dec.com
Ride side by side when worlds collide,			decwrl!mwm
And slip into the Martian tide.
