this post was submitted on 04 Feb 2025
184 points (94.2% liked)

Programmer Humor

27945 readers
158 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 2 years ago
MODERATORS
 

all 31 comments
sorted by: hot top controversial new old
[–] marcos@lemmy.world 41 points 10 months ago* (last edited 10 months ago) (2 children)
int main() {
    useless:
    int x = 10;
    if (1) {
        goto useless;
    }
}
[–] xmunk@sh.itjust.works 27 points 10 months ago

Yea, I saw C style and was disappointed when it didn't abuse gotos.

[–] Minizarbi@jlai.lu 7 points 10 months ago

This is the real way!

[–] csm10495@sh.itjust.works 37 points 10 months ago (1 children)

Through the magic of make, you can write code that changes if statements to while loops then changes it back after compilation passes or fails.

I only give good advice.

[–] LeFrog@discuss.tchncs.de 25 points 10 months ago (2 children)
[–] aMockTie@lemmy.world 46 points 10 months ago (1 children)

Statements that start with # in C/C++ are known as preprocessor directives, that is, they are executed before compilation begins. OP has used a #define which will replace any instance of A (IF(x)) with B (while (x)) in the code.

So the IF statement is really just a while statement.

[–] Kacarott@aussie.zone 17 points 10 months ago (3 children)

But what is it in reference to? What's the "infamous if loop"?

[–] aMockTie@lemmy.world 51 points 10 months ago (2 children)

Ah, I believe that would be this image from a college course.

[–] ulterno@programming.dev 10 points 10 months ago

I always wondered why I always had a hard time making developers not call "if" a "loop".
Turns out it was on their tests.

Glad I didn't read my college material, or I would have lost faith in my college professors.

[–] NigelFrobisher@aussie.zone 4 points 10 months ago

It just occurred to that in Yorkshire dialect a while loop would actually be an until loop. Directives to the rescue!

[–] kyub@discuss.tchncs.de 12 points 10 months ago

"Infamous" just refers to newbies who sometimes call if statements "if loops". I've heard this quite a bit.

[–] Reil@beehaw.org 5 points 10 months ago* (last edited 10 months ago) (1 children)

They used a macro to make 'IF' (which is distinctly not 'if') map to 'while'. So it's really a while(1) loop, which will repeat forever, or until the program is terminated, whichever comes first.

Someone's just being silly.

[–] LeFrog@discuss.tchncs.de 2 points 10 months ago (1 children)

Thx!

'IF' (which is distinctly not 'if')

Is this something needed "for the meme" or something with this macro or C/C++? Or why the case-sensitivity here? I only know languages like Java, Python, JS. Unfortunately the ancient tongue is not known to me.

[–] Reil@beehaw.org 1 points 10 months ago

It's not really that important to the joke, since I'm pretty sure you can also replace keywords like 'if' with the preprocessor. It's just that preprocessor macros are typically (style, not syntax) ALL_CAPS_WITH_UNDERSCORES.

It's just another clue that that block isn't actually an if-block, since C is case sensitive and 'IF' wouldn't actually work.

[–] wise_pancake@lemmy.ca 13 points 10 months ago (2 children)

Did you know python for loops have an else clause?

Did you also know it runs after the loop iterator is done, and not when there was never anything to iterate over at all?

https://docs.python.org/3/reference/compound_stmts.html#for

[–] qaz@lemmy.world 7 points 10 months ago

That actually seemed quite useful at first.

[–] Vigge93@lemmy.world 0 points 10 months ago (1 children)

Your point about it not running when there is nothing to iterate over is incorrect. The else-statement runs when the iterator is exhausted; if the iterator empty, it is exhausted immediately and the else-statement is executed.

[–] lugal@sopuli.xyz 3 points 10 months ago (1 children)

I think it's intended as "not only when" because it would make sense to have an "if empty" case but the way it is, it doesn't make sense

[–] Vigge93@lemmy.world 4 points 10 months ago* (last edited 10 months ago) (2 children)

I think it does make sense, it's a "did this loop exit naturally? If so, do x". This makes a lot of sense if you, for example, have a loop that checks a condition and breaks if that condition is met, e.g. finding the next item in a list. This allows for the else statement to set some default value to indicate that no match was found.

Imo, the feature can be very useful under certain circumstances, but the syntax is very confusing, and thus it's almost never a good idea to actually use it in code, since it decreases readability a lot for people not intimately familiar with the language.

Edit: Now, this is just guessing, but what I assume happens under the hood is that the else statement is executed when the StopIteration exception is recieved, which happens when next() is called on an exhausted iterator (either empty or fully consumed)

[–] Saleh@feddit.org 1 points 10 months ago* (last edited 10 months ago)

Couldn't you just handle this with:


breakflag = False

for x in iterator:

     if breakcondition(x):
            breakflag = True
            break  
     dostuff()
[–] lugal@sopuli.xyz 1 points 10 months ago

Thinking about it, it totally makes sense and has in inherent logic, even tho it's not intuitive

[–] brian@programming.dev 8 points 10 months ago (1 children)

found the following in our codebase the other day.

while(booleanFlag)
    return;

thhere wasn't more in the loop body, that was it. the loop conditional does exist and it can hurt you.

[–] rikudou@lemmings.world 4 points 10 months ago (1 children)

Can it hurt you, though? My guess would be every sane compiler and interpreter optimizes this.

[–] brian@programming.dev 3 points 10 months ago

the codebase readability certainly suffers, and this isn't the only case of shenanigans like this

[–] TheReturnOfPEB@reddthat.com 6 points 10 months ago

int* ihadatonepointforgottenaboutpoundefinesyoubastard {};

[–] tamlyn@lemmy.zip 6 points 10 months ago

i have a colleague always saying if loop (in our language). I'm a bit to shy to tell him his mistakes... People easily hate me but i would like to...

[–] 7uWqKj@lemmy.world 6 points 10 months ago

#define if while // 🤪

[–] cupcakezealot@lemmy.blahaj.zone 4 points 10 months ago

10 print "All Work, No Play"

20 goto 10

30 end

[–] raldone01@lemmy.world 2 points 10 months ago* (last edited 10 months ago)

I once went to the computer of a class mate and opened stdio.h and added #define while(x) if(x). He was so confused. 🤣