wmb@MITCH.ENG.SUN.COM (07/20/90)
JW> I'd like an explanation from those of you who think that you can JW> take one of your current programs and will be able to run them JW> without change on anybody's ANSI system. The ANS standard does not intend this, nor do I believe that it would be possible to develop a standard, any standard, for which this would be possible (because the present variations among extant systems is reflected in the contents of current programs). The portability goals of the ANS standard, as I understand them, are: a) It should be possible to write a new program that will run without change on anybody's ANSI system. b) It should be possible to run your old programs on the same vendors' systems that they used to run on, with little or no modification, even after those vendors' systems have been modified to conform to the ANS standard. c) Where (b) is violated (i.e. where changes to old programs are required), those changes should be as mindless as possible. Definition of "mindless" by example: 1) Redefining a word at the start of an application is mindless. 2) Globally substituting all occurrences of a word with another word or phrase is mindless. 3) Subtle changes, such tricky semantic differences in the way that VOCABULARY works or the way in which : affects the search order, are not mindless. (That is why VOCABULARY was renamed to WORDLIST ; the differences between its implementation among extant systems are too tricky). In other words, the ANS standard will not magically make your old programs portable. Old programs will be pretty much as portable or as nonportable as they currently are (perhaps after a round of "mindless" changes). Another way of saying this is: If an old program currently runs on LMI Forth and F83 and F-PC, but not on MMS Forth or MacForth, it will probably still run on LMI ANS Forth and ANS F83 and ANS F-PC, but probably not on MMI ANS Forth or ANS MacForth. And, it will be easier to write a new program to run on all of the ANS Forths systems than to write a new program to run of all of the current nonANS Forths. The reasons it will be easier to write a new portable program: a) Precisely-defined alternatives to current "problem words" (e.g. NOT , / , VOCABULARY) have been created. b) 32-bit systems are now allowed. c) Rules for portable usage of addresses and address alignment have been articulated. d) Wordsets for often-needed but previously-unspecified functions (e.g. floating point, file access, dynamic memory allocation, error handling, run-time search order, strings) have been added. Mitch
ir230@sdcc6.ucsd.edu (john wavrik) (07/23/90)
Let's imagine a time in which people around the the world have reached the stage where, for world commerce, it would be desirable to produce a Standard for arithmetic. The state of affairs: In Babylon a numeration system with base 60 is in use, Arabia has used a base 10 system, the Hexians have used base 16 while their neighbors, the Booleans, have used base 2. [Historical note: the small nations of Hexia and Boolea were eventually annexed by Latvia] Please note that "10" is used in each of these countries -- but it has a different meaning in each. What to do? Here are some possibilities: 1. They could notice that 0 is the only number which is written in the same way in all their systems (fortunately the Romans did not attend). They make 0 their standard and declare that "Arithmetic is broken -- but we feel it is useful for everyone to know what they must avoid if they want portability." 2. They set about producing an international standard which has all the best features. In particular they choose a common base, common symbols for digits and arithmetic operations, etc. To sooth those current users at home who do not plan to engage in world commerce, they agree to continue to provide support for the next few years for their customers' current numeration systems as well as the new international system. 3. They decide to devise a complex numeration system which will allow everyone to continue to use their current base -- but which will also work with all other bases. It would take the best mathematical minds in the world to pursue approach 3 -- it would probably take them well over 3 years to come up with something, and whatever they came up with would be far less satisfactory than any of the existing systems. As for approach 1, it is hard to believe that anyone would be perverse enough to suggest it -- but, in some respects, the world never changes. John J Wavrik jjwavrik@ucsd.edu Dept of Math C-012 Univ of Calif - San Diego La Jolla, CA 92093
dwp@willett.UUCP (Doug Philips) (07/23/90)
In <11977@sdcc6.ucsd.edu>, ir230@sdcc6.ucsd.edu (john wavrik) writes: > > 1. [...] They make 0 their standard and declare that "Arithmetic > is broken -- but we feel it is useful for everyone to know what > they must avoid if they want portability." > > 2. They set about producing an international standard which has all > the best features. In particular they choose a common base, common > symbols for digits and arithmetic operations, etc. To sooth those > current users at home who do not plan to engage in world commerce, > they agree to continue to provide support for the next few years > for their customers' current numeration systems as well as the new > international system. > > 3. They decide to devise a complex numeration system which will allow > everyone to continue to use their current base -- but which will > also work with all other bases. What you said isn't as interesting as what you didn't say. As I read your message, #2 is the obvious winner and right thing to do. #1 is a minimalist escape hatch and #3 is a maximalist mess. Responses of type #1 or #3 do have their appropriate uses. I won't try to defend them here. #2 is based on a flawed assumption that you have your cake (backward compatability) and eat it too (Brave New Arithmetic World). There is a contradiction. You say that the standard will have all the best features AND that it will support current systems in parallel with new ones. So, how do you tell when the best features of system X are being used as part of the current system or the new one? Obviously you need some context. The X3J14 TC is providing that context by giving different names to the various operators. The response to that seems to be based on a confusion between the object and its name. [I have not been privy to the contents of the proposals so far before the committee, so I don't know the history of politics involved here, and perhaps that assumed background is the reason I'm at odds here.] You seem to be implying (gad, just come out and bloody say it next time) that the new {/} {JW/MOD} {DR/MOD} {R2D2/MOD} are really solution #3 instead of solution #2. Rather than just imply, I'd like to see some more explicit support. Again, it seems to me that the dividing line is being drawn on the basis of the spelling of the name, rather than on the issue of the semantics. If you continue to classify the TC's solution to the {/} "problem" as number #3, I challange you to present a #2 solution to them (and to the net) instead. If you think that such a solution has already been presented, please provide the identifying information and I will gladly follow up on my own. I see the value is saying that "X" is the wrong solution to problem "Y". However, if there are no better solutions available to problem "Y", what should be done, invent a solution? The TC is forbidden (in theory at least) from "inventing" new practice. So, at what point does the synthesis of your #2 solution stop being existing practice and start being new practice? I'm not sure I know the answer, but I do know that it isn't a simplistic "always" or "never". Point of focus: Perhaps all those who are thoroughly or even mildly disgusted with the "watered down ANSI effort" should simply admit that there are never going to be satisfied with the requisite compromises of the CONSENSUS and EXISTING-PRACTICE requirements? Perhaps creating the BRAVE NEW FORTH is something which would be effort better spent? I hardly think, though, that such an effort could afford to ignore the scrutiny that the ANSI effort has given to Forth, even if the TC's solutions are not adopted. Nor will future ANSI efforts be able to ignore BRAVE NEW FORTH, but it is simply not in the current charter to build/design BRAVE NEW FORTH. Perhaps another analogy will make things even more muddy: (:-) ANSI is working to build a building using off-the-shelf technologies. BRAVE NEW FORTH is working to build next years/months/decades off-the-shelf technologies. The cross-influences will obviously be uneven at any given time. The compromises involved are vastly different ( {/} {KGB/MOD} {IRS/MOD} {JW/MOD} ) and (finite versus infinite numeric representations). -Doug --- Preferred: willett!dwp@hobbes.cert.sei.cmu.edu OR ...!sei!willett!dwp Daily: ...!{uunet,nfsun}!willett!dwp [in a pinch: dwp@vega.fac.cs.cmu.edu]