[comp.lang.forth] Standard systems vs. standard programs

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]