Re: Bug #1452 Updated: $i = $i++ fails
| From: | Colin Putney | Date: | Wed, 26 May 1999 04:00:11 +0000 |
| Subject: | Re: Bug #1452 Updated: $i = $i++ fails | ||
| References: | 1 | Groups: | php.dev |
| Request: | Send a blank email to php-dev+get-6007@lists.php.net to get a copy of this message | ||
Jim Winstead wrote:
> You're making the strong assertions that the behavior you describe
> is "expected" and "intuitive". The construct we're talking about
> doesn't lead to bugs because of how PHP evaluates it, it IS a bug.
Well, it's only a bug because of PHP's current behaviour. Don't get me
wrong. It's clearly a bogus construct, and I'd be ashamed if it ever
cropped up in code I'd written. But there's a difference between
bad/inefficient/redundant code and code with syntax or logic errors. That's
what makes Perl haiku and obfuscated C contests possible.
The code posted with the original bug report had a logic error in it,
causing an infinite loop. If PHP behaved differently, that same code would
be merely inefficient and slightly embarrassing.
I suppose I am making fairly strong assertions about what is "intuitive" or
"expected." But I also think they're true. The guy that posted the bug in
the first place wasn't totally out to lunch, despite his exposure to
questionable code.
> I see no reason to pin down a defined behavior since if anything
> is obvious, it is that the construct is completely bogus, and to
> define its behavior limits future opportunities for possible code
> optimization.
Now "limits future opportunities for possible code optimization" would be
one of the good reasons I was looking for.
> Of course, Zeev is the one you have to convince, not me. :)
Believe it or not, I'm not actually trying to convince anyone. To some
extent, I'm playing devils advocate here. It *is* a bogus construct, and
maybe newbies who make that error should get burned by it right away, so
they don't carry a bad habit into the C world.
But Zeev framed the question as an implementation decision which is left
open by the C spec. Though he didn't say so specifically, I gather from his
comments that a decision had been made during the implementation of PHP. I
figure there's a fairly good argument for the opposite decision, and I'm
curious as to the rational behind the decision that was made.
I realize this is much ado about nothing and I'm on slightly thin ice here
as I've never written a compiler or even contributed to the PHP source, but
hey, this isn't your usual flame bait...
---------------------------------------------------------
Colin Putney colin@whistler.net
Bit Flinger (604) 932-0606 x21
Whistler Networks http://www.whistler.net/
--
PHP Development Mailing List http://www.php.net/
To unsubscribe send an empty message to php-dev-unsubscribe@lists.php.net
For help: php-dev-help@lists.php.net