Subject: binding wars :-)

From: [email-masked] (Mary E Zosel)
Date: Tue, 17 Mar 92 09:53:07 -0800

Group 1 ---
I finally got around to reading some email from X3H5 and thought you
might be interested in this ... a variation of our discussion played
in the X3H5 arena where they are now preparing specific bindings for
PCF.   (I guess my personal sympathies lie a bit with the pro-F90
person in this one, because for PCF, there are things which are somewhat
clumsy in F77 and would have much cleaner solutions in F90.

It appears that X3H5 (or at least its chair) has adopted the stand that
they will produce an F77 binding and then an F90 binding which is
a compatible superset of the F77 binding.

You might keep this in mind when reviewing F90.  Will this become an
issue for us?

     -mary-

------
------
-----
Date: Fri, 6 Mar 1992 12:34:58 -0600
From: Bruce Leasure <[email-masked]>
To: [email-masked]
Subject: X3H5 NegComments

Title:  Negative Comments on Fortran 77 Binding
Date:   March 6, 1992
Author: Bruce Leasure
Document:  X3H5/92-0091-A

Question: The project proposal to construct a Fortran 77 binding as documented
	  in X3H5/90-0008-B is approved and should be forwarded to X3/SPARC
	  for assignment to X3H5.

The negative vote was from: [email-masked]

Brief History:  A rough Fortran 77 binding exists in X3H5 documents.
This binding was developed to make sure that a binding could be
developed from the approved project to develop "The Parallel Processing
Model for High Level Programming Languages".

The "justification" and "lifetime" sections of the project proposal have
been updated to reflect the thoughts of X3H5 on this negative vote.

All lines that begin with >> are about the negative vote.  All comments
from the negative ballot, and another electronic communication are
included.

Comments from the Negative Ballot:

>> As previously discussed, there is no change to this proposal that
>> would change our No vote to a Yes.

Thus, this vote is an unalterable negative ballot.

>> Fortran '77 (X3.9-1978) has been retained as an archival standard
>> only. No changes to the language it represents should be considered by
>> ANSI. 
>> Doing '77 "bindings" constrains the '90 work in ways which are not
>> acceptable. Doing it "both ways" represents a major problem for users
>> of the standard(s).

Fortran 90 identifies (in section 1.6 of the ISO standard) two classes
of outmoded features in Fortran 77: deleted features and obsolescent
features.  No Fortran 77 features were placed in the deleted features
list, and nine features were placed in the obsolescent features list.
Here is the complete list (from Annex B):

	arithmetic IF
	real or double precision DO loop index
	shared DO termination & termination on other than CONTINUE
	branching to an ENDIF from outside the Block IF
	alternate return
	PAUSE statement
	ASSIGN and assigned GOTO statements
	assigned FORMAT specifiers
	Hollerith edit descriptor

All other features of Fortran 77 are included in Fortran 90 without
comment.  X3H5 concludes that all features of Fortran 90 are "equal",
except for the ones identified by Fortran 90 as outmoded.

As a builder of a binding to Fortran 90, it seems unreasonable to
choose only one of the methods of doing something as a binding target
if Fortran 90 provided several equivalent features.  X3H5 should not
select a "preferred set" of features that might control the future
of Fortran 90.

This means that X3H5 must provide a binding to ALL of the non-outmoded
features of Fortran 90.  This includes almost all of Fortran 77.  Hence,
a Fortran 77 binding is an obvious intermediate stage.

>> In addition, it may very well result in undue friction with our
>> European counterparts; certainly the early comments from them lead
>> one to believe this.

The project proposal clearly states in the "Lifetime" section that the 
Fortran 77 binding will be superseded by the Fortran 90 binding.  This is
a revision to the project proposal that was made in response to this point.

>> Any one of these would be sufficient grounds.

Comments from the an Earlier Electronic Message:

>> Reasons why a X3H5 binding to X3.9-1978 (hereinafter spelled f77) is a
>> bad idea: 

>>    1)  f77 has been replaced by ISO 1539:1991 (f90 in what follows) in
>>        the International arena. ANSI adoption will certainly take
>>        place before X3H5 can ship a finished standard.

True.  But Fortran 77 implementations will dominate the user community
for the next several years.

>>    2)  f90 provides a far superior base for X3H5 to bind to.

True.  X3H5 is working on a complete Fortran 90 binding (see companion project
proposal).  The Fortran 77 binding is an obvious intermediate step.  See earlier
response for more information on this point.

>>    3)  X3H5 will want to (as evidenced by discussion in committee,
>>        and common sense) have a f90 binding that is compatible with
>>        the proposed f77 binding. This constrains the f90 binding
>>        in a variety of nasty ways. This will result in a suboptimal
>>        f90 binding.

X3H5 does want a Fortran 90 binding that is a superset of the Fortran 77 binding.
But, since many of the new features in Fortran 90 have orthogonal syntax to
Fortran 77, there is no problem with making "bad" choices in the Fortran 77 part
that will make the binding to the new features in Fortran 90 suboptimal.

>>    4)  A pure f90 binding could be much closer to a C/C++ bindings.
>>        SCOMMON is an "evil" concept which maps poorly onto nearly
>>        all computer languages. In f77 there was no standard way, other
>>        than COMMON, to group variables together; so the PCF decision
>>        to create SCOMMON was a suitable one. But f90, C, C++
>>        (and other languages) have superior mechanisms which can and should
>>        be exploited. Interlanguage calling is important, so we will have
>>        to make sure that if there is an SCOMMON, that there are 
>>        ways to "spell" it for each language.

Fortran 90 contains COMMON as a non-outmoded feature.  Thus a binding of the 
X3H5 to Fortran 90 must explain how to deal with COMMON, just as it must
explain how to deal with MODULEs.  The important point of COMMON is not that
it groups variables together, but rather that addressability can be established
to a COMMON block with any action or knowledge from the caller.  A similar
characteristic with PUBLIC objects in a MODULE.

>>    5)  The style of X3H5's proposed bindings, language extensions,
>>        ensures that considerable work will be required to compiler
>>        front ends. Some of the proposed features may even require
>>        considerable linker work. Compiler writers are, and should be,
>>        focused on building f90 compilers at this point. Creating
>>        a f77 binding first, ensures that effort will have to be
>>        put on f77/X3H5 *first* for competitive reasons. This will 
>>        help retard the acceptance of f90 which seems like an anti-social
>>        act for one X3 group to work to retard the work of anothers.

The work to adjust the syntax of the compiler front-ends is relatively minor
compared to the effort to support parallelism.  Compiler builders for parallel 
machines already have much of the syntax/semantics suggested by early drafts 
of this binding.

X3H5 makes no comments on how compiler builders should be spending their time.

>>    6)  It is my understanding that WG5 is interested in evolution
>>        of Fortran and collateral standards (the varying length string
>>        standard module, for example). Various WG5 members have made
>>        it quite clear that a f77 binding will irritate them. If our
>>        adoption of it forced us to have an  upward compatible 
>>        binding, they will almost certainly arrange for there to be
>>        a "pure" f90 "binding". We do not need another war with ISO.

X3H5 is planning on producing Fortran 90 binding that is a superset of the
Fortran 77 binding.  X3H5 believes that this is the ONLY viable course because
essentially all of Fortran 77 is contained in Fortran 90.  Earlier responses
have explained this position in more detail.

>>    7)  It will be hard enough to do C and f90 bindings in a timely
>>        fashion. We do not seem to have a large enough membership to craft
>>        three bindings plus a model. In addition, focusing on f77 
>>        as a base has resulted in our going down several paths that
>>        are probably mistakes in f90 (data sharing, scoping, etc. rules
>>        are quite different). 

X3H5 believes that building a Fortran 90 is not any less work than building 
a Fortran 77 binding and then building a Fortran 90 binding.  In fact, it is
the belief of the majority of X3H5 that constructing the Fortran 90 binding
in two steps will result in the existence of a complete Fortran 90 binding
sooner.  

>> A year or so back, perhaps I might have merely abstained. Four years
>> ago, this would have been a fine proposal. However, to accept this
>> proposal at this stage (f90 being done, and in interpretation phase)
>> seems to me to be a grave mistake for vendors, and in the long term
>> for users. Users will benefit only if quality implementations are
>> forthcoming, and the resulting code is actually portable. This can
>> only happen if we solve the right problems, in at least tolerable
>> ways, and get "buy in" from all of the players. An f77 binding serves
>> to minimize the long term chances of success on nearly all fronts.

Clearly, a Fortran 77 binding can be produced before a Fortran 90 binding.
This means that compiler builders can support a STANDARD, and users
can start to experience the standard sooner.  The feedback that comes
from this early activity will allow X3H5 to reexamine issues as necessary,
producing a stronger Fortran 90 binding than if there was no Fortran 77 binding.