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: Sender: news@pa.dec.com (News) Organization: Missionaria Phonibalonica References: <2407@swrinde.nde.swri.edu> <1991Apr18.065847.8050@agate.berkeley.edu> <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 (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.