From: hbaker@netcom.com (Henry Baker)
Subject: Re: Depending on passing mechanism
Date: 1997/10/15
Date: 1997-10-15T00:00:00+00:00 [thread overview]
Message-ID: <hbaker-1510970700110001@10.0.2.1> (raw)
In-Reply-To: 622b4t$nhe$1@gonzo.sun3.iaf.nl
In article <622b4t$nhe$1@gonzo.sun3.iaf.nl>, Geert Bosch
<geert@gonzo.sun3.iaf.nl> wrote:
> In general this cannot be detected at compile time. Solving this
> aliasing problem in the language (for example using reference
> counting) will result in significant extra complexity and distributed
> overhead. This added complexity and overhead would be two strong
> reasons not to use the "improved" language for embedded systems
> like those in the Boeing 777 you mentioned.
>
> Do you have a proposal to remove the non-determinism without affecting
> performance and flexibility too much? I think many readers in this
> group might be interested in such ideas, at least I am.
>
> Regards,
> Geert
Yes.
There are 3 solutions, any of which is better than the current Ada 'non
deterministic' solution.
1. _Always_ pass by reference. This can be forced in C/C++ by certain
coding styles. Any aliasing is assumed to be programmer-intended, and
has a relatively simple programming model. (You may have to liberally
sprinkle 'volatile'-type thingy's around as well.) There is a certain
cost, but on modern microprocessors the cost is not exorbitant, and certainly
less than the cost of a 777.
2. _Always_ pass by value. This is really possible only in a 100%
functional language like Haskell.
3. Add a new concept to your language: 'linear'/'unique' types. These
objects are guaranteed to be singly referenced because this is enforced
by the type system. Poof! No aliasing! This concept was pioneered by
NIL/Hermes, and has recently been incorporated into some logical (prolog-like)
languages and some functional languages ('Clean' from KU Leaven). There is a
large and growing body of mathematics called 'linear logic' that puts linear
types on a firm theoretical foundation.
The NIL/Hermes people tried to get people in the Ada community to pay
attention, but they were completely ignored, and Ada95 suffered for it.
next prev parent reply other threads:[~1997-10-15 0:00 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
1997-10-13 0:00 Depending on passing mechanism Andre Spiegel
1997-10-13 0:00 ` Matthew Heaney
1997-10-14 0:00 ` Robert Dewar
1997-10-14 0:00 ` Robert Dewar
1997-10-14 0:00 ` Henry Baker
1997-10-15 0:00 ` Geert Bosch
1997-10-15 0:00 ` Robert Dewar
1997-10-15 0:00 ` Robert Dewar
1997-10-17 0:00 ` Andre Spiegel
1997-10-17 0:00 ` Henry Baker
1997-10-17 0:00 ` Jon S Anthony
1997-10-17 0:00 ` Robert I. Eachus
1997-10-21 0:00 ` Robert A Duff
1997-10-21 0:00 ` Peter Hermann
1997-10-22 0:00 ` Robert A Duff
1997-10-22 0:00 ` Brian Rogoff
1997-10-22 0:00 ` Henry Baker
1997-10-21 0:00 ` Robert Dewar
1997-10-22 0:00 ` Brian Rogoff
1997-10-22 0:00 ` Jon S Anthony
1997-10-15 0:00 ` Brian Rogoff
1997-10-19 0:00 ` Robert Dewar
1997-10-22 0:00 ` Henry Baker
1997-10-15 0:00 ` Henry Baker [this message]
1997-10-15 0:00 ` Jon S Anthony
1997-10-15 0:00 ` Robert Dewar
1997-10-16 0:00 ` Brian Rogoff
1997-10-17 0:00 ` Henry Baker
1997-10-18 0:00 ` Fergus Henderson
1997-10-18 0:00 ` Brian Rogoff
1997-10-18 0:00 ` Matthew Heaney
1997-10-19 0:00 ` Brian Rogoff
1997-10-21 0:00 ` Robert A Duff
1997-10-22 0:00 ` Robert Dewar
1997-10-22 0:00 ` Brian Rogoff
[not found] ` <dewar.877601826@merv>
1997-10-23 0:00 ` Brian Rogoff
1997-10-23 0:00 ` Henry Baker
1997-10-23 0:00 ` Brian Rogoff
1997-10-19 0:00 ` Fergus Henderson
1997-10-19 0:00 ` Brian Rogoff
1997-10-20 0:00 ` Fergus Henderson
1997-10-20 0:00 ` Henry Baker
1997-10-20 0:00 ` Tucker Taft
1997-10-21 0:00 ` Geert Bosch
1997-10-15 0:00 ` JP Thornley
1997-10-21 0:00 ` Robert A Duff
1997-10-22 0:00 ` Henry Baker
1997-10-21 0:00 ` Matthew Heaney
1997-10-22 0:00 ` Simon Wright
1997-10-23 0:00 ` Henry Baker
1997-10-23 0:00 ` Pat Rogers
1997-10-24 0:00 ` Robert Dewar
1997-10-23 0:00 ` Robert A Duff
1997-10-21 0:00 ` Keith Thompson
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox