On Mon, Jun 13, 2005 at 11:24:07AM +0000, Luke Palmer wrote: > I just have to say that it's really annoying running into > optimizations when I don't want them.
Isn't the whole point of optimisations that you shouldn't have to worry about whether you hit one or not, otherwise the optimisation would seem to be broken. > Back when I wrote an > back-chaining system in perl, I used tied variables in order to > determine when I needed to solve for something. A standard idiom was: > > rule \$var, sub { > $a and $b and $c; > $var = 1; > }; > > And damnit, $c would never be solved for, because it was optimized > away by Perl. I'm not sure that short circuiting operators can be called an optimisation. Aren't they more part of the language definition? I assume Perl 6 isn't doing away with short circuiting operators. > I ran into that problem rather quickly, and I knew a > "no optimizations" would do the trick, if it existed. But no such > luck, so I always had to add an "and 1" on the end. Funny thing is, > that should have been optimized away too, but it wasn't, because Perl > wasn't that good at optimizations. So now I have to know about the > capabilities of the language I'm using in order to program. I'm not sure about the premise, but I agree with the conclusion. > To sum up, optimizations are nice, and it's nice to have optimizations > on by default for PR reasons, but you have to be able to turn them > off. One of the things that has been on the Perl 5 wishlist for a while is a way to turn off the optimisations, but really that would only be for the benefit of people and modules that mess with the op tree. Again, I submit that an optimisation that changes normal behaviour is broken and that, in general, programmers shouldn't need to worry about what optimisations are going on under the covers. -- Paul Johnson - [EMAIL PROTECTED] http://www.pjcj.net