this post was submitted on 18 May 2024
357 points (97.6% liked)

Programmer Humor

19623 readers
92 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 

Good price.

top 50 comments
sorted by: hot top controversial new old
[–] Transporter_Room_3@startrek.website 54 points 6 months ago (1 children)

You ever have one of those moments when you just put 2 and 2 together, and also that you should have had that realization many years ago?

I just realized what NaN stands for...

This must be what people who get told "you can just wait for the shower water to warm up before hopping in" feel like.

[–] Mesa@programming.dev 3 points 6 months ago

The elephant and rope parable rings its bell of sound morals!

Not so much the realizing what NaN means; that's more relevant to that XKCD which I probably don't need to describe here.

[–] Oka@lemmy.ml 23 points 6 months ago (2 children)

"That makes it free, right?"

[–] xigoi@lemmy.sdf.org 8 points 6 months ago (2 children)

Not only that, it makes your entire purchase free due to NaN arithmetic.

[–] BlueKey@kbin.run 6 points 6 months ago

But as you mention, NaN propagates.
So at checkout, your wallet will become NaN, as the shops money balance. Then it will spread to your bank account and before you realize what happens the whole banking-district is in flames.

[–] FiskFisk33@startrek.website 2 points 6 months ago

no, it costs NaN, now remove NaN from your account...

...oh no

[–] wreckedcarzz@lemmy.world 3 points 6 months ago

Technically it has a pricetag, so...

[–] nickwitha_k@lemmy.sdf.org 20 points 6 months ago (5 children)

0*(NaN)... So does that mean the price IS a number?

[–] rikudou@lemmings.world 26 points 6 months ago (2 children)

Isn't any math operation involving NaNs also a NaN? At least that's my gut feeling.

[–] NegativeInf@lemmy.world 15 points 6 months ago (1 children)

Based on my frequent exploding and vanishing gradients, that would be a yes.

[–] match@pawb.social 6 points 6 months ago

Thanks, relevant username!

[–] nickwitha_k@lemmy.sdf.org 4 points 6 months ago

Good point.

[–] RecluseRamble@lemmy.dbzer0.com 10 points 6 months ago (1 children)

I suppressed most of my former js knowledge but I guess it's a string now.

load more comments (1 replies)
[–] tiredofsametab@kbin.run 8 points 6 months ago (1 children)

In JS, it's just NaN if my browser's console is to be believed. I suspected it would probably be {object} for no clear reason

[–] nickwitha_k@lemmy.sdf.org 7 points 6 months ago (1 children)

for no clear reason

JS That's the reason. The language has an awful type system.

[–] victorz@lemmy.world 2 points 6 months ago (1 children)

I think its type system is "okay", I mean inherently dynamic typing is pretty error-prone. But its type coercion algorithms are bonkers. Also that whole "NaN ≠ NaN" business...

[–] nickwitha_k@lemmy.sdf.org 3 points 6 months ago (1 children)

Also that whole "NaN ≠ NaN" business...

See that's one of the parts that is actually almost in line with other languages. In Go, for example, nil ≠ nil because nil is, by definition, undefined. You can't say whether one thing that you know nothing about is at all like something else that you know nothing about. It really should raise an exception at the attempt to compare NaN though.

[–] victorz@lemmy.world 1 points 6 months ago (1 children)

If nil ≠ nil, how do you compare a variable to the literal?

[–] nickwitha_k@lemmy.sdf.org 1 points 6 months ago (1 children)

You'd first check for nil values, then compare like normal. Extra step, yes, but it keeps you from hitting NPEs through that route.

[–] victorz@lemmy.world 1 points 6 months ago (1 children)

You'd first check for nil values

What does this mean, if not the same as

then compare like normal

?

[–] nickwitha_k@lemmy.sdf.org 1 points 6 months ago (1 children)

IIRC, a nil value can be checked against a literal successfully but not against another nil value. Say you want to check for equality of two vars that could be nil. You just need an extra if statement to ensure that you are not trying to compare nil and nil or nil and a non-nil value (that'll give you a type error or NPE):

var a *string
var b *string

...
if a != nil && b != nil {
  if a == b {
    fmt.Println("Party!")
  } else {
    fmt.Println("Also Party!")
}
[–] victorz@lemmy.world 1 points 6 months ago* (last edited 6 months ago) (1 children)

What I mean is that in JS you can't do NaN != NaN, not even variable != NaN. So you're not saying it's the same in Go, since you can do a != nil?

[–] nickwitha_k@lemmy.sdf.org 1 points 6 months ago* (last edited 6 months ago) (1 children)

Kinda. nil is a weird value in Go, not quite the same as null or None in JS and Python, respectively. A nil value may or may not be typed and it may or may not be comparable to similar or different types. There is logical consistency to where these scenarios can be hit but it is pretty convoluted and much safer, with fewer footguns to check for nil values before comparison.

I'm other words, in Go (nil == nil) || (nil != nil), depending on the underlaying types. One can always check if a variable has a nil value but may not be able to compare variables if one or more have a nil value. Therefore, it is best to first check for nil values to protect against errors that failure to execute comparisons might cause (anything from incorrect outcome to panic).

ETA: Here's some examples

// this is always possible for a variable that may have a nil value. 
a != nil || a == nil

a = nil
b = nil
// This may or may not be valid, depending on the underlying types.
a != b || a == b

// Better practice for safety is to check for nil first
if a != nil && b != nil {
    if a == b {
        fmt.Println("equal")
    } else {
        fmt.Println("not equal")
    }
} else {
    fmt.Println("a and/or b is nil and may not be comparable")
}
[–] victorz@lemmy.world 2 points 6 months ago (1 children)

Thoroughly confusing lol. I think I need to check the spec in order to grasp this. I feel like this has more to do with the typing system rather than nil itself, maybe. I'll see.

But yeah, this is nothing like null or undefined in JS, but more similar to NaN.

Thank you for trying to explain!

[–] nickwitha_k@lemmy.sdf.org 2 points 6 months ago

Yeah... It's weird but I find it useful that it is, in a weird way. Treating it as an uncertainty means that one MUST explicitly check all pointers for nil as part of normal practice. This avoids NPEs.

[–] TheOakTree@beehaw.org 4 points 6 months ago* (last edited 6 months ago)

If 0/0 is NaN, then does that mean 0*NaN = 0*0/0 = 0?

[–] FiskFisk33@startrek.website 2 points 6 months ago

0*NaN = NaN

[–] sbv@sh.itjust.works 20 points 6 months ago (1 children)

dirty onanists spilling their seed

[–] Maalus@lemmy.world 3 points 6 months ago (1 children)

Lennin died, with him died lenninism. Stalin died, with him died stalinism. Grandpa Onan, don't die!

load more comments (1 replies)
[–] lnxtx@feddit.nl 16 points 6 months ago (4 children)
[–] rikudou@lemmings.world 15 points 6 months ago (3 children)

In my language, onanování is masturbating. And onan is a mild insult insinuating that someone wanks a lot.

[–] wanderer@lemmy.world 6 points 6 months ago (2 children)

It's onanism in English. And it's rather stupid to call it that because Onan didn't masturbate, he used the pull out method to avoid getting his sister-in-law pregnant with his brother's kid. (yes, I know that sounds weird but that's the story)

[–] andioop@programming.dev 3 points 6 months ago (1 children)

I figure it is called that because both the pull-out method and masturbation for penis-havers involves spilling your seed somewhere outside of a woman's womb.

[–] wanderer@lemmy.world 2 points 6 months ago (1 children)

Yes, from a superficial viewpoint they are similar. And from a superficial viewpoint shooting a practice target is similar to shooting a person dead. It would be rather stupid to refer to target practice as murder.

[–] andioop@programming.dev 2 points 6 months ago (1 children)

I get your point, but considering that we got the word "Onanism" from the Bible I was thinking about some Christian denominations' views of why God wasn't happy with Onan in the Bible: because he ejaculated without trying to procreate. That is why I thought it was relevant to tie those two things together like that.

[–] wanderer@lemmy.world 3 points 6 months ago (1 children)

Onan's crime was greed not lust. He did not want to provide for Tamar or her potential children.

[–] andioop@programming.dev 2 points 6 months ago

According to Wikipedia, Biblical scholars essentially agree with you, to the point

Bible scholars even maintain that the Bible does not claim that masturbation would be sinful.

which is pretty cool especially given my prior belief that most people agreed it was about lust. Wikipedia does also say that some Christian denominations have interpreted the sin to be as lust, though.

And Catholicism, at least, still doesn't like the ejaculation without procreation:

Since, therefore, the conjugal act is destined primarily by nature for the begetting of children, those who in exercising it deliberately frustrate its natural power and purpose sin against nature and commit a deed which is shameful and intrinsically vicious.

Small wonder, therefore, if Holy Writ bears witness that the Divine Majesty regards with greatest detestation this horrible crime and at times has punished it with death. As St. Augustine notes, "Intercourse even with one's legitimate wife is unlawful and wicked where the conception of the offspring is prevented. Onan, the son of Juda, did this and the Lord killed him for it."

(number 54 and 55 in a Pope Pius XI encyclical)

(I never thought I'd be discussing religion on programming.dev lol)

load more comments (1 replies)
[–] kamenlady@lemmy.world 4 points 6 months ago (1 children)
[–] user224@lemmy.sdf.org 4 points 6 months ago (1 children)
[–] ChaoticNeutralCzech@feddit.de 3 points 6 months ago

Onanizál in Hungarian.

Central European gang rise up!

[–] Muscar@discuss.online 1 points 6 months ago

Onani in Swedish, which this image is from.

[–] psmgx@lemmy.world 9 points 6 months ago
[–] blackbrook@mander.xyz 3 points 6 months ago

...spilled his arithmetic overflow on the ground.

load more comments (1 replies)
[–] anakin78z@lemmy.world 9 points 6 months ago (1 children)

I like how the code adds a 0 at the start.

[–] EarMaster@lemmy.world 14 points 6 months ago

The code probably checks if the following number is greater than 10 (which fails for NaN) and otherwise adds a 0 in front.

[–] SuperIce@lemmy.world 5 points 6 months ago

It's priceless

[–] jlh@lemmy.jlh.name 4 points 6 months ago
[–] Manzas@lemdro.id 3 points 5 months ago
[–] Laylong@programming.dev 3 points 6 months ago

cost = "arm" + "leg";

[–] Swedneck@discuss.tchncs.de 2 points 6 months ago

lidl quality

load more comments
view more: next ›