Xref: utzoo comp.arch:17371 comp.lang.misc:5198 Path: utzoo!attcan!uunet!wuarchive!cs.utexas.edu!mailrus!iuvax!noose.ecn.purdue.edu!mentor.cc.purdue.edu!l.cc.purdue.edu!cik From: cik@l.cc.purdue.edu (Herman Rubin) Newsgroups: comp.arch,comp.lang.misc Subject: Re: Algol, and language design Message-ID: <2406@l.cc.purdue.edu> Date: 26 Jul 90 13:10:51 GMT References: <25630@cs.yale.edu> <58091@lanl.gov> <1990Jul26.024449.1777@esegue.segue.boston.ma.us> Followup-To: comp.lang.misc Organization: Purdue University Statistics Department Lines: 43 In article <1990Jul26.024449.1777@esegue.segue.boston.ma.us>, johnl@esegue.segue.boston.ma.us (John R. Levine) writes: > In article <58091@lanl.gov> jlg@lanl.gov (Jim Giles) writes: > >Well yes, ALGOL _has_ had an enormous _negative_ impact on language > >design (that still continues today). Features like 'call-by-name' are > >now recognized as bad by nearly everyone. > > Alan Perlis, who was on the Algol committee, once told me that when they > defined call-by-name, they thought they were defining call-by-reference > more elegantly. When Jensen invented his now-notorious device and they > realized what they had created, they were as surprised as anyone. Oops. > > >In fact, only two features, that I can find, are original to ALGOL and > >have a continuing positive influence on language design: if-then-else > >and while(). > > How about nested scopes and recursion? I find them handy from time to time. Nested scopes of DO loops are present in Fortran. Mathematicians have used recursion for ages, and the problems with implementing recursion in the architecture of the time were horrendous. Frankly, some of them still are. What language allows carrying globals in registers across recursion? One of the things which should be noted was that, at the time, registers were few and transfer and memory access were relatively fast compared with computation. Nobody would have considered the above question of any importance. Self-modifying code was a necessity, and even a decade later, the return jump (subroutine call) automatically did so. > I'd also be interested to hear what about compound statements (by which I > presume you mean BEGIN ... END blocks) is bad, and whether the Algol 68 > approach in which every control structure has its own closing word, obviating > begin and end, is any better. I do not see IF and FI as any better than BEGIN and END. Better would be to have labels (including temporary labels not going into the symbol table) and end statements which would carry the label. The END statement, even without a BEGIN statement, was in common use at the time; All processors need to know when to stop. -- Herman Rubin, Dept. of Statistics, Purdue Univ., West Lafayette IN47907 Phone: (317)494-6054 hrubin@l.cc.purdue.edu (Internet, bitnet) {purdue,pur-ee}!l.cc!cik(UUCP)