Hacker News new | past | comments | ask | show | jobs | submit login
Divine By Zero (thedailywtf.com)
56 points by MartinMoi on June 7, 2011 | hide | past | favorite | 22 comments

I was confused about the "php" == 0, until I found http://php.net/manual/en/types.comparisons.php. So "php" == 0 is true and "php" == true is true, but 0 == true is false. Yikes! It seems like comparisons in PHP are as bad as they are in JS.

I have a hard time believing this is real. Does WTF do any verification?

Those PHP "features" are the real WTF.

Is there an opposite website to The Daily WTF - a collection of short, elegant and clever code?

http://rosettacode.org is a wiki with concise algorithms/solutions/snippets in as many languages as you can think of. The algorithms listed range from mundane to clever to anywhere in between. If you haven't already been there it's definitely worth a look.

There is a book called Beautiful Code by O'Rielly http://oreilly.com/catalog/9780596510046

Thank you for your answers. To add something myself, the book Programming Pearls contains exactly this - short, elegant solutions, plus some extra food for thought and exercises.


Don't you think this is made up? I can't believe someone actually wrote that.

Oh man, this gave me a flashback to 4 years spent working for a large newspaper company trying to keep the affiliate papers' "developers" in check. Needless to say I don't miss that job at all.

After spending a couple years specializing with Drupal I'd almost forgotten how ridiculous it can get out in the trenches.

Lets say for a moment that this isn't made up. The questions that struck me immediately are as follows:

1. What was the motivation for creating this function? Was it (hopefully) to show off how "smart" he was? Was the company he worked for doing any kind of calculations related to (dear god no) financial or medical data that he thought he could improve?

2. How does anyone in this world escape grade school without knowing that one cannot divide by zero?

3. Someone thought dividing by zero should be a recoverable error?

Regarding #3: Division by zero should be a recoverable error in many programming situations. That's part of the beauty of NaN as defined by the IEEE standard for floating point numbers. It's quite a handy thing to be able to just do the operation and sort out the NaNs afterward. Suppose, for example, that you want to calculate the pixel-wise percent change in intensity between two grayscale images A and B. In a language with good built-in support for matrix datatypes, such as MATLAB, the ability to handle division by zero gracefully can quite often simplify the code.

result = (A-B)./A*100;

Now I can just use the isfinite function to produce a matrix of logical values that tells me which pixel locations have valid values (simultaneously handling the case of numerical overflow). Granted, this doesn't do much to simplify the code above. We could have just checked beforehand to find the pixels of A that had zero values. However, if you have a complicated expression involving multiple divisions, logarithms, or other functions that are undefined for some portion of the real numbers, treating these situations as "recoverable" in some sense allows you to write cleaner, more readable code if your implementation language permits you to just do the operation and check for NaN values (+Inf and -Inf too) afterward.

I've had situations where I'm calculating a ratio or something for each member of a result set, and needed a "safe_divide" function. Mine was much less complex than this one, but returned 0 if the denominator was 0.

As much as I love TDWTF I have to say I'm disappointed to see a submission from there get 46 upvotes on the front page. Great story though

Yeah, agreed. The whole premise of the function is insane but I'm pretty sure the story is a lie because I just can't see how anybody would write the code this way unless they were intentionally trying to obfuscate code for humour/annoyance.

Maybe they're hoping that someone can explain what this person was thinking?

I doubt it, but I guess it's at least possible that someone here works with the criminally insane.

The comments on this page are better than the code. Ok no they are not.

I actually LOL'd at geordish's, though.

I love the flowchart. "Ah, now it all makes sense!" I even printed it on the wall at my work right next to Ballmer Peak strip.

Can someone explain why he does two more if checks after he's set the denominator to "php"?

Can't tell if you're being sarcastic or not. :)

Aside from the whole function being asinine the only way to know "why" would be to ask him. The answer would probably also qualify as asinine.

He's an idiot.

Don't mean to be a buzzkill here, but I don't think anyone with an ounce of a brain will find this funny, which I believe was the original intent.

Daily WTF is all about cringe-worthy programming stories. If you find them funny, so be it... But they're almost all cringe-worthy.

Applications are open for YC Winter 2022

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact