[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

AN APPEAL TO COMMON SENSE



To: P.H.Welch <P.H.Welch@xxxxxxxxx>
From: Per Brinch Hansen <pbh@xxxxxxxxxxxxxxx>
cc: java-threads@xxxxxxxxx, 
    occam-com@xxxxxxxxx,
    adrian.lawrence@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx,
    bernief1@xxxxxxxxxxx,
    bombcar@xxxxxxxxxxxxxxxxxxxxxxxx,
    chris@xxxxxxxxxxxxxx,
    dan@xxxxxxxxxxxxxxx,
    grorr@xxxxxxx,
    gstephe1@xxxxxxxxxxx,
    h.thimbleby@xxxxxxxxx,
    JerryJerry@xxxxxxx,  
    jmk@xxxxxxxxxxxxxxxx,
    johan.sunter@xxxxxxxxxxx,
    mikep@xxxxxxx, 
    ohearn@xxxxxxxxxxxxx,
    Oyvind.Teig@xxxxxxxxxxxx,
    pbh@xxxxxxxxxxxxxxx
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@xxxxxxxxx

All the best,

Per Brinch Hansen