Talk:1188: Bonding

Explain xkcd: It's 'cause you're dumb.
(Difference between revisions)
Jump to: navigation, search
Line 102: Line 102:
 
  }
 
  }
 
[[User:Jfresen|Jfresen]] ([[User talk:Jfresen|talk]]) 14:10, 20 March 2013 (UTC)
 
[[User:Jfresen|Jfresen]] ([[User talk:Jfresen|talk]]) 14:10, 20 March 2013 (UTC)
 +
 +
Personally, I think Randal missed a trick with the alt text - "My parent tried playing catch with me and all I got was this lousy stack overflow." That said, Eclipse is driving me nuts at the moment, so I can sympathise!

Revision as of 22:57, 20 March 2013

The aim method results in an infinite loop/stack overflow, note that ball is an exception of type Ball. This results in a logical flow of aim, "throw," "catch," repeat, though this is only logical by word choice, and is nonsensical from a programming perspective.

Pretty sure the code is also intentionally hard to follow. ‎108.48.215.61 (talk) (please sign your comments with ~~~~)


The try/catch parts are just for show, they cancel each other out. The structure is that you have a parent and a child instance (of class P), each has a 'target' pointed to the other. Then calling aim with a ball will call the others aim with the ball, which will call the firsts aim with the ball. Etc etc.

I guess after about a 1000 aims the jvm will throw you out, stating stack overflow, and the bonding game is over. 212.214.117.162 (talk) (please sign your comments with ~~~~)


Nice catch game :) I had to test it:

Exception in thread "main" java.lang.StackOverflowError

in my setup with default VM settings after 6612 iterations (I added a static counter variable). The game could get even more "exciting" by using more than two Ps and adding randomization in who is aimed at. And maybe a miss block ;) (need to hack the compiler and VM for that though...) 134.106.146.36 09:31, 20 March 2013 (UTC)

I don't think any parent will last so long. On the other hand, if you always catch the ball, one iteration doesn't take so long, it's the missing which makes the game long ... -- Hkmaly (talk) 09:56, 20 March 2013 (UTC)


Hmmm "Eclipse: The Codex Persona" is also a d20 gaming system which offers enormous customization of characters. The mention of building character and Eclipse in the same sentence just brought that to the front of my mind. No idea if that has relation to the comic. --50.0.36.182 07:38, 20 March 2013 (UTC)


Did anyone else have a D'AWWWWWW moment when you realized what was happening? I knew it was a pun on throw and catch, but it took till the end for me to realize it was a parent and a child playing catch.74.14.31.164 12:53, 20 March 2013 (UTC)


The one problem with this is that the way the try/catch is set up, they aren't actually throwing to each other. Parent throws the ball, then catches it themselves, then child does the same thing. It's still clever though. Prometheusmmiv (talk) 11:38, 20 March 2013 (UTC)

I thought exactly the same. Here's a modified version where they actually throw to each other:
   class Ball extends Throwable{}
   
   class P{
       P target;
       Ball ballInTow;
       
       P(P target, Ball ball) {
           this.target = target;
           this.ballInTow = ball;
       }    
       void tease() {
           try {
               target.youDontDare();
           }
           catch(Ball b){
               ballInTow = b;
               target.tease();
           }        
       }    
       void youDontDare() throws Ball {
           throw ballInTow;
       }    
       public static void main(String [] args) {
           P parent = new P(null, new Ball());
           P child = new P(parent, null);
           parent.target = child;
           child.tease();
       }
   }

88.9.44.85 15:41, 20 March 2013 (UTC)

I was thinking about how do this correctly, with the throw bubbling up to the other person. And I realized that in order for the recursion to work, there would have to be a double method where the catcher asks (or "teases") the thrower to throw, then catches it in that method. I was going to write up a version like this, but I had to leave for work. But I'm glad that somebody else was thinking like me and was able to write up a correct version :) Prometheusmmiv (talk) 22:06, 20 March 2013 (UTC)

The code is an odd way of making a loop in Java -- creating two objects (of class P, called "parent" and "child") which repeatedly throw and catch another object (of class Ball) between one another. The sole purpose of this is to create the pun referred to in the title: it's a real-life cliché that a parent and child may "bond" by playing catch. 81.31.112.212 07:14, 20 March 2013 (UTC)


Title text talks about "to build character" in the way usually a father tries to help a child to define "attributes or features that make up and distinguish an individual"[1], so I suppose that the "confusing Eclipse" is a pun itself. Perhaps it is a reference to Eclipse novel by Stephenie Meyer (the kind of book that raises a lot of moral dilemma in a young adult). --Andcoz (talk) 12:49, 20 March 2013 (UTC)


I think there is another pun in it: The class "Ball" is a child-class of "Throwable" which makes sense because you can throw a ball. But "Throwable" is also the main exception-class from which the real exception classes like "Exception" or "Error" inherit. --DaB. (talk) 12:50, 20 March 2013 (UTC)


I think it's sad that this family always dies in a most unfortunate crash. Here's an alternate ending in which they try just a little bit harder, so they return home for dinner when they're out because they didn't catch the ball:

class Ball extends Throwable {}
class P{
    P target;
    P(P target) {
        this.target = target;
    }
    void aim (Ball ball) {
        try {
            throw ball;
        }
        catch (Ball B) {
            try {
                target.aim(B);
            }
            catch(Error made) {
                return;
            }
        }
    }
    public static void main(String[] args) {
        P parent = new P(null);
        P child = new P(parent);
        parent.target = child;
        parent.aim(new Ball());
        System.out.println("Dinner's ready!");
    }
}

Jfresen (talk) 14:10, 20 March 2013 (UTC)

Personally, I think Randal missed a trick with the alt text - "My parent tried playing catch with me and all I got was this lousy stack overflow." That said, Eclipse is driving me nuts at the moment, so I can sympathise!

Personal tools
Namespaces

Variants
Actions
Navigation
Tools

It seems you are using noscript, which is stopping our project wonderful ads from working. Explain xkcd uses ads to pay for bandwidth, and we manually approve all our advertisers, and our ads are restricted to unobtrusive images and slow animated GIFs. If you found this site helpful, please consider whitelisting us.

Want to advertise with us, or donate to us with Paypal or Bitcoin?