Path: utzoo!utgpu!watmath!clyde!bellcore!rutgers!apple!bionet!agate!ucbvax!hplabs!sri-unix!garth!phipps
From: phipps@garth.UUCP (Clay Phipps)
Newsgroups: comp.lang.misc
Subject: Re: aGREeable features (was Re: Algol-68 down for the count)
Summary: The shooting stops.
Keywords: Algol-60,call-by-name,copy-rule
Message-ID: <2147@garth.UUCP>
Date: 8 Dec 88 07:09:32 GMT
References: <406@ubbpc.UUCP> <3688@hubcap.UUCP> <2070@garth.UUCP> <796@quintus.UUCP> <2130@garth.UUCP> <820@quintus.UUCP>
Reply-To: phipps@garth.UUCP (Clay Phipps)
Organization: INTERGRAPH (APD) -- Palo Alto, CA
Lines: 90

In article <820@quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes:
>In article <2130@garth.UUCP> phipps@garth.UUCP (Clay Phipps) writes:
>>In article <796@quintus.UUCP> ok@quintus.UUCP (Richard A. O'Keefe) writes:
>>>In article <2070@garth.UUCP> phipps@garth.UUCP (Clay Phipps) writes:
[Text has been rearranged, but I have tried to avoid changing its meaning.]

>>>The origin of pass-by-name semantics is explained very clearly
>>>                           in the Algol-60 report.
>By "origin" I meant not "rationale" ... but "ground"/"cause"/&c.  
>Pass-by-name comes *very* naturally out of the "copy rule", 
>which is described in the Algol 60 report.  
>So the origin of pass-by-name, namely the copy rule for explaining 
>how procedures work, is indeed described in the Algol 60 report.

I wouldn't have chosen "origin", but I now see what you intended.

I didn't point out that I certainly agreed that the Report contains 
the description of "call by name" because [1]: I was disagreeing
about rationale, 2: it was late, 3: I forgot to make a clarification,
4: failure to respond to a point often is interpreted as agreement
(in this case, about the presence of a definition of "call by name"), 
which would have been just fine under the circumstances.

Incidentally, the term used by the Revised Report [1962] that I have
is "call by name"[italicized]; was it called "pass-by-name" in the 
Algol 60 Report [1960] that you cite, or is it U.K. regional terminology ?  
I have been treating them as synonymous for this discussion.

>>>>My recollection is that call-by-name was included in Algol 60
>>>>to simplify implementation of some numerical analysis algorithm

>... the rationale for pass-by-name is that Fortran provided 
>pass-by-reference, and the Algol 60 designers wanted 
>Algol 60 procedures to be at least as powerful as Fortran ones, 
>so something was needed in addition to value parameters ...
>My recollection (which is doubtless as inaccurate as Phipps') 
>is that the "copy rule" came first,
>and that the semantics of pass-by-name were a consequence of it.  
>... [Pass-by-name] was not introduced 
>to "simplify...some numerical analysis algorithm".  ...

There is an interesting remark by Naur [HOPL] 
about the background that he brought to the development of Algol:
"my work with the Edsac, Cambridge, England, in 1951 and 1953...
had given me a strong impression of the importance of closed subroutines,
including the use of what in retrospect may be described as parameters 
called by name".  Naur cites a paper that he wrote in 1977;
it is called "A vector handling subroutine using call by name
written for EDSAC in 1951".  Naturally, it was never published.

There is also a summary by Naur of the "procedure statement" as defined
by the Z:urich Report [1959]: "during the activation of the procedure,
the formal parameters are replaced by the corresponding actual
parameters, replacement being understood as symbol substitution".

The former paragraph supports my "inaccurate" recollection, sort of;
the latter supports yours, sort of.

I *would* like to know whether there was a specific requirement 
for a solution to a particular problem, or if the committee
just agreed upon a definition (the "copy rule") that they liked, 
satisfied that it was more "powerful" than FORTRAN.
The definition could well have seemed at the time to be the same
as for assembly language macro processing substitution.

>-- some of the minutes of the Algol 60 committee were published years
>before the HOPL conference ...

The Perlis and Naur papers in the HOPL Conference preprints 
identified the 7 1959 issues of the _ALGOL Bulletin_ and CACM 
as containing discussions of proposals for developing Algol.
I have not been in this field so long that I would have any of those
in my possession :-), and I do not have easy access to them.
Maybe I'll try to infiltrate a local but prominent university's 
computer science library (most likely, I'll never take the time to do so).
Those efforts might not produce the evidence that I'm seeking, anyhow; 
the HOPL papers make it clear that much of the communication was informal.

So -- which came first, the chicken or the egg ?
Anyone out on the net have useful information, by virtue of being 
at Algol development meetings, from extensive contacts with people
who were (be prepared to name names), or from written materials ?

Feel free to start rumors that it will be a new question 
on the Computer Science GRE :-).

-- 
[The foregoing may or may not represent the position, if any, of my employer]
 
Clay Phipps                       {ingr,pyramid,sri-unix!hplabs}!garth!phipps