comp.lang.ada
 help / color / mirror / Atom feed
From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Everything You Know Is Wrong
Date: Tue, 29 Dec 2015 16:05:09 -0600
Date: 2015-12-29T16:05:09-06:00	[thread overview]
Message-ID: <n5v02l$6lj$1@loke.gir.dk> (raw)
In-Reply-To: n5uh6q$chh$1@dont-email.me

"G.B." <bauhaus@futureapps.invalid> wrote in message 
news:n5uh6q$chh$1@dont-email.me...
> On 29.12.15 18:36, Dmitry A. Kazakov wrote:
...
>> No, because initialization of T may have side effects.
>
> I assume you meant Yes, impossible. But,
> if F1 and F2 are from a Pure package, is the compiler allowed to
> ignore side effects because the programmer specified Pure? I think
> that follows.


Ada does allow compilers to ignore side-effects for Pure functions, but only 
for successive calls to the same function with the same parameters. Which is 
not enough for your example.

And you're right, it *should* follow, but Pure is broken. For parallel 
execution, we need something stronger - and it's in the hopper today. 
(Algebraic optimizations also need something stronger.) [Pure, for instance, 
allows dereferencing of pointers, which could change by some other path. And 
making it apply to an entire package screws up organization, since most 
packages have a bunch of pure functions and many other, non-pure 
operations.] One of the reasons Ada 2012 has expression functions is that if 
the compiler can see the entire function definition, it can then do these 
sorts of optimizations. (But that's a weak solution for many reasons.)

                                 Randy.



  parent reply	other threads:[~2015-12-29 22:05 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-27  0:37 Everything You Know Is Wrong Jeffrey R. Carter
2015-12-27  7:55 ` J-P. Rosen
2015-12-27 17:37   ` Jeffrey R. Carter
2015-12-27  8:46 ` Dmitry A. Kazakov
2015-12-27 17:36   ` Jeffrey R. Carter
2016-01-04 14:44     ` Alejandro R. Mosteo
2015-12-28  9:57 ` Georg Bauhaus
2015-12-28 11:19   ` Dmitry A. Kazakov
2015-12-28 16:27     ` Nicholas Collin Paul de Gloucester
2015-12-28 17:30       ` Dmitry A. Kazakov
2015-12-28 18:50         ` Nicholas Collin Paul de Gloucester
2015-12-28 20:40           ` Dmitry A. Kazakov
2015-12-29 11:42             ` G.B.
2015-12-29 12:36               ` Dmitry A. Kazakov
2015-12-29 13:50                 ` G.B.
2015-12-29 14:06                   ` J-P. Rosen
2015-12-29 14:16                   ` Dmitry A. Kazakov
2015-12-29 16:31                     ` Dennis Lee Bieber
2015-12-29 17:02                       ` G.B.
2015-12-29 16:57                     ` G.B.
2015-12-29 17:36                       ` Dmitry A. Kazakov
2015-12-29 17:53                         ` G.B.
2015-12-29 18:09                           ` G.B.
2015-12-29 22:05                           ` Randy Brukardt [this message]
2016-01-04 14:51                           ` Alejandro R. Mosteo
2015-12-29 21:58                         ` Randy Brukardt
2015-12-28 17:19 ` Nicholas Collin Paul de Gloucester
2015-12-29 23:37 ` darkestkhan
2016-01-05 13:52 ` brbarkstrom
2016-01-10 14:46 ` Michael Erdmann
2016-02-29 12:14 ` Jacob Sparre Andersen
2016-03-02 14:11   ` vincent.diemunsch
2016-03-02 14:23     ` J-P. Rosen
2016-03-02 15:44       ` Bob Brown
2016-03-02 16:30         ` J-P. Rosen
2016-03-02 16:36           ` Bob Brown
2016-03-02 16:52             ` Bob Brown
2016-03-02 14:32     ` Dmitry A. Kazakov
2016-03-02 15:31       ` vincent.diemunsch
2016-02-29 12:27 ` Jacob Sparre Andersen
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox