in reply to Re^6: Memory leak!
in thread Memory leak!

You've showed that Deparse considers for (;;) {} and while (1) {} equivalent (which means there's a strong chance that they are very similar). This is consistent with while (1) {} getting optimised to for (;;) {}, so it doesn't support your contradiction.

You've showed that Deparse considers while (1) {} to be more readable than for (;;) {} on average. This doesn't support your contradiction.

So you didn't show that while (1) {} doesn't get optimised to for (;;) {}. Easy to prove that it does, though. Note the lack of any condition in the following:

>perl -MO=Concise,-exec -e"while (1) {}" 1 <0> enter 2 <;> nextstate(main 3 -e:1) v:{ 3 <{> enterloop(next->5 last->6 redo->4) v 4 <0> stub v 5 <0> unstack v -e syntax OK

For comparison,

>perl -MO=Concise,-exec -e"for (;;) {}" 1 <0> enter 2 <;> nextstate(main 3 -e:1) v:{ 3 <{> enterloop(next->5 last->6 redo->4) v 4 <0> stub v 5 <0> unstack v -e syntax OK

Replies are listed 'Best First'.
Re^8: Memory leak! (yawn)
by tye (Sage) on Dec 13, 2011 at 05:24 UTC

    Not to interrupt our regularly scheduled disharmonious bisecting of the rabbit, but perhaps while(1) gets optimized to while():

    % perl -MO=Deparse -e"while() { print }" while (1) { print $_; } -e syntax OK % diff <(perl -MO=Concise -e'while($x){print}') \ <(perl -MO=Concise -e'for(;$x;){print}') %

    Carry on. (Like I could stop either of you.)

    - tye        

      I must have mistyped it, cause I had tried that and got an error. Thanks.
Re^8: Memory leak!
by BrowserUk (Patriarch) on Dec 13, 2011 at 05:35 UTC

    Gah! You really are infuriating when you go into your pointless, my-view-of-the-world-is-the-only-view defensive mode.

    But you didn't show that while (1) {} doesn't get optimised to for (;;) {}. Easy to prove that it does, though. Note the lack of any condition in the following: ... For comparison.

    So, the way you choose to view this is that for(;;) {} gets parsed as while(1){} (as demonstrated); but then, because the generated condition is a constant, it get "optimised" back to a special form of for again.

    That couldn't possibly be simply an unconditional loop.

    You really do live in a world of your own making don't you. (I'm done.)


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    The start of some sanity?

      Who are you talking to? I didn't any of those things!

      I never said for(;;) {} gets parsed as while(1){}. That's clearly false; the syntax rules that govern them are nothing alike.

      I didn't mention any generated condition. I didn't even use Deparse. That was you.

      I never said it wasn't an unconditional loop. Quite the opposite, my argument has been that it is an unconditional loop, so it couldn't possibly be a while loop. (Which turns out, isn't true.) You're the one who claimed that for(;;) magically generates a condition.

        You're the one who claimed that for(;;) magically generates a condition.

        Not "claimed" DE-MON-STRA-TED!

        c:\>perl -MO=Deparse -e"for(;;){}" while (1) { (); } -e syntax OK
        I never said ...

        NOBODY SAID YOU SAID ....

        It's called "a conversation". You assume that the other party remembers previous bits of the same conversation, without having to re qualify them. A concept you are apparently entirely incapable of grasping.

        (Which turns out, isn't true.)

        And yet, you're still defending your 100% definitive, wrong assertions. As always.


        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        The start of some sanity?