251
submitted 21 hours ago by hoch@lemmy.world to c/programmerhumor@lemmy.ml
top 24 comments
sorted by: hot top controversial new old
[-] davel@lemmy.ml 8 points 14 hours ago
[-] hddsx@lemmy.ca 27 points 21 hours ago
[-] Axolotl_cpp@feddit.it 9 points 20 hours ago

Musk forgot a thing: programmers can learn how to make code longer than it should be

[-] Witchfire@lemmy.world 4 points 21 hours ago

...or my manager

[-] ferric_carcinization@lemmy.ml 17 points 20 hours ago* (last edited 18 hours ago)

The compiler should be able to optimize all of them to the same machine code.

  1. This is already good.
  2. Easily optimized by constant folding.
  3. ~~This one depends on the semantics of signed underflow, so it may not do what you want.~~
  4. ~~The loop can only exit if x==10, so as long as the nextInt() method doesn't have side effects, the loop should be eliminated. But, again, language semantics can affect this.~~

Edit: Very wrong for 3 & 4, see replies.

[-] ryannathans@aussie.zone 18 points 19 hours ago

I'd be shocked if 4 got optimised out

[-] Mio@feddit.nu 11 points 18 hours ago
  1. It is used to warm up the house.
[-] MangoCats@feddit.it 3 points 14 hours ago

4 is used for non-deterministic delay - - - is Random.nextInt() also cryptographically secure?

[-] ferric_carcinization@lemmy.ml 2 points 18 hours ago

I feel like an idiot. Also, in the "Good" example, no underflow occurs. i goes from 0 to -10, and x is assigned to -i every loop.

It might still be possible to optimize away the random number example, if the random function were made a magic language item, but it would not be even remotely close to being worth the effort.

[-] MangoCats@feddit.it 2 points 14 hours ago

The question the optimizer can't really answer is: will Random.nextInt() ever return 10? If that's a 64 bit integer it could be a LOOOOOONG time before 10 ever shows up.

[-] ferric_carcinization@lemmy.ml 1 points 6 hours ago

If it were a magic lang item, you could treat the resulting value in a special way. Then, you could create an optimization pass for this situation: if a variable is assigned random in a loop and the loop can only be exited with a certain value, the compiler can coerce the magic rand value to it.

[-] ryannathans@aussie.zone 1 points 14 hours ago

Ah yes the halting problem

[-] MimicJar@lemmy.world 6 points 18 hours ago

For #4 if the Random instance weren't "new", then calling the nextInt() function would definitely have side effects, since the next integer would pull one away from the random stack.

However unlike the first three which will run within a consistent amount of time, #4 will take an unknown amount of time to run, so you can't just collapse it and eliminate the loop.

For example a very simple race game where a participant moves a random number of steps each turn, we may want to time how long that race takes. We can't just say that they will reach the end immediately. In fact technically we don't know that they will ever finish the race... But that's the halting problem and a whole other issue.

[-] ferric_carcinization@lemmy.ml 3 points 18 hours ago

I don't know what I was thinking.

But, if you borrow C's semantics, you are allowed to "optimize" away side-effect-less loops, even if they would never terminate. But that would require the random method to be pure.

[-] pineapple@lemmy.ml 2 points 18 hours ago

Still a mess to read though, anyone revewing the code will be like wtf?

[-] mcv@lemmy.zip 4 points 16 hours ago

What the hell kind of magic number is this? Define that stuff in an environment variable, and write a singleton to make the value transparently available where you need it.

[-] anton@lemmy.blahaj.zone 1 points 8 hours ago

Exactly, you never know when you want to change the base for printing out from under someone.

[-] billwashere@lemmy.world 7 points 20 hours ago

And now this will be in someone’s vibe coded project…

[-] Tolookah@discuss.tchncs.de 6 points 21 hours ago

No

i= 0;

do{ i++; } while (10 != *(U32 *) i );

?

Gotta make it hard to read as well

[-] anton@lemmy.blahaj.zone 3 points 16 hours ago

Segmentation fault, you forgot to take the reference and derefenced a null pointer.

[-] Tolookah@discuss.tchncs.de 1 points 15 hours ago

i is my address. The bigger problem is that I should have increased i by sizeof(U32)

(This works on bare metal, mostly, not on an os)

[-] sepi@piefed.social 6 points 21 hours ago

Genius MIT Hacker

[-] Buffalox@lemmy.world 3 points 20 hours ago

That actually made me laugh out loud. 👍 🤣

[-] sp3ctr4l@lemmy.dbzer0.com 2 points 20 hours ago

gotta somehow also make it involve matrix transforms, maybe use quaternions, and randomly compare a random array of them, until they result they result in a 10 degree rotation in one realspace vector.

this post was submitted on 13 Dec 2025
251 points (97.7% liked)

Programmer Humor

39453 readers
315 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 6 years ago
MODERATORS