To: P.H.Welch <P.H.Welch@ukc.ac.uk> From: Per Brinch Hansen <pbh@top.cis.syr.edu> cc: java-threads@ukc.ac.uk, occam-com@ukc.ac.uk, adrian.lawrence@computing-services.oxford.ac.uk, bernief1@pacbell.net, bombcar@petrus.thomasaquinas.edu, chris@cs.colgate.edu, dan@ecs.soton.ac.uk, grorr@cts.com, gstephe1@pacbell.net, h.thimbleby@mdx.ac.uk, JerryJerry@aol.com, jmk@dcs.napier.ac.uk, johan.sunter@philips.com, mikep@cts.com, ohearn@dcs.qmw.ac.uk, Oyvind.Teig@autronica.no, pbh@top.cis.syr.edu Date: 26 Jun 1999 Subject: AN APPEAL TO COMMON SENSE These comments are in response to those of you who offered instant complications of a truly simple idea that I thought about for thirty years. At the ACM SIGPLAN History of Programming Languages in 1978, Peter Naur was asked why he originally was against the idea of recursion in Algol 60. He answered that he was only opposed to the idea of declaring a procedure to be recursive, because such a declaration would not necessarily make it recursive! If the programmer mistakenly omits such a declaration, the compiler is generally unable to predict that the program will fail. In other words, you have made the language insecure in return for a minor improvement in efficiency. In any case, I thought that recursion ceased to be a controversial language feature in 1960. For forty years we have known that a stack makes the activation and termination of non-recursive and recursive procedures equally fast for all practical purposes. Since 1995 I have known that the quick-fit heap makes the activation and termination of parallel processes and recursive processes equally fast. That is why SUPERPASCAL USES THE HEAP ALLOCATION FOR ALL PROCESS AND PROCEDURE ACTIVATIONS. It doesn't matter whether they are recursive or not. In my paper on Efficient Parallel Recursion I summarized the two main limitations of the method and wrote: "Both limitations can probably be removed by more complicated variants of the basic idea. I leave that as an exercise for the reader." However, before you accept that challenge let me offer the following unpopular advice: Start by accepting my idea as it is, spend three years implementing it, and publish performance measurements in a professional journal. Only then will you be ready to determine if further optimization is worth the inevitable complication of the original idea. In 1993 I developed a portable implementation of SuperPascal under Unix. It consists of a compiler and interpreter written in Pascal. You can obtain the SuperPascal software and manuals by anonymous file transfer from the directory pbh/superpascal at ftp://ftp.cis.syr.edu. I have only received email from a handful of Americans about Java's Insecure Parallelism. So my criticism will probably be ignored unless you write your own letters to Dr. A. Michael Berman, Editor SIGPLAN Notices Rowan University 201 Mullica Hill Road Glassboro, NJ 08028, USA Email: berman@rowan.edu All the best, Per Brinch Hansen